From dfcff0468ce709f66eca2ee90e0c81586298867e Mon Sep 17 00:00:00 2001 From: Chinsky Date: Tue, 24 Jun 2014 15:14:17 +0400 Subject: [PATCH 001/168] Allows monkeys to be scooped up too. --- code/modules/mob/holder.dm | 25 ++++++++++++++++++ .../mob/living/carbon/monkey/monkey.dm | 5 ++++ icons/mob/head.dmi | Bin 110003 -> 113462 bytes icons/mob/items_lefthand.dmi | Bin 150229 -> 153332 bytes icons/mob/items_righthand.dmi | Bin 151634 -> 154739 bytes 5 files changed, 30 insertions(+) diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index d65679d947..98792a6af3 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -72,4 +72,29 @@ name = "cat" desc = "It's a cat. Meow." icon_state = "cat" + origin_tech = null + +/obj/item/weapon/holder/monkey + name = "monkey" + desc = "It's a monkey. Ook." + icon_state = "cat" + origin_tech = null + icon = 'icons/mob/monkey.dmi' + icon_state = "monkey1" + +/obj/item/weapon/holder/monkey/farwa + name = "farwa" + desc = "It's a farwa." + icon_state = "tajkey1" + +/obj/item/weapon/holder/monkey/stok + name = "stok" + desc = "It's a stok. stok." + icon_state = "stokkey1" + origin_tech = null + +/obj/item/weapon/holder/monkey/neaera + name = "neaera" + desc = "It's a neaera." + icon_state = "skrellkey1" origin_tech = null \ No newline at end of file diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 4eb294c8a4..6f08ec4c98 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -15,6 +15,7 @@ var/list/uni_append = list(0x12C,0x4E2) // Same as above for DNA2. var/update_muts = 1 // Monkey gene must be set at start. var/alien = 0 //Used for reagent metabolism. + holder_type = /obj/item/weapon/holder/monkey /mob/living/carbon/monkey/tajara name = "farwa" @@ -22,6 +23,7 @@ speak_emote = list("mews") icon_state = "tajkey1" uni_append = list(0x0A0,0xE00) // 0A0E00 + holder_type = /obj/item/weapon/holder/monkey/farwa /mob/living/carbon/monkey/skrell name = "neaera" @@ -29,6 +31,7 @@ speak_emote = list("squicks") icon_state = "skrellkey1" uni_append = list(0x01C,0xC92) // 01CC92 + holder_type = /obj/item/weapon/holder/monkey/neaera /mob/living/carbon/monkey/unathi name = "stok" @@ -36,6 +39,7 @@ speak_emote = list("hisses") icon_state = "stokkey1" uni_append = list(0x044,0xC5D) // 044C5D + holder_type = /obj/item/weapon/holder/monkey/stok /mob/living/carbon/monkey/New() var/datum/reagents/R = new/datum/reagents(1000) @@ -244,6 +248,7 @@ if (M.a_intent == "help") help_shake_act(M) + get_scooped(M) else if (M.a_intent == "hurt") if ((prob(75) && health > 0)) diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index a36dcfbbdca4f317f0df7575f2112288618f248c..0fdfa34f46abc04d7d5d8d66df8aa930060751de 100644 GIT binary patch delta 16063 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 delta 12724 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 bbFlLlryk#mZwK_h8GxePE7|fFCV~GCaxz|= diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index b55222ded06f9b105d93865392d7ece631b0cf64..3f6bcb381c462a30fce5f5035a9b1b780322fda8 100644 GIT binary patch delta 16585 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 delta 13267 zcmYj%1z1$y^Y>Cx3MwMfC?H5mNrRY#gmj~HFWtKrQ9!9Bq`SMj5u`g;azQ$mTpHes z-{1dv-n-8}_wJdwXJ$TU&YUx|=dh4)Jd!Y!(U@q@Lsir1jfta?gN2=w1=JP-aZ5H>S7Ev?fy^vj&owR5~w-1kP4KT z?G76JK%qezGVp_%T7WsU0#|17oN2($ca>Rr;c2L{2CKYHLcgVr>VVj>J?hp&Sk#!+ zv(m=Srd}ywt3!ecS&P;nrlYzS_V+T75%CWlYcys^iRgEJG)2GCRTT5eOzgXT=iu8BO=kR0)L$Q^KW#B;k>a4h zR$arL$;;q%Y?XlqO2}CT+Uid+F)k000rOA%q=ny5zV=KG^X7gZ7d;#^?d6>(sJvs^ zVL1EL_$nWQvX4(=t)@GiZ_$pPtkxD*x!-IPmaBV z#J+MRce)r3ES`9KPgVJL?(t!t0Y2VSP1j4x=bB%FEQ3F}KtJH|4SYmaCDr9v`6yg@ z_eo(DdX9uD*YCi*o$rdSOx+qv$ac5Q=7L48QD}wwK{UPBav|!e6x(C0dQF?qlt0WO zKkr6VIJT5lRmZHoopL3di7$GYMy$?S{{?H>2=t;aG}Xi(yx)B>3w`%16i_woXXs1` zmB)hrg2IWFsx|la$#3A`rV19e5vL68Y(8MNGl?w2gX+x-rT@{*v`!r0%dC2W7s7WN zzFdirCfpaD)UD4!EM+yj%mX&-pUIaVp)ThP41O%NqR?d8uX8H`onw_B|3;dYY`aNw zIYwG3_v#X`jvZ%t@T3F6=_X7@tg~cN3y%8ZVoHWu;}^>+O+RN>)V3W~FbjF4swZvE za+S-<_m&Lr({&qY?l1R;*PquPc;6pRAP*W+FCl3eW;~^TKj>n@*~%9=L~D~~xPW%G zVxXhR{tMC5?-u*iLBq1fM8ip7J+>ywP&;_v)tZ2Jq|R*fIkz2v%lKl4TCe2<^Hl7m z%?qYihsXevPxfsCcu z$mB;|?=#6kYep92LuZ66i_gnO5~PCZLyJHtg?SQ|Tn$dW2FzK-_EROKW@?eHA>mc6}928yKBA4S9_CM~1MN@Y^rl zDp{2YbK3E$NHV%@1GQ8r$q9B6f}$}ei0SHx=whI_*TA^8Z)p&H|HPK(lR(Lit(2dA zLJ;wzWI8Gr>C}v9x;1#Mv~b{N%ULMle7RX+Y~a1;zD#ml06{mIQrM|)WcvFKTQH6s zre{^f+<)EpW>6LTdw<|C9p%*^LRVhMcwp;vC^hl8yO;b>!@bt$ zQJWk%B+Zmj6`iT72zxLiiCFyqxmOh>FZGztW+&2Bn*WY1-uGdMHq=i%EWV|WNf}sJO)|v&8ybl#{AN*4k>|-? z(Owbp2fFrEm`^F;_X%VDKN$nF1uf@EQbDPN35+G%>58-S4T}0DXW7KK8TyJ#S?Gox z6Kd{xt8fO}zqqIAs+@c;7>hoNZBvjLx0v1kWQj#=%U55}rPRQaofMuurl8_EDjK;&VyVh zw%v>zvt*o+yAm)e>j2^OObxsMEX$X+3qQoEhvHl#AIq4U;aU)KxgPfY|7xTG-ozR%2=Bmhtc6^zMIu z3QI9Q$7gj(BTWunmzWwP607Om%9EKi8u%LZ$_Fo+&(r?FBy((ghS@)NN(D2tjX+PT;3*1IJlURR*33wI;0q2fMcgu$Rm>=$&M{jcUH@@bu^Ku zUccUdrHpR+-1U3wl*n#(-P(5=2Xo+s^~jvopf25Rw)A7rHjQDLkMZk}+Z#}&q#9ik zC!p@~dTuyY)7*yC4)`e`+3@;G8PTf|5bIIpa&Mmcut$4QfghXl>Mr5;;Sjt^o9U8> ze#=B)?`|#aFBZSdlmdyJ9*T^3#_DYlw+Q z|0~Q~lFbe8+Ud@6v%%}rt5JarDRVA?RAa|n!l<`g0>8?-GM{QbtR4H-`-H-{rm5~; zSQ{38*E|IGL=u8ENBZ&`8s~l&kKwJNK4l|QZ(uRAqYu(17aWTPkEY^d+~N|z#(Cts z|2Eow1z!RMYrgfVQOOiXll$i+WP;e_#kV8u%#Oi?q3k>Otfmf=dRT7?uNEjfD(#G^ z9}xd={+Q|>QHH)>|1A9VN>y0$uF#9SVV12aMOBO~%=U@74CCL(9EdN!YcqU(m#H8> z!HEHgFoUwDUARWZvX-?B2hSp&rZK$B)k}MHJJBy&`vJWDVtX~L3(YFb0Ob9Uy=&cS z{d67EMaoQ>^~XYzd%N{l%J6IPpI@vqnbqehSQ;MV$5F&86rW7T^(@t6#t|aN#`;5x zq}e^cN2XoE>m}dij0jA@=7X#;WEa#`bs!H1%u@9G@H$ ze)3r+A>^64_c-)BYlTnsUh5y93HAGLXbRKKHr#Lr`i84sn~4Mryv@T&q~t1|I?LNO zS7RGdN$~Md;vi5a8GH1DkO22B!;*qexOd3_eLTySwZmleYL%-5RNvhfb}nvpiFrzh zGBeqBN5Uq{*gV^_b~vZI0A0uD6>Rn8pK8+MY{W6=<&MF~&*iA1+OxPJIO;Rh<9u#m z2uj^hzpQ8A!E-H&XL|jsjjiEmMd`U0B4ai48B5Z{#x-0e-GABq6lk1U|C5jx(X)2X z$94qmAD^ZpA-^WD_9j?0S{i|UndJe2q&O-Rcae+`p;OicauBzGJG5!~U(ePQb@XkW zDR-wj2B~$_O(f5I4XO${=1$zbrU@$5xVsW!961tpT%WYI&3(ba&nqZU#la`BK5${# zzzZWg2#FfKRQN`nUzT1-3BT6tOx(&^R<+VrsGJiO%UNz~8sK)BKhGw0@h!?BfR%B- zrzQ|pV~HGQ#7!gvehDvluHIk2$3Bk*kyZwEGxc>{b?8(O5ckMnXH2j5TM8OaZSx!( z8_QA2j#H~L(}~`>bMd+PUQQ#+spJ@vx#GTP*_<=|t#i~xmK?X>j{)I_3df@NUUN}d z^756ds;T8Bi8rT_u}DP2gp*#@6ng02>Mf;m7*<;R-C!gPBt=}h_<*W2TDi2BG;(67 zXNvxe>7i}ik##E@R(%bdO+T6XVIwH?H6Jv_^c`uhMQy|N{O7{y6a79Thdc$g^!Jdz z9Z1K?2lhj^L3)mNxUqBe3F2@Uk4Vp*Z>-AmZ2 zCY#ZWq}3WN{e=w~@-4-tgLpHo90pjcyWzatXJu#K-gQVj^5GCW#8}RNkbkr-=m{wx zgh1|h61hSCcj<<%9RJ@lMEWi6?*IL$@rKZW&k^XZI{OH02i68U;% zgnEuQ-03v*qJ|DCIZ*T;hxd{cgtWyu(RV19hW9#Wg(Y=xlS0Q{{Az1)3lRBFm^2-z zo-R_0ATjUp!5MvH_|S%H{H0s{jh^5YjsxnV@s|2kwqe)B)|7!vI8oe{SgHtSaoYnD z$}y)Y#FAIMK0HVIkNM93FUuKod`1+7e2glSQZmH*}s?FLr9b&u2P&3H+Fr61%XVx z24PSu_3OyJ%ge1-HnyZI*aMV~qpRo(4Xl@S1!d);IktJPrC`f~#WB02&7EWx!$yJF zf?2Bf4_8s7-TQHYf*cC}b=?Yz1p^BE6L0+a0JqoXqQ(lQoguVx8)s4uhie}TwJT-w z)eA?4)8AjxDX<69=@@4zCMWTKG3O=PKS28%yZ8GR!>`Z&0%{*&q$TL+zQ>MY`Bz4f zTP&=hXZN+*o3;_t9O}PtAl|BDvuH3p$m>00BB^%jR#wr`&o}9fuD##Nq0`i-{T%qB zRcD;*eiG)dcgMpgrLImp8GdHbi)u8*PYk3p7|TQY;`y2?%+bh<9IlU6O0VLlg&}?% z|0x}_0>=Yj%NYdTAKTP!?H+LZ>RW~XjE>H3^?6l(Ha@PdgV;MiRpe(1c~L=1CD^vt zMfRY3iZO+6`l^QWnZY!OtYyQadW}vH+kq$EimyaXDlf9V%5F<~KeoGnCv}#nxN&~` zhd)E&{P!6uV+?IMt@~9Jw~p=pt<_51f!^NHeG{O!{{rto90vQ4ETQMoaO8Y?da7M% z8M)FIn;sq>9`%WT<_Rb7-mO%O?5a8)^t>s|Xtw0@Ycc;I9SyIm=|+P`oymX<^$Tky zef=c$Lha0p3$OL@gU#xyXZJSf94Uo9k{*XSPvzs7WZ2l)913im zohxsV(iJo`G^iupx4Xg^SM{Q!qmlQ&73nu>SGI8t>&RUnHJo#JaA5AbfFATgUtd4I zGuW)ab~9iQ;6HXeJ8fQHXhsU)OR58(Kc|AWMht1rj;XbM=3eb*b4%GQt6nFRoxh&p z*0*xLf7Nu}9J^aHlM~D4GZT-qj1L!f80%`jtzD@47U8|LxIwoYn5=94P_p(9XhhWI zJ-U+jWo;(sZSaP8Bd0b6t&S_ZI$O6BE}3s=g1Ah%sJJQZRoa(GL{-P%}_kkWyRN}k(pSawlXr^?)1v$^>OA1Gn8PN zLPdU$oUCkx6|%^jboG1D$whTLT)t-SBKqe~^Oj$TBO`V>%(hMA(+jt&Huq9|4<&bT zG(*zb$wVQFKb+rkiIowMkxTNJ;&9)v;IsH^LVHCW!@tLCgc7{iOBCn&o|fpyF|~=9 zMW+xbvu;%ui9lu8xaM*#MvIX1zl1}4e;v@pYHByES+mEv2YH;9RTN(X zc*xw6lA)u;THx}Jo73{Dc4=^31}SZ^4Myk zwOPl!g6+W@$^EZro$$kp-xMO3gQ+kSv!b|7g|haEE3y1ALbBwkd_&&@a^UWFVV9>9 z!kuY_R~I{-#ab??M6riH+~)c7$7ob~Z1o2hCk{SnEMQ%DeyQM-`2vK^e}-ed9Wo)S z)^yZ0^_h}SOIF9WTN_Hrx2QYkY}yni(9dfsdq^1*YdR3q&8ux!b>-2k966xr$(fi0 z<*4fTEJ%-VDF5NU~s5I6$O11HR0Ea;xM}3CH@+bT<|R1MMy}ZTC0P1ILXWI0&iw6 ziYM%geLk$uh#;DbKJ|Pm&g#kZu$TbrbOP@x-JCwKBF;a^FDQ6EmwhwicL(9fy#Ry7 z+ser^nwL%1r@Z-9RWI%y5Cgo;XQLBQj0(`#WnjpULj8I&wbFiYZPC5mgx|Y1LruI| zvoFw9SeMK2okeV?87*;Ry(&CqM!U%&bEo!vCx_0=zjqnGr_ey`IN^pN`u#@2jZf}( zC_XO*ccfD2!7=vix_$K6O)so0V(@)*V1ZeZ)?e9eGayMTE&0OJ3u>B_H?viZV@qOQ zsJg6!_^@5uoE!`6^j72&n&>Z7zh`y=ddD=gnY%BF`Bt1X_0BPF9dSf7=<2p06OLX7 z)B5MVQ@OM<6=$=&sS&q^9r(QsE|v^OXJ!iAN&7eXze$<|B~ksf3Fp)eQGd@u^VhlO zk$~idAh12xWVlR}Usk5v-``J2&;Ai`TO|z8eu@NaK!^aJGB1 z<7g$|5~}Ww|M9M(($Al8WBE9@*k_VTw&K9eWX8-bZUf{G61hQ7N7M6$vS&ZPSJZ)0#wtCUae%2=A7Q@HMVkgWKecIe z?tq7(-4Cqy>1-NR7oD2*?o)-976?($P3NzYX-T2+jVR?NLULBO%^@fN1gNJ+wotP+ zZ8qx$5F*kUo9+i(@AC`ENcP4~rJQ}4Ws+w;rVJ>&D$uNL^{^f`YVs>7H|$rmrGc;N0e`6gv!c!$}3p+@9*r1S) zpYa;1y*58ixmbAp;ckfQa|GxOXzRqa--SC@C6S*6Kx6wH^Jg863ZetR{rmJ^!UeL~ zx~BwbiPh;?7e;|}0$K!&Y`jMAy7 zsc}>~ZQzJe^kRME*=z^fNr?Mw@^0bhhvH3LPrT6Dt;yG}aMy^5!n)s)i%dF?IE5WY z7-GRifD?B|c1zIc$djfj?JsG;n`24WG{5KuI%wGu{>}m}9`?$dHyB>84$X_5R;-lQ z8FD>=H@nj?&$Tl?1L9e3s)6)g~V*Sma zhM)Y=7$SF3x9D(g(3N#qXzmwME=f%0m$voC39zrI)hdkdeT}}E=?w&MEj$#@84hk| z(SCEaM7}=x@$toAo`zO^&$Yxe_@m3oMnEv;9)-!Nco0`G83P2;984oHQktxjP!O4S zu@R>AsbCf=8@rgn-8^+x#obI*2S1KaJ%6hLo%7wOI+wSw!#|Rcs22}rB$MV7gygZ8B@U?lX{bRk}S@DW}Z(NP+3LOJ0b^1(n&|vn7-HUN&^dF#X9h z%IW~Aze&2)qlU>Y0L&pnd0FiaoD|HgoF1D!e6-m&+abcYxV0*z@fi_s)%O<~%a={@ zX!CH=BOCoT|s;rqCT8Q;^g|>j1lBzNiAKA+#X)L)SYNi zvOz+B)iTG`ftTYq0sg37Q3rlh;U!!=3fn_lzY=O5JL?x$Bb~CWgXOLmK*UoCGK00U-qaxX%-iE`Sn{T7}*)* zZ*U22^=~w=(%Vn`h9%U7*qt3*d`f)wU!r;Uc7ZqkKL!Y-1@HfVzR7(Vp7qDN|FGCZ zce?}`Q_CrJ-1G%Ny1hBg!5&BA_zv!uTh4Z>FQLBbi$-?f-gIP6e^VQIIpS%z^I)_Y zYM`+pqCbX(@%kzvaYKGd@Q}C;8O{j8>81lCTIjbzPq3$Gpw3KriSYj z?2QI)L_y4)k3GSgkj2YuEY9XBH60CVWZowh%bNDhQoLG<1u6}b&1^NOsJ`pW+T%Q{ zlUJw&crD$QX#2%sCT*d|Cny$~d!r6rf@u3vaId=Bkv($d_CNgXNWgTNf%%V=y}Ei7 z)B4{)?g{VXTQQoi7qKq!V=P9qEKp6b)Lx?TBT+9GOL!?AA3>v=-OlMR*Nl;!PUD_U zn(2V$Z0_xntwR00JcL|$(dmY{c+P}p(Q0t-ME$hudx4HOZ+DJ&4*yvU8DInliAh|P zH7Wyk4q$S@r7tov(jKq9(zz0pJm5R)qF3Fv6CxzstcjaS;X)u`w!)lMm@=t{ky9M4)4ciSCPHIPpK|!U=CI zTz`A39pg+mE?WQh0$exbYV^|*k^qCgPE0Mu%}d8uRnUC;(5$?TMc!rSvUf+Whc!ny zBdXQcp&5^RXvX9~aXI4W>;f)MQJAe_)s+-|51Y305IR2PlPEr&JT`&(G^g=6(_HPM zKH&*_nNw>_PI3WQp_k*Pyo%G&Wgz<8d=rUXgto6%r44yqb}2E%%_M3{E|1kCzQ z4eRXiB1sLa9!_!3#LlJv;SOf@M#NO(wNme@Yc)DbAg}qBe&lw~i|3sA=lN_mZ*mv^ zu`Rq9Htp>f?&K{3l`l++Z?KcFGB39>Dyv524oGZo z*c;xXYmzLznAuzyK1EW?lK?b>tP{L+*Yl`;`^F2| ztfo+YPt};G8?-J-iVKnqW4F*U8d-_^o~(MWl+L%El&+AZVz&AhM}em80RTB?Wh?jf z5e@?X#rJB@A@blsT6E9MY##OIqbHIVbSgC|2-25GzD``18}>JoOlRk& zF$p#cmS7+$cM9O7QOQjeZQ7MPM)~>MJaiQ=>(e8!rKs7Jk$UupL!{`)rUOK(-AU@Om#n4StkWfG;#3t^CT}8 zjQZmR71`Ablt6MhnSGbM;KLX^;)gYKt@u1k^vR-g=EhZ`pKEoTjmDrO8S3;>k0Ksy zz?S|%S`^D|lT9WrT;xAo(`y|}3ncmOg5l8nXZgvpYXM-jb7gk96>PX1(i?n6ZMjpU zdr&SI;M_lZy|uD?zv`lrHoy#CN`P+PN4nJ5f3LZ_e}-6vz(w6RGAe5)H7~CbKQF~| z?P?A>HO1R`o1t`DUJFc1Z<~!i<1gz_h-KYlEE?-J)3EyeoxRfemk}Y}va@q!c!q%0 zi~Q2Pm@8mwkn5w-B2S@KdF}YN6rX9|8}Ys0z{XN}zMkm2&r+#cC7-_7)|IyWVG(cD zgN=`O6c>7&9rd~}bD)vj)7=h)xy8lirv$GEp#JEEMQrbsXICXP{nzCcu8q@m=k`hv z$P9nVH6$W3GIMLo`VJ-Uo7x@$lloqfi+Ay&Tu9(Ul9-l139a(mx4x>Y|DX=GJF4Ig6WbyCZ}BfS0x7CvWJv?KXpfZsnJe>3VZeSlmZ%l1fA9ki)u zuvtsz_@{KZzUQTUe`JO@^G%EA@xxBN^CMs;OMtyp#{xUYKBkd(LW1Dx~XWZ zZ*&d5mLiCh>y<6s6QOVs97pEsr>gB?bhn?+<+@ihUp!h^@Kk{{@}3Gwg-SSHGFO%;C&x(b_bnMeShgPT-?5pL|AuEngL$Pmy@s~2*GX72}?f_ zi8AJbwP_+}ENDn!N#`Z49;n+6b=D(}`KZ#o+}t4?f2zYi*Q?i#$fhE*rUQD9d8OB{ zrhhjaVe%&guPiL%t6_`DSsR7b21l?t8)5hTZy|KzIn=;akX0vv?>UfKB3VWnyjdSR z*Lcpx*p^JbD1UUs`Pl1ZW7izRMB1#l1dHF;oTYZUEeo1@miA=*r7vic3TPS|$=HGbaaTPKRq! ziDK@58>X{hP={VNFG=Gu!Q8{6;0aIeW@BII@W^D+df4%gnKrTXrtXNn_vsY{W0o7y zsUt{1?d9pY>Me$*T!VM{g%$}jNlzOjF+6c+CKb5o8Jb&if~Z&cuxrWsS{c$= z8PE$oH*PMq6hjHG6y;pWRAed1UWnaUV&s|AFu$MQ*HwQY?f(=!f0X5tiF#u#2|o=*Yta2j0u3=uOZpMG)3Zcl0?>f?6>Q1_X=yr(Qbb}9~6aegY`!^ ztijTfZLAtf+6a1K6s_g)_B3M&w1v%gWeY={F?DHfMSlT8UI@AzQ0IO^;_Kg>Sq!b% zN~uW~A7wm#UX4cS&oZ#0Fz|eL(=owk)msBfcL7W_Bw>p2s^Ka@{GIJ&A}5R36jd}m zSc_Ueu>w|tVmpGt@`5z1)^7g!sAEg0I`W9-`5Ounnunv067wQ9eCAl1G0up$hV1i& zU@^*W?)xT)F_1Nnh}Y56*zN4+!EXaolc~JVlPkmYm+5T zZC2lqBx&c4esTV$M=x;Bv)muHp3`Csk_0EhGd4CXk1l&q=B+VdtG4{Svwh7Kbp{+q z#$&wIU*B8dT+Vp5ufywq1=|Tpe9?VX>zeBTk02y7nT^%8LU{XsEgQRB~!KLg%? z5DKcVXESU6!mTMiW$0pMe4J3+0NQw&r>0(|qElsSp=Q=Q!Ktn_InZJ&#VC_cmf*>M zQ)l!P&&fR(29}nS zs3buHfaMLw41C;piQyKdK_EdmEzXYCM>opI1fa1zudDlFQtNjTdIuXn&#bvNaM1|$ zWgK^_R@1F>B9G{ueb*-#_10m$=_J0}A{OE!g>CqgE$R3VQT9Z`6l!+skUAg_z% zWqwp&8gzlW=APLVpk|iQ=?Hpm1yoO11C)HN-wf!j63w_CSx#Kp7P_zaq}q?~X%8+- zj)rC@MJ!!uGI}nJ+l%t?i@y%9SdV16Pm2nc>CT#1fClO78f8Dd1gG z>^H|c6iHrTer2nMC4QqVZwMoS5u}0F@Z@{O*%|P;u9{tmo6=E6`3OI^n`D;k4$1~2 zduCpYmK7m7Z4|;9q7(gA-8P@L)xME!y&N@5Ilk!FyQ3;;lF#Z{n&Eh!gwN>}{bWUi zSBHv{s+#t<8KTc-GVbX;j5^;WBjBjxa}2&(hM@dLHz{>0$Icb0cFEn5cSYgY8$?Oy z+v?JfDmExSbro34Ts~DG5zeh0M!#|13@aMVjuSB7;*S7hNh!C#|NgKv*vOY17YPmt zB@93Qi%~Y^IqyK}IsdM8bKAM!niJv(%jIOJm8O+mY zx@}jxaKKk*i%I|D)mXh+H;K?ju79-gSSCEsYnM1S$1RjRC4*b2O>poZ-60-pJf}F@ z@8xEe!K>~Mva;SD2VQ?4y>yYY(JK^qi4)YQCO5fL=F+KARo~a6R#aM@B;yw<90l$M zC_S-i9<#8#KN~}Tgg`{d=x`C&9e1*%Q=h{uCtun0Ub?<*O3Z7l^8|gl3KvZkJ8Nkb znPM4hrM0$y0-d=lvX|1X9QIS(B77q-;J(PacQ6%m^l{n~fZT+_*T?ml-Q~0C^7kTc zTo>%KFs6mL%z9U=%Vve4nbUezAjqbx6-3?5dbVsl1C{tpM&zTXbmJ|Ay7n=#>Ot3w z%xea@o1Y%ZA8hpM$90{L)V7;U88^L_trMrpoty5PB&xnoP9QrVI!WHG`>zR?1OGS+#|5sy16^mJ%0nR ztsgqL2C+!aPr zkTW*`Fbl0*H3QYLJV7a96td93Y=(^X@&)KCowoP4uQ$Q)TAQOV-v^1- zd1H(P1K!Lk&MVf5Gpw5#B4P!95~CCX_@XpcZiy-^R6ps|SH~trSkiL-4TdtCcd^(whg#Mq z8SL5Yp5&nZG^Z1c#(AUP!UFSJTKI)!xh z2Eyu^#nmF=_0dq==;bZ%l-!)0T~7iYz{1kq$MQK*ob>+8eDMHHFj-_)VFRlJbeFeVtob+SOSo6)Xjz(zrJa5 zqmFX47_mwH%kR4W*M}OX#@5Yt9dOe>eikbI-@7w_uo;IMMvavEAp=)kUOK_G|~XaR)nd}id8(f zI-*1*TY=x)Gssz)7A8vr);Yk#5_DJ%)mRtco;9m3Pr~A+IHug`i{oEOZQ4;r8=&%! zRae$V3M5E-7p*UKM}$nsW$n`594N47J7g9MA%V&2#-aXI)$W67&@#A5SU$SorfaW< z-=zA(pNOfPETV*d{IA;9LR%2Akf#s0{uxT3iTL1b6b7bN$2@P?V>@n+DS#J)z`Yhx zYbDdD#m}c858v5eo+iKD+C>L>b#--R-05z9_5T!rQ$`jRPb(s&2js1pO@fBBhyg1=D8tTJcrE zRM@eh^jG9viG~*o|2wAQo#M#so$P$hQNB`br8`|@+z&yRE*$X1*@0=0Vz1+SU~}Yg-#T^=Y$|XKdaSrrE=8Iu&`7K z*x5JRKiem%|B88F-wdCN3cOMEuEo?Q;*#$Q*s^UW)&e_o95zf>tu)j{^hY`G+___E zY3blZidhU!jdLk6&{NCx^YeT0^~%rh*3rgnXQ|PD1y#sPF42B3W^cYDnu_9Y^f(^Af~BgRf_;S)wn)tVxjQw%yyY-dTX|fk zha{QE&!4&~^ahQrDZ?ZAA9BB2_sDmph&vkjK{whMuUG8dux2^Ee5zL~u z1@j!-CjECB2z&?5b78+V7@83H;lzyPDu`Ne;2V-w&^E!SGVzMfc1B3CgQDL)jrRXa z$2ILwzP-^f&F#Hvz4bqd(R)t|BIdhjB8c)u!l&<2%wOZkscvJN1 Hlh6MHPRx`) diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index 0aa57a3d4309bc605d80d91f8cd87577b62cacfa..bac25aab3d2ef3c2ff14dcda2a9e6fe58a67ed53 100644 GIT binary patch delta 13670 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 Date: Thu, 26 Feb 2015 00:05:04 -0500 Subject: [PATCH 002/168] EMP briefly blocks switching/engaging modules --- code/modules/clothing/spacesuits/rig/rig.dm | 14 +++++++++++--- code/modules/clothing/spacesuits/rig/rig_verbs.dm | 15 +++++++++++++++ .../clothing/spacesuits/rig/suits/light.dm | 3 +++ 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index c66f2a986c..5d1addd471 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -493,6 +493,8 @@ return 1 if(istype(user)) + if(malfunction_check(user)) + return 0 if(user.back != src) return 0 if(locked_dna) @@ -509,10 +511,10 @@ return 1 +//TODO: Fix Topic vulnerabilities for malfunction and AI override. /obj/item/weapon/rig/Topic(href,href_list) - if(!check_suit_access(usr)) - return + return 0 if(href_list["toggle_piece"]) if(ishuman(usr) && (usr.stat || usr.stunned || usr.lying)) @@ -545,7 +547,7 @@ usr.set_machine(src) src.add_fingerprint(usr) - return 1 + return 0 /obj/item/weapon/rig/proc/notify_ai(var/message) if(!message || !installed_modules || !installed_modules.len) @@ -724,6 +726,12 @@ wearer << "The [source] has [dam_module.damage >= 2 ? "destroyed" : "damaged"] your [dam_module.interface_name]!" dam_module.deactivate() +/obj/item/weapon/rig/proc/malfunction_check(var/mob/living/carbon/human/user) + if(malfunctioning) + user << "ERROR: Hardware fault. Rebooting interface..." + return 1 + return 0 + /*/obj/item/weapon/rig/proc/forced_move(dir) if(locked_down) return 0 diff --git a/code/modules/clothing/spacesuits/rig/rig_verbs.dm b/code/modules/clothing/spacesuits/rig/rig_verbs.dm index ce20244734..09db9b0325 100644 --- a/code/modules/clothing/spacesuits/rig/rig_verbs.dm +++ b/code/modules/clothing/spacesuits/rig/rig_verbs.dm @@ -141,6 +141,9 @@ set category = "Hardsuit" set src = usr.contents + if(malfunction_check(usr)) + return + if(!check_power_cost(usr, 0, 0, 0, 0)) return @@ -168,6 +171,9 @@ set category = "Hardsuit" set src = usr.contents + if(malfunction_check(usr)) + return + if(canremove) usr << "The suit is not active." return @@ -189,6 +195,9 @@ set category = "Hardsuit" set src = usr.contents + if(malfunction_check(usr)) + return + if(!check_power_cost(usr, 0, 0, 0, 0)) return @@ -222,6 +231,9 @@ set category = "Hardsuit" set src = usr.contents + if(malfunction_check(usr)) + return + if(!check_power_cost(usr, 0, 0, 0, 0)) return @@ -257,6 +269,9 @@ set category = "Hardsuit" set src = usr.contents + if(malfunction_check(usr)) + return + if(canremove) usr << "The suit is not active." return diff --git a/code/modules/clothing/spacesuits/rig/suits/light.dm b/code/modules/clothing/spacesuits/rig/suits/light.dm index 0a18f3c640..6c89a0058b 100644 --- a/code/modules/clothing/spacesuits/rig/suits/light.dm +++ b/code/modules/clothing/spacesuits/rig/suits/light.dm @@ -75,6 +75,9 @@ ..() +/obj/item/weapon/rig/light/ninja/malfunction_check() + return 0 //even as strong as ninjas are, they may not be able to afford being blocked from switching modules for 20 seconds + /obj/item/weapon/rig/light/stealth name = "stealth suit control module" suit_type = "stealth" From 1aa156963479afe263fc189171dc00489f88ee1a Mon Sep 17 00:00:00 2001 From: Chinsky Date: Thu, 26 Feb 2015 10:49:50 +0300 Subject: [PATCH 003/168] Fixes #8284 --- interface/skin.dmf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/skin.dmf b/interface/skin.dmf index 7ba4d10788..5069e5c5e0 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -1828,7 +1828,7 @@ window "infowindow" elem "info" type = INFO pos = 0,0 - size = 636x451 + size = 638x477 anchor1 = 0,0 anchor2 = 100,100 font-family = "" From 728d90d06fe83da09bc8a715b0fc85369c88943c Mon Sep 17 00:00:00 2001 From: Chinsky Date: Thu, 26 Feb 2015 11:07:25 +0300 Subject: [PATCH 004/168] Now airflow knockout uses proper Weaken proc to doublecheck for flags. Should fix #8254 Also cleans up it a bit and adds span classes. --- code/ZAS/Airflow.dm | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/code/ZAS/Airflow.dm b/code/ZAS/Airflow.dm index 7b0d3afa98..a31a2494e5 100644 --- a/code/ZAS/Airflow.dm +++ b/code/ZAS/Airflow.dm @@ -2,17 +2,18 @@ Contains helper procs for airflow, handled in /connection_group. */ - mob/var/tmp/last_airflow_stun = 0 mob/proc/airflow_stun() if(stat == 2) return 0 if(last_airflow_stun > world.time - vsc.airflow_stun_cooldown) return 0 + if(!(status_flags & CANSTUN) && !(status_flags & CANWEAKEN)) - src << "\blue You stay upright as the air rushes past you." + src << "You stay upright as the air rushes past you." return 0 - if(weakened <= 0) src << "\red The sudden rush of air knocks you over!" - weakened = max(weakened,5) + if(!lying) + src << "The sudden rush of air knocks you over!" + SetWeakened(max(5,weakened)) last_airflow_stun = world.time mob/living/silicon/airflow_stun() @@ -22,16 +23,9 @@ mob/living/carbon/metroid/airflow_stun() return mob/living/carbon/human/airflow_stun() - if(last_airflow_stun > world.time - vsc.airflow_stun_cooldown) return 0 - if(buckled) return 0 if(shoes) if(shoes.flags & NOSLIP) return 0 - if(!(status_flags & CANSTUN) && !(status_flags & CANWEAKEN)) - src << "\blue You stay upright as the air rushes past you." - return 0 - if(weakened <= 0) src << "\red The sudden rush of air knocks you over!" - weakened = max(weakened,rand(1,5)) - last_airflow_stun = world.time + ..() atom/movable/proc/check_airflow_movable(n) @@ -84,10 +78,8 @@ obj/item/check_airflow_movable(n) if(istype(src, /mob/living/carbon/human)) if(src:buckled) return - if(src:shoes) - if(istype(src:shoes, /obj/item/clothing/shoes/magboots)) - if(src:shoes:magpulse) - return + if(src:shoes && src:shoes.flags & NOSLIP) + return src << "\red You are sucked away by airflow!" var/airflow_falloff = 9 - sqrt((x - airflow_dest.x) ** 2 + (y - airflow_dest.y) ** 2) if(airflow_falloff < 1) From 3ba56d7f76b3bedffa1d3da2824ddf24de984d6f Mon Sep 17 00:00:00 2001 From: Chinsky Date: Thu, 26 Feb 2015 11:56:43 +0300 Subject: [PATCH 005/168] Alt-arrow in same direction you are set to face now resets facing direction. --- code/modules/mob/mob.dm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 850a4147dd..db14807a06 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1180,7 +1180,9 @@ mob/proc/yank_out_object() usr << "You are now facing [dir2text(facing_dir)]." /mob/proc/set_face_dir(var/newdir) - if(newdir) + if(newdir == facing_dir) + facing_dir = null + else if(newdir) set_dir(newdir) facing_dir = newdir else if(facing_dir) @@ -1200,20 +1202,16 @@ mob/proc/yank_out_object() /mob/verb/northfaceperm() set hidden = 1 - facing_dir = null set_face_dir(NORTH) /mob/verb/southfaceperm() set hidden = 1 - facing_dir = null set_face_dir(SOUTH) /mob/verb/eastfaceperm() set hidden = 1 - facing_dir = null set_face_dir(EAST) /mob/verb/westfaceperm() set hidden = 1 - facing_dir = null set_face_dir(WEST) From 100d8e9fb8f4428796c1b9f5f6e8579a983c566e Mon Sep 17 00:00:00 2001 From: Chinsky Date: Thu, 26 Feb 2015 12:09:23 +0300 Subject: [PATCH 006/168] Fixed buckling into chair not changing mob's facing if he had permafacing set. --- code/game/objects/buckling.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 00e3999332..d64857d004 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -24,6 +24,7 @@ return 0 M.buckled = src + M.facing_dir = null M.set_dir(dir) M.update_canmove() buckled_mob = M From 612e60e167e8fc1e5cc03cecccfcb1360cffcdba Mon Sep 17 00:00:00 2001 From: Chinsky Date: Thu, 26 Feb 2015 12:30:38 +0300 Subject: [PATCH 007/168] Moonwalkig hotkeys now work in hotkey mode. --- interface/skin.dmf | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/interface/skin.dmf b/interface/skin.dmf index 5069e5c5e0..d068054731 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -249,6 +249,23 @@ macro "hotkeymode" name = "SOUTH+REP" command = ".south" is-disabled = false + elem + name = "ALT+WEST" + command = "westfaceperm" + is-disabled = false + is-disabled = false + elem + name = "ALT+NORTH" + command = "northfaceperm" + is-disabled = false + elem + name = "ALT+EAST" + command = "eastfaceperm" + is-disabled = false + elem + name = "ALT+SOUTH" + command = "southfaceperm" + is-disabled = false elem name = "INSERT" command = "a-intent right" From 98f6a4cae5b4bc7a105139e6dad4a6bfe5dde744 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Thu, 26 Feb 2015 11:39:41 +0100 Subject: [PATCH 008/168] Camera coverage fixes. Fixes issues with AI cameras coverage not updating properly in several instances during EMPs, destruction, etc., --- code/game/machinery/camera/camera.dm | 40 +++++++++++++------ code/game/machinery/camera/camera_assembly.dm | 5 +-- code/game/objects/items/devices/spy_bug.dm | 1 - code/global.dm | 2 +- .../modules/clothing/spacesuits/spacesuits.dm | 1 - .../living/silicon/ai/freelook/cameranet.dm | 14 ++++--- .../mob/living/silicon/ai/freelook/chunk.dm | 16 +++----- .../silicon/ai/freelook/update_triggers.dm | 12 ++---- .../modules/mob/living/silicon/robot/robot.dm | 1 - 9 files changed, 46 insertions(+), 46 deletions(-) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 50a814b8de..1a20fd29ef 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -31,13 +31,13 @@ var/alarm_on = 0 var/busy = 0 + var/on_open_network = 0 + /obj/machinery/camera/New() wires = new(src) assembly = new(src) assembly.state = 4 - invalidateCameraCache() - /* // Use this to look for cameras that have the same c_tag. for(var/obj/machinery/camera/C in cameranet.cameras) var/list/tempnetwork = C.network&src.network @@ -56,18 +56,18 @@ /obj/machinery/camera/emp_act(severity) if(!isEmpProof()) if(prob(100/severity)) - invalidateCameraCache() stat |= EMPED SetLuminosity(0) kick_viewers() - triggerCameraAlarm(10 * severity) + triggerCameraAlarm(30 / severity) update_icon() + update_coverage() spawn(900) stat &= ~EMPED cancelCameraAlarm() update_icon() - invalidateCameraCache() + update_coverage() ..() /obj/machinery/camera/bullet_act(var/obj/item/projectile/P) @@ -114,7 +114,7 @@ destroy() /obj/machinery/camera/attackby(obj/W as obj, mob/living/user as mob) - invalidateCameraCache() + update_coverage() // DECONSTRUCTION if(isscrewdriver(W)) //user << "You start to [panel_open ? "close" : "open"] the camera's panel." @@ -195,7 +195,7 @@ //legacy support, if choice is != 1 then just kick viewers without changing status kick_viewers() else - invalidateCameraCache() + update_coverage() set_status( !src.status ) if (!(src.status)) visible_message("\red [user] has deactivated [src]!") @@ -215,11 +215,11 @@ //Used when someone breaks a camera /obj/machinery/camera/proc/destroy() - invalidateCameraCache() stat |= BROKEN kick_viewers() triggerCameraAlarm() update_icon() + update_coverage() //sparks var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() @@ -364,7 +364,7 @@ network_added = 1 if(network_added) - invalidateCameraCache() + update_coverage(1) /obj/machinery/camera/proc/remove_networks(var/list/networks) var/network_removed @@ -375,24 +375,24 @@ network_removed = 1 if(network_removed) - invalidateCameraCache() + update_coverage(1) /obj/machinery/camera/proc/replace_networks(var/list/networks) if(networks.len != network.len) network = networks - invalidateCameraCache() + update_coverage(1) return for(var/new_network in networks) if(!(new_network in network)) network = networks - invalidateCameraCache() + update_coverage(1) return /obj/machinery/camera/proc/clear_all_networks() if(network.len) network.Cut() - invalidateCameraCache() + update_coverage(1) /obj/machinery/camera/proc/nano_structure() var/cam[0] @@ -403,3 +403,17 @@ cam["y"] = y cam["z"] = z return cam + +/obj/machinery/camera/proc/update_coverage(var/network_change = 0) + if(network_change) + var/list/open_networks = difflist(network, restricted_camera_networks) + // Add or remove camera from the camera net as necessary + if(on_open_network && !open_networks.len) + cameranet.removeCamera(src) + else if(!on_open_network && open_networks.len) + on_open_network = 1 + cameranet.addCamera(src) + else + cameranet.updateVisibility(src, 0) + + invalidateCameraCache() diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index 8be7f6ebe5..4ece6594f0 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -78,7 +78,7 @@ if(isscrewdriver(W)) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - var/input = strip_html(input(usr, "Which networks would you like to connect this camera to? Seperate networks with a comma. No Spaces!\nFor example: SS13,Security,Secret ", "Set Network", "SS13")) + var/input = strip_html(input(usr, "Which networks would you like to connect this camera to? Separate networks with a comma. No Spaces!\nFor example: SS13,Security,Secret ", "Set Network", "SS13")) if(!input) usr << "No input found please hang up and try your call again." return @@ -100,9 +100,6 @@ C.auto_turn() C.replace_networks(uniquelist(tempnetwork)) - tempnetwork = difflist(C.network,restricted_camera_networks) - if(!tempnetwork.len)//Camera isn't on any open network - remove its chunk from AI visibility. - cameranet.removeCamera(C) C.c_tag = input diff --git a/code/game/objects/items/devices/spy_bug.dm b/code/game/objects/items/devices/spy_bug.dm index 70e3628f67..2ad3df7ae5 100644 --- a/code/game/objects/items/devices/spy_bug.dm +++ b/code/game/objects/items/devices/spy_bug.dm @@ -140,7 +140,6 @@ ..() name = "DV-136ZB #[rand(1000,9999)]" c_tag = name - cameranet.removeCamera(src) // Sorry, no AI spying. /obj/machinery/camera/spy/check_eye(var/mob/user as mob) return 1 diff --git a/code/global.dm b/code/global.dm index 13a62b38ce..7bb7da4531 100644 --- a/code/global.dm +++ b/code/global.dm @@ -10,7 +10,7 @@ var/global/list/med_hud_users = list() // List of all entities using var/global/list/sec_hud_users = list() // List of all entities using a security HUD. // Those networks can only be accessed by pre-existing terminals. AIs and new terminals can't use them. -var/list/restricted_camera_networks = list("thunder","ERT","NUKE") +var/list/restricted_camera_networks = list("thunder","ERT","NUKE","Secret") var/global/list/global_mutations = list() // List of hidden mutation things. var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called manually after an event. diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm index b7db5da591..7bf622b539 100644 --- a/code/modules/clothing/spacesuits/spacesuits.dm +++ b/code/modules/clothing/spacesuits/spacesuits.dm @@ -33,7 +33,6 @@ camera = new /obj/machinery/camera(src) camera.replace_networks(camera_networks) - cameranet.removeCamera(camera) camera.c_tag = user.name user << "\blue User scanned as [camera.c_tag]. Camera activated." return 1 diff --git a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm index d94f705320..f05fdda45f 100644 --- a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm +++ b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm @@ -120,12 +120,14 @@ var/datum/cameranet/cameranet = new() for(var/y = y1; y <= y2; y += 16) if(chunkGenerated(x, y, T.z)) var/datum/camerachunk/chunk = getCameraChunk(x, y, T.z) - if(choice == 0) - // Remove the camera. - chunk.cameras -= c - else if(choice == 1) - // You can't have the same camera in the list twice. - chunk.cameras |= c + // Only add actual cameras to the list of cameras + if(istype(c, /obj/machinery/camera)) + if(choice == 0) + // Remove the camera. + chunk.cameras -= c + else if(choice == 1) + // You can't have the same camera in the list twice. + chunk.cameras |= c chunk.hasChanged() // Will check if a mob is on a viewable turf. Returns 1 if it is, otherwise returns 0. diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index 33dbfd0966..11c8715979 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -64,7 +64,7 @@ else changed = 1 -// The actual updating. It gathers the visible turfs from cameras and puts them into the appropiate lists. +// The actual updating. It gathers the visible turfs from cameras and puts them into the appropriate lists. /datum/camerachunk/proc/update() @@ -76,14 +76,14 @@ var/obj/machinery/camera/c = camera if(!c) - continue + cameras -= c if(!c.can_use()) continue var/turf/point = locate(src.x + 8, src.y + 8, src.z) if(get_dist(point, c) > 24) - continue + cameras -= c for(var/turf/t in c.can_see()) newVisibleTurfs[t] = t @@ -143,14 +143,8 @@ if(t.x >= x && t.y >= y && t.x < x + 16 && t.y < y + 16) turfs[t] = t - for(var/camera in cameras) - var/obj/machinery/camera/c = camera - if(!c) - continue - - if(!c.can_use()) - continue - + // At this point we only have functional cameras + for(var/obj/machinery/camera/c in cameras) for(var/turf/t in c.can_see()) visibleTurfs[t] = t diff --git a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm index e6311e7a00..5bcec964a7 100644 --- a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm +++ b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm @@ -84,6 +84,7 @@ /obj/machinery/camera/deactivate(user as mob, var/choice = 1) ..(user, choice) + invalidateCameraCache() if(src.can_use()) cameranet.addCamera(src) else @@ -98,16 +99,11 @@ cameranet.cameras_unsorted = 1 else dd_insertObjectList(cameranet.cameras, src) - - var/list/open_networks = difflist(network,restricted_camera_networks) //...but if all of camera's networks are restricted, it only works for specific camera consoles. - if(open_networks.len) //If there is at least one open network, chunk is available for AI usage. - cameranet.addCamera(src) + update_coverage(1) /obj/machinery/camera/Del() cameranet.cameras -= src - var/list/open_networks = difflist(network,restricted_camera_networks) - if(open_networks.len) - cameranet.removeCamera(src) + clear_all_networks() ..() -#undef BORG_CAMERA_BUFFER \ No newline at end of file +#undef BORG_CAMERA_BUFFER diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index d5ff0f1c09..3539e683af 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1143,7 +1143,6 @@ var/list/robot_verbs_default = list( //Disconnect it's camera so it's not so easily tracked. if(src.camera) src.camera.clear_all_networks() - cameranet.removeCamera(src.camera) /mob/living/silicon/robot/proc/ResetSecurityCodes() From 4db51c68ef2956d04fa4df941e61d8739275c251 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Thu, 26 Feb 2015 13:55:27 +0300 Subject: [PATCH 009/168] Missed a spot in airflow fixes. --- code/ZAS/Airflow.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/ZAS/Airflow.dm b/code/ZAS/Airflow.dm index a31a2494e5..6331ee272e 100644 --- a/code/ZAS/Airflow.dm +++ b/code/ZAS/Airflow.dm @@ -199,7 +199,8 @@ mob/airflow_hit(atom/A) for(var/mob/M in hearers(src)) M.show_message("\red \The [src] slams into \a [A]!",1,"\red You hear a loud slam!",2) playsound(src.loc, "smash.ogg", 25, 1, -1) - weakened = max(weakened, (istype(A,/obj/item) ? A:w_class : rand(1,5))) //Heheheh + var/weak_amt = istype(A,/obj/item) ? A:w_class : rand(1,5) //Heheheh + SetWeakened(max(weakened, weak_amt)) . = ..() obj/airflow_hit(atom/A) From 9e07708cb3ddd592aa9b600e43a0938c615b3c1d Mon Sep 17 00:00:00 2001 From: Chinsky Date: Thu, 26 Feb 2015 14:40:50 +0300 Subject: [PATCH 010/168] Fixes #8241 rollerbeds not collapsing due to a runtime --- code/game/objects/structures/stool_bed_chair_nest/bed.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index a53ceff7cb..6d50066a74 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -138,8 +138,8 @@ density = 1 icon_state = "up" else - buckled_mob.pixel_y = 0 - buckled_mob.old_y = 0 + M.pixel_y = 0 + M.old_y = 0 density = 0 icon_state = "down" From 8483d7c679018e213dd809ee81a32c991c9fe010 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Thu, 26 Feb 2015 18:46:10 +0000 Subject: [PATCH 011/168] Changes grid logic to be slightly less convoluted, clamp position to inside the object's icon --- .../reagents/reagent_containers/food.dm | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food.dm b/code/modules/reagents/reagent_containers/food.dm index 99261d81d9..1b94dfcdae 100644 --- a/code/modules/reagents/reagent_containers/food.dm +++ b/code/modules/reagents/reagent_containers/food.dm @@ -1,3 +1,6 @@ +#define CELLS 4 +#define CELLSIZE (32/CELLS) + //////////////////////////////////////////////////////////////////////////////// /// Food. //////////////////////////////////////////////////////////////////////////////// @@ -6,7 +9,7 @@ volume = 50 //Sets the default container amount for all food items. var/filling_color = "#FFFFFF" //Used by sandwiches. - var/list/center_of_mass = newlist() //Center of mass + var/list/center_of_mass = list() // Used for table placement /obj/item/weapon/reagent_containers/food/New() ..() @@ -18,17 +21,18 @@ if(proximity && params && istype(A, /obj/structure/table) && center_of_mass.len) //Places the item on a grid var/list/mouse_control = params2list(params) - var/cellnumber = 4 var/mouse_x = text2num(mouse_control["icon-x"]) var/mouse_y = text2num(mouse_control["icon-y"]) - var/grid_x = round(mouse_x, 32/cellnumber) - var/grid_y = round(mouse_y, 32/cellnumber) + if(!isnum(mouse_x) || !isnum(mouse_y)) + return - if(mouse_control["icon-x"]) - var/sign = mouse_x - grid_x != 0 ? sign(mouse_x - grid_x) : -1 //positive if rounded down, else negative - pixel_x = grid_x - center_of_mass["x"] + sign*16/cellnumber //center of the cell - if(mouse_control["icon-y"]) - var/sign = mouse_y - grid_y != 0 ? sign(mouse_y - grid_y) : -1 - pixel_y = grid_y - center_of_mass["y"] + sign*16/cellnumber \ No newline at end of file + var/cell_x = max(0, min(CELLS-1, round(mouse_x/CELLSIZE))) + var/cell_y = max(0, min(CELLS-1, round(mouse_y/CELLSIZE))) + + pixel_x = (CELLSIZE * (0.5 + cell_x)) - center_of_mass["x"] + pixel_y = (CELLSIZE * (0.5 + cell_y)) - center_of_mass["y"] + +#undef CELLS +#undef CELLSIZE From d258a476f8086584555320572d00237b54dca5a3 Mon Sep 17 00:00:00 2001 From: Mustafa Kalash Date: Thu, 26 Feb 2015 16:37:27 -0500 Subject: [PATCH 012/168] Adds paramedic to the medical category. Fixes #8255 --- code/game/jobs/jobs.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/jobs/jobs.dm b/code/game/jobs/jobs.dm index e1c42254a6..135da6bb60 100644 --- a/code/game/jobs/jobs.dm +++ b/code/game/jobs/jobs.dm @@ -72,7 +72,8 @@ var/list/medical_positions = list( "Medical Doctor", "Geneticist", "Psychiatrist", - "Chemist" + "Chemist", + "Paramedic" ) From 12024f07aaef210703106f5daf9035a869cace6d Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Thu, 26 Feb 2015 15:32:10 -0800 Subject: [PATCH 013/168] gets rid of MC tab. Returns it back to status tab. --- code/modules/mob/mob.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 850a4147dd..c7237e83b9 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -797,7 +797,7 @@ note dizziness decrements automatically in the mob's Life() proc. stat(null,"Location:\t([x], [y], [z])") stat(null,"CPU:\t[world.cpu]") stat(null,"Instances:\t[world.contents.len]") - if(statpanel("MC") && master_controller) + if(statpanel("Status") && master_controller) stat(null,"MasterController-[last_tick_duration] ([master_controller.processing?"On":"Off"]-[controller_iteration])") stat(null,"Air-[master_controller.air_cost]\tSun-[master_controller.sun_cost]") stat(null,"Mob-[master_controller.mobs_cost]\t#[mob_list.len]") From 55027796523544e167f58f377ca26b22108e883f Mon Sep 17 00:00:00 2001 From: Chinsky Date: Fri, 27 Feb 2015 13:09:40 +0300 Subject: [PATCH 014/168] That should be it for procs there. --- code/ZAS/Airflow.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/ZAS/Airflow.dm b/code/ZAS/Airflow.dm index 6331ee272e..62a6daea16 100644 --- a/code/ZAS/Airflow.dm +++ b/code/ZAS/Airflow.dm @@ -13,7 +13,7 @@ mob/proc/airflow_stun() return 0 if(!lying) src << "The sudden rush of air knocks you over!" - SetWeakened(max(5,weakened)) + Weaken(5) last_airflow_stun = world.time mob/living/silicon/airflow_stun() @@ -200,7 +200,7 @@ mob/airflow_hit(atom/A) M.show_message("\red \The [src] slams into \a [A]!",1,"\red You hear a loud slam!",2) playsound(src.loc, "smash.ogg", 25, 1, -1) var/weak_amt = istype(A,/obj/item) ? A:w_class : rand(1,5) //Heheheh - SetWeakened(max(weakened, weak_amt)) + Weaken(weak_amt) . = ..() obj/airflow_hit(atom/A) @@ -232,10 +232,10 @@ mob/living/carbon/human/airflow_hit(atom/A) apply_damage(b_loss/3, BRUTE, "groin", blocked, 0, "Airflow") if(airflow_speed > 10) - paralysis += round(airflow_speed * vsc.airflow_stun) - stunned = max(stunned,paralysis + 3) + Paralyse(round(airflow_speed * vsc.airflow_stun)) + Stun(paralysis + 3) else - stunned += round(airflow_speed * vsc.airflow_stun/2) + Stun(round(airflow_speed * vsc.airflow_stun/2)) . = ..() zone/proc/movables() From 3d9598139414dce7fca55be3055afe79b4dccdd3 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Thu, 26 Feb 2015 13:25:38 +0300 Subject: [PATCH 015/168] Fixes #8270 Fixes part where alcohol potency was doubled and halves drinking glass volume so it won't hold a half of a bottle. Also set bottle/shaker volumes to new 30u base most reagent containers like beakers/bottles use nowdays as requested. --- code/modules/reagents/Chemistry-Reagents.dm | 2 +- .../reagents/reagent_containers/food/drinks.dm | 2 +- .../reagent_containers/food/drinks/bottle.dm | 2 +- .../food/drinks/drinkingglass.dm | 14 +++++++------- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 8fea9c74c6..f58a39bd6c 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -3242,7 +3242,7 @@ datum // make all the beverages work together for(var/datum/reagent/ethanol/A in holder.reagent_list) - if(isnum(A.data)) d += A.data + if(A != src && isnum(A.data)) d += A.data if(alien && alien == IS_SKRELL) //Skrell get very drunk very quickly. d*=5 diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index ceabea1e50..e42ef09ac1 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -271,7 +271,7 @@ desc = "A metal shaker to mix drinks in." icon_state = "shaker" amount_per_transfer_from_this = 10 - volume = 100 + volume = 120 center_of_mass = list("x"=17, "y"=10) /obj/item/weapon/reagent_containers/food/drinks/flask diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm index 63a34ec90c..52a4ba12ba 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm @@ -6,7 +6,7 @@ /obj/item/weapon/reagent_containers/food/drinks/bottle amount_per_transfer_from_this = 10 - volume = 100 + volume = 120 item_state = "broken_beer" //Generic held-item sprite until unique ones are made. var/const/duration = 13 //Directly relates to the 'weaken' duration. Lowered by armor (i.e. helmets) var/isGlass = 1 //Whether the 'bottle' is made of glass or not so that milk cartons dont shatter when someone gets hit by it diff --git a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm index bde3854727..0dc3012493 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm @@ -4,8 +4,8 @@ name = "glass" desc = "Your standard drinking glass." icon_state = "glass_empty" - amount_per_transfer_from_this = 10 - volume = 50 + amount_per_transfer_from_this = 5 + volume = 30 center_of_mass = list("x"=16, "y"=10) on_reagent_change() @@ -16,24 +16,24 @@ /*else if(reagents.reagent_list.len == 1) for(var/datum/reagent/R in reagents.reagent_list) switch(R.id)*/ - if (reagents.reagent_list.len > 0) + if (reagents.reagent_list.len > 0) var/datum/reagent/R = reagents.get_master_reagent() - + if(R.glass_icon_state) icon_state = R.glass_icon_state else icon_state = "glass_brown" - + if(R.glass_name) name = R.glass_name else name = "Glass of.. what?" - + if(R.glass_desc) desc = R.glass_desc else desc = "You can't really tell what this is." - + if(R.glass_center_of_mass) center_of_mass = R.glass_center_of_mass else From 14f76324b963daca76878d260abb02b8da81336f Mon Sep 17 00:00:00 2001 From: Mustafa Kalash Date: Fri, 27 Feb 2015 17:18:47 -0500 Subject: [PATCH 016/168] Fixes #8231. Adds on_hear_radio proc for observers to add tracking. --- code/modules/mob/hear_say.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index 8b39a00aa5..e5e91c4bdc 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -199,6 +199,9 @@ /mob/proc/on_hear_radio(part_a, speaker_name, track, part_b, formatted) src << "[part_a][speaker_name][part_b][formatted]" +/mob/dead/observer/on_hear_radio(part_a, speaker_name, track, part_b, formatted) + src << "[part_a][track][part_b][formatted]" + /mob/living/silicon/on_hear_radio(part_a, speaker_name, track, part_b, formatted) var/time = say_timestamp() src << "[time][part_a][speaker_name][part_b][formatted]" From 5d2f492386317d577e35825af9a906b707686163 Mon Sep 17 00:00:00 2001 From: Mustafa Kalash Date: Fri, 27 Feb 2015 18:09:09 -0500 Subject: [PATCH 017/168] Fixes #8265. Moves the print report link being added to the window to after the data is saved for printing. --- code/modules/hydroponics/trays/tray_tools.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/hydroponics/trays/tray_tools.dm b/code/modules/hydroponics/trays/tray_tools.dm index cd7d0daf9a..64e0fe4369 100644 --- a/code/modules/hydroponics/trays/tray_tools.dm +++ b/code/modules/hydroponics/trays/tray_tools.dm @@ -198,10 +198,10 @@ if(grown_seed.get_trait(TRAIT_TELEPORTING)) dat += "
The fruit is temporal/spatially unstable." - dat += "

\[print report\]" if(dat) - user << browse(dat,"window=plant_analyzer") last_data = dat + dat += "

\[print report\]" + user << browse(dat,"window=plant_analyzer") return From a0501ae5a79a5a8548d19852a2a2e8eacc091e76 Mon Sep 17 00:00:00 2001 From: MrSnapwalk Date: Fri, 27 Feb 2015 19:04:20 -0600 Subject: [PATCH 018/168] Updates /obj/item/clothing/under/fluff/parkereliza with better sprites. --- icons/mob/collar.dmi | Bin 606 -> 777 bytes icons/mob/suit.dmi | Bin 289685 -> 289264 bytes icons/obj/custom_items.dmi | Bin 63815 -> 63779 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/collar.dmi b/icons/mob/collar.dmi index ff6be009b7533d711236c3de338438f0bedf2613..b603e5bf299525235b24c892eb0e817b704f8132 100644 GIT binary patch delta 595 zcmV-Z0<8Vs1c?TaBuhe2OjJd{z`#*gIhCGiZ+1>uSy|ZF*oQDQY;0`I%*=HvEn_1l zySuxSlaq~&jf8}Rz`(!&Ww0&U|4bVl6`cQXZ*RcBz_(E9(2-!Ef8|L;K~!jg?U(D0 zgCG!vs}9O)E3NhYpLM6K0sW<`-!i|Hjv~uw7~l+U9T# z^sa5Oc-waL0?yqVJ+mR^zZA4+J4*kN^&;pBsFC$`iH@wl%cqaLNuw>Q-x0$w48t%C z!~7-bjQ?hF9q>ODf4@)TJs|Nxp8n&o=lh5TLiGD2=!FOjP&b2!o@5ZcGzPL4Lqs=& zh@Px3zvMuSa`X&?adHYwV_wLniB$aw~*0L-(z7U*e% z+XTw_ohz8U9h~cF0LDXs(fcQ*^c3^`u}G(YTpst?)s^yef2CYK!{7^0P2yN>~Cyjv=2iD9--Y;281=Dzd+wdkFcYL233kcufFh;P(b4 z2741gxInZw$j3GTCkA0}P~xyP0n{05sUrJ32D%BLUo>_}k=~%hK?i&K0JK<<{S902 hr*{zV4H)Lbd;?v97S2oPnA89O002ovPDHLkV1i(P9wh(( delta 423 zcmV;Y0a*Tt2HpgaBs?=vOjJd{z`#*gIhCGiZ+1>uSy{}?%#)Lojg5_LY;4%r*Z^g) zE!zKtgoG8G|GT@ptgNiSz`&Ilp~#VMpnpk8L_t(&f$f*wmV+P+gbOA_Y)aq%ZHx40 zMNLt5ulCG$qnrsD(3{ES0>B^Q-1=p$7vc5jG4QT>ZuG(X+}!)YKEQW(S9UsM|Ey#S zKUn%xE{Cu?WXVqbi-!n<%II&lb8T)>C>DN~=$>`T{K-0000004%UW zeP7*XA4d)cc2eNI@PEi4PXX<^JYX918gQNh+I4v}*bV<}gPd3;wCjTOM%y~$n{78xIzq3Jjrt RbBF){002ovPDHLkV1j^8%4Prn diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index a3620a4429e4f2532f4f59cf9f4a8777fc2b0587..e8f9800334c5f7772229b9282292c2e40334dcce 100644 GIT binary patch delta 17404 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 delta 17716 zcmaL81zc3!+crA1N{fWjqJl~YNVk+piZla)bShmNK^j2>326}N?i`SmZX^fk8isCW z&f-p6x3G7#u(O51 zToaSNzp|qjq6p|eETZ_DS7km8lQ>bkbLIV0_cbrx7vY^H$0dyKGdmHDM89_*6m-W1 zC=({T1Tef0khMhGVUEw2Hja9;?BI4s`SR~4#jPbVyBnxp8S8_Dz+StfDxu`I6Zg}s z*SYm>f9j#Bklnf|`iDA#`tsP+MlI%H!UGScM+SGR z^p#&+(KG9Hn=-x2*0U;HqUQ6b!JKS@k+r&5`}G4tDYdWHK3RMfr(sLXy}@GeRgvnW z@S^ZHd6=J>y|`;mQ?lp+L`Yob|BBH5ZqQ9i-FNp|grSL_;lD%Dx>{~@Zn~c|-~X`w z=9SSJ(X@#~Apul0A+miL2+7 z5z7sWhK3o~ujJEA1&!W*=J17GP0ZS2Jh>y-#!j%3r6!i4+Sfkqb`COb@{oL|+96%fmJ@yGEbw^zZm@-~g~b{4IC)w6t3pZ{LAYQre;%hpm`Fu` zHtk%CRa&IGD2_tDe)V#PINpnc`jlEjst+km2PIzZM?*>l)KelF{iwGU0cSnq=NWpcaPWQL(=WrxXhywglBxZ{*V4AfqC?UAis@C2y;d*bGs&4evGbcIKtfka= z({UQpDu2!oGM{1Q@Ey_IflgvOU5>A(r3G*gE44+ac?mWs;PyWZrH&Yf)34St)DK8G zF%>~Q!@KWqx$gYx^fSTYB=AYs`(lg8trTZOTV#xgP`X zsvZnEr?AISKQXpvZ5E6&9oW_jzcEEh0fClOIsr3Mo}5GvW*#q4bnD zxWB!?Bp$_6#CwGDZOtKUpIsq)U1An9T7>ts0}^nakNGh3`@>Lf8B6& zD6lAsetmstD2sl|NA%tL*~ABn(W-$wSrp zKI}yt)TE3X_m>o?raBe~6ujAMn@GxAY3Y8OQ)S=aokQuik!HC(SGFvXHzK~3^6MAN zdNd^RaWhBG$KEhE`ETF+E#{ByRzsdX%DDn0KTmZAMG|-5Nrq=elr>%Y3x>1g&xVZ8 z2;7`9nKY)g;&8tzkCz_W_c1fTByFR~ziw`vavOc!e=5OWcV*Ha<(Rk5H1zx^M#Ys+ zY%KYH1IL#kA?N(jZ+(k&_a_=lO2#P3JHKs0ZsdpSUmEsLTiwk@B&g>;7U0R^@!yZy zSuwoT{}}P?#MDmz`nfaNj8dU_e*I75M2Ro1%0DW3G*YOgPgIAEPvh;zE!h%Jo%^5T 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

_x8RDl;#UPSvSXF3Yq)*)1JJV#)`+C=f}3< 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 From 0f6a3adf6812ea228f115de2bf786c9639ae754e Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 28 Feb 2015 16:28:54 +1030 Subject: [PATCH 019/168] Fixes #8256 --- code/__HELPERS/global_lists.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 68c74c614e..6de12ac074 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -45,7 +45,7 @@ var/global/list/skin_styles_female_list = list() //unused var/global/list/underwear_m = list("White" = "m1", "Grey" = "m2", "Green" = "m3", "Blue" = "m4", "Black" = "m5", "Mankini" = "m6", "None") //Curse whoever made male/female underwear diffrent colours var/global/list/underwear_f = list("Red" = "f1", "White" = "f2", "Yellow" = "f3", "Blue" = "f4", "Black" = "f5", "Thong" = "f6", "Black Sports" = "f7","White Sports" = "f8","None") //undershirt -var/global/list/undershirt_t = list("Black Tank top" = "u1", "White Tank top" = "u2", "Black shirt" = "u3", "White shirt" = "u4", "None") +var/global/list/undershirt_t = list("White Tank top" = "u1", "Black Tank top" = "u2", "Black shirt" = "u3", "White shirt" = "u4", "None") //Backpacks var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt") From d0451eaa2d339241472d2126c1c30efc03cc5584 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 28 Feb 2015 16:30:34 +1030 Subject: [PATCH 020/168] Fixes #8249 --- code/modules/hydroponics/seed_datums.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index 561210537d..1ee86c22f4 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -685,7 +685,7 @@ name = "wheat" seed_name = "wheat" display_name = "wheat stalks" - chems = list("nutriment" = list(1,25)) + chems = list("nutriment" = list(1,25), "flour" = list(1,25)) kitchen_tag = "wheat" /datum/seed/wheat/New() From 3bf7d1446ca902569b406360bca49aec42feee54 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 28 Feb 2015 16:45:18 +1030 Subject: [PATCH 021/168] Fixes #8285 --- code/modules/hydroponics/seed_controller.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/hydroponics/seed_controller.dm b/code/modules/hydroponics/seed_controller.dm index e914ce7c3d..84cbc727de 100644 --- a/code/modules/hydroponics/seed_controller.dm +++ b/code/modules/hydroponics/seed_controller.dm @@ -2,7 +2,7 @@ // Processes vines/spreading plants. #define PLANTS_PER_TICK 500 // Cap on number of plant segments processed. -#define PLANT_TICK_TIME 25 // Number of ticks between the plant processor cycling. +#define PLANT_TICK_TIME 75 // Number of ticks between the plant processor cycling. // Debug for testing seed genes. /client/proc/show_plant_genes() From 53e59cbf942311541fa418bd70d6415538ca1eb1 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 28 Feb 2015 16:47:08 +1030 Subject: [PATCH 022/168] Fixes #8126 --- code/modules/organs/organ_external.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 4dcc006df6..5aeb4c8bd7 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -84,8 +84,8 @@ if(istype(owner,/mob/living/carbon/human)) var/mob/living/carbon/human/H = owner if(H.species && H.species.flags & IS_SYNTHETIC) - brmod = H.species.brute_mod - bumod = H.species.burn_mod + brmod = (!isnull(H.species.brute_mod) ? H.species.brute_mod : 1) + bumod = (!isnull(H.species.burn_mod) ? H.species.burn_mod : 1) brute *= brmod //~2/3 damage for ROBOLIMBS burn *= bumod //~2/3 damage for ROBOLIMBS From c659ebefdefa85efef0ed0f5564c79674d3b3d0f Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 28 Feb 2015 16:47:27 +1030 Subject: [PATCH 023/168] Fixes #8176 --- .../living/silicon/robot/drone/drone_items.dm | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index 10b11648d1..68df16d020 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -69,7 +69,7 @@ wrapped = null return - src.loc << "\red You drop \the [wrapped]." + src.loc << "You drop \the [wrapped]." wrapped.loc = get_turf(src) wrapped = null //update_icon() @@ -79,6 +79,9 @@ /obj/item/weapon/gripper/afterattack(var/atom/target, var/mob/living/user, proximity, params) + if(!proximity) + return // This will prevent them using guns at range but adminbuse can add them directly to modules, so eh. + //There's some weirdness with items being lost inside the arm. Trying to fix all cases. ~Z if(!wrapped) for(var/obj/item/thing in src.contents) @@ -123,7 +126,7 @@ wrapped = I return else - user << "\red Your gripper cannot hold \the [target]." + user << "Your gripper cannot hold \the [target]." else if(istype(target,/obj/machinery/power/apc)) var/obj/machinery/power/apc/A = target @@ -140,7 +143,7 @@ A.charging = 0 A.update_icon() - user.visible_message("\red [user] removes the power cell from [A]!", "You remove the power cell.") + user.visible_message("[user] removes the power cell from [A]!", "You remove the power cell.") //TODO: Matter decompiler. /obj/item/weapon/matter_decompiler @@ -173,7 +176,7 @@ for(var/mob/M in T) if(istype(M,/mob/living/simple_animal/lizard) || istype(M,/mob/living/simple_animal/mouse)) - src.loc.visible_message("\red [src.loc] sucks [M] into its decompiler. There's a horrible crunching noise.","\red It's a bit of a struggle, but you manage to suck [M] into your decompiler. It makes a series of visceral crunching noises.") + src.loc.visible_message("[src.loc] sucks [M] into its decompiler. There's a horrible crunching noise.","It's a bit of a struggle, but you manage to suck [M] into your decompiler. It makes a series of visceral crunching noises.") new/obj/effect/decal/cleanable/blood/splatter(get_turf(src)) del(M) if(wood) @@ -270,16 +273,16 @@ grabbed_something = 1 if(grabbed_something) - user << "\blue You deploy your decompiler and clear out the contents of \the [T]." + user << "You deploy your decompiler and clear out the contents of \the [T]." else - user << "\red Nothing on \the [T] is useful to you." + user << "Nothing on \the [T] is useful to you." return //PRETTIER TOOL LIST. /mob/living/silicon/robot/drone/installed_modules() if(weapon_lock) - src << "\red Weapon lock active, unable to use modules! Count:[weaponlock_time]" + src << "Weapon lock active, unable to use modules! Count:[weaponlock_time]" return if(!module) From 4b15f1a24959f55e0e9fa5206da206f9a7b1cd43 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 28 Feb 2015 16:47:41 +1030 Subject: [PATCH 024/168] Fixes #7877 --- code/game/objects/structures/door_assembly.dm | 4 ++++ code/game/objects/structures/girders.dm | 10 +++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index b4281a6033..ec55e6549e 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -248,6 +248,10 @@ glass = 1 else if(istype(S, /obj/item/stack/sheet/mineral) && S.sheettype) var/M = S.sheettype + // Ugly hack, will suffice for now. Need to fix it upstream as well, may rewrite mineral walls. ~Z + if(M in list("mhydrogen","osmium","tritium","platinum","iron")) + user << "You cannot make an airlock out of that material." + return if(S.get_amount() >= 2) playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.") diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 0512b814b2..85415cd162 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -26,7 +26,7 @@ var/damage = Proj.damage if(!istype(Proj, /obj/item/projectile/beam)) damage *= 0.4 //non beams do reduced damage - + health -= damage ..() if(health <= 0) @@ -144,6 +144,10 @@ if(S.sheettype) var/M = S.sheettype + // Ugly hack, will suffice for now. Need to fix it upstream as well, may rewrite mineral walls. ~Z + if(M in list("mhydrogen","osmium","tritium","platinum","iron")) + user << "You cannot plate the girder in that material." + return if(!anchored) if(S.amount < 2) return S.use(2) @@ -271,11 +275,11 @@ //Girders only provide partial cover. There's a chance that the projectiles will just pass through. (unless you are trying to shoot the girder) if(Proj.original != src && !prob(cover)) return -1 //pass through - + //Tasers and the like should not damage cultgirders. if(!(Proj.damage_type == BRUTE || Proj.damage_type == BURN)) return - + health -= Proj.damage ..() if(health <= 0) From 71ecceec9edb319385a37985e16740832fc78728 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 28 Feb 2015 16:51:37 +1030 Subject: [PATCH 025/168] Fixes #8226 --- code/modules/reagents/reagent_containers/food/snacks.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index df5a1f0dbf..9ab669b4bb 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -481,14 +481,14 @@ user.drop_from_inventory(src) del(src) -/obj/item/weapon/reagent_containers/food/snacks/throw_impact(atom/hit_atom) +/obj/item/weapon/reagent_containers/food/snacks/egg/throw_impact(atom/hit_atom) ..() new/obj/effect/decal/cleanable/egg_smudge(src.loc) src.reagents.reaction(hit_atom, TOUCH) src.visible_message("\red [src.name] has been squashed.","\red You hear a smack.") del(src) -/obj/item/weapon/reagent_containers/food/snacks/attackby(obj/item/weapon/W as obj, mob/user as mob) +/obj/item/weapon/reagent_containers/food/snacks/egg/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype( W, /obj/item/toy/crayon )) var/obj/item/toy/crayon/C = W var/clr = C.colourName From 227fda7b4c3a578eb90f0ee66861207938e9d8c7 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 28 Feb 2015 16:59:37 +1030 Subject: [PATCH 026/168] Fixes #8245 --- code/modules/hydroponics/seed_datums.dm | 2 +- icons/obj/hydroponics_products.dmi | Bin 12618 -> 12610 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index 1ee86c22f4..d47a6582a9 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -916,7 +916,7 @@ set_trait(TRAIT_PRODUCTION,5) set_trait(TRAIT_YIELD,3) set_trait(TRAIT_POTENCY,10) - set_trait(TRAIT_PRODUCT_ICON,"treefruit") + set_trait(TRAIT_PRODUCT_ICON,"cherry") set_trait(TRAIT_PRODUCT_COLOUR,"#8C0101") set_trait(TRAIT_PLANT_ICON,"tree2") diff --git a/icons/obj/hydroponics_products.dmi b/icons/obj/hydroponics_products.dmi index 4f9911debeae35441836ef48d3e741dac76ff042..7708c4896aa348c9e443aec5759ff89816ab741b 100644 GIT binary patch delta 12102 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 QxPL`aR!yc#$|Cgt0S1Sn(f|Me From a0452f34234af5ea9e1dad6baa9d97006742413a Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 28 Feb 2015 17:08:30 +1030 Subject: [PATCH 027/168] Alternative fix for golem damage. --- code/modules/mob/living/carbon/human/species/species.dm | 4 ++-- code/modules/organs/organ_external.dm | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 943f90bcca..ea4f9f9d41 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -35,8 +35,8 @@ /datum/unarmed_attack/bite ) var/list/unarmed_attacks = null // For empty hand harm-intent attack - var/brute_mod = null // Physical damage reduction/malus. - var/burn_mod = null // Burn damage reduction/malus. + var/brute_mod = 1 // Physical damage multiplier. + var/burn_mod = 1 // Burn damage multiplier. // Death vars. var/gibber_type = /obj/effect/gibspawner/human diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 5aeb4c8bd7..4dcc006df6 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -84,8 +84,8 @@ if(istype(owner,/mob/living/carbon/human)) var/mob/living/carbon/human/H = owner if(H.species && H.species.flags & IS_SYNTHETIC) - brmod = (!isnull(H.species.brute_mod) ? H.species.brute_mod : 1) - bumod = (!isnull(H.species.burn_mod) ? H.species.burn_mod : 1) + brmod = H.species.brute_mod + bumod = H.species.burn_mod brute *= brmod //~2/3 damage for ROBOLIMBS burn *= bumod //~2/3 damage for ROBOLIMBS From b572763f7793c4546fefc1d929262ce2bf2a83d5 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 28 Feb 2015 17:19:21 +1030 Subject: [PATCH 028/168] Fixes #8253 --- code/modules/hydroponics/spreading/spreading_response.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/hydroponics/spreading/spreading_response.dm b/code/modules/hydroponics/spreading/spreading_response.dm index ccf74e4ef7..1f8a0cc468 100644 --- a/code/modules/hydroponics/spreading/spreading_response.dm +++ b/code/modules/hydroponics/spreading/spreading_response.dm @@ -63,8 +63,8 @@ victim.buckled = src victim.update_canmove() buckled_mob = victim - - if(victim.loc != src.loc) + var/turf/T = get_turf(src) + if(victim.loc != T && T.Enter(victim, get_turf(victim))) src.visible_message("Tendrils lash out from \the [src] and drag \the [victim] in!") victim.loc = src.loc victim << "Tendrils [pick("wind", "tangle", "tighten")] around you!" From 273a9e24801c4d0c276e033a9c1619445b792d21 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 28 Feb 2015 17:19:38 +1030 Subject: [PATCH 029/168] Should stop plants spreading through diagonal windows. --- .../hydroponics/spreading/spreading_growth.dm | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/code/modules/hydroponics/spreading/spreading_growth.dm b/code/modules/hydroponics/spreading/spreading_growth.dm index 0729b2b343..64ef1b55c6 100644 --- a/code/modules/hydroponics/spreading/spreading_growth.dm +++ b/code/modules/hydroponics/spreading/spreading_growth.dm @@ -1,9 +1,17 @@ #define NEIGHBOR_REFRESH_TIME 100 +/obj/effect/plant/proc/get_cardinal_neighbors() + var/list/cardinal_neighbors = list() + for(var/check_dir in cardinal) + var/turf/simulated/T = get_step(get_turf(src), check_dir) + if(istype(T)) + cardinal_neighbors |= T + return cardinal_neighbors + /obj/effect/plant/proc/update_neighbors() // Update our list of valid neighboring turfs. neighbors = list() - for(var/turf/simulated/floor/floor in range(1,src)) + for(var/turf/simulated/floor in get_cardinal_neighbors()) if(get_dist(parent, floor) > spread_distance) continue if((locate(/obj/effect/plant) in floor.contents) || (locate(/obj/effect/dead_plant) in floor.contents) ) @@ -80,10 +88,12 @@ // Kill off our plant. if(plant) plant.die() // This turf is clear now, let our buddies know. - var/turf/T = get_turf(src) - for(var/obj/effect/plant/neighbor in range(1,src)) - neighbor.neighbors |= T - plant_controller.add_plant(neighbor) + for(var/turf/simulated/check_turf in get_cardinal_neighbors()) + if(!istype(check_turf)) + continue + for(var/obj/effect/plant/neighbor in check_turf.contents) + neighbor.neighbors |= check_turf + plant_controller.add_plant(neighbor) spawn(1) if(src) del(src) #undef NEIGHBOR_REFRESH_TIME \ No newline at end of file From 0beb6259f639f27083ca5fd1a482b8ac7977f56c Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 28 Feb 2015 17:29:26 +1030 Subject: [PATCH 030/168] Partial fix for #8068. --- code/game/machinery/bots/secbot.dm | 7 ++++++- code/game/objects/items/weapons/handcuffs.dm | 18 +++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index 6aa43c1b39..b7809c4460 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -350,7 +350,12 @@ Auto Patrol: []"}, if(istype(src.target,/mob/living/carbon)) var/mob/living/carbon/C = target - if(!C.handcuffed && !src.arrest_type) + var/wearing_hardsuit + if(istype(C,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = C + if(istype(H.back, /obj/item/weapon/rig) && istype(H.gloves,/obj/item/clothing/gloves/rig)) + wearing_hardsuit = 1 + if(!wearing_hardsuit && !C.handcuffed && !src.arrest_type) playsound(src.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -2) mode = SECBOT_ARREST visible_message("\red [src] is trying to put handcuffs on [src.target]!") diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 246636890d..5ed83d086b 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -28,7 +28,7 @@ if (C == user) place_handcuffs(user, user) return - + //check for an aggressive grab for (var/obj/item/weapon/grab/G in C.grabbed_by) if (G.loc == user && G.state >= GRAB_AGGRESSIVE) @@ -41,11 +41,15 @@ if (ishuman(target)) var/mob/living/carbon/human/H = target - + if (!H.has_organ_for_slot(slot_handcuffed)) - user << "\red \The [H] needs at least two wrists before you can cuff them together!" + user << "\The [H] needs at least two wrists before you can cuff them together!" return - + + if(istype(H.gloves,/obj/item/clothing/gloves/rig)) // Can't cuff someone who's in a deployed hardsuit. + user << "The cuffs won't fit around \the [H.gloves]!" + return + H.attack_log += text("\[[time_stamp()]\] Has been handcuffed (attempt) by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Attempted to handcuff [H.name] ([H.ckey])") msg_admin_attack("[key_name(user)] attempted to handcuff [key_name(H)]") @@ -62,7 +66,7 @@ feedback_add_details("handcuffs","H") O.process() return - + if (ismonkey(target)) var/mob/living/carbon/monkey/M = target var/obj/effect/equip_e/monkey/O = new /obj/effect/equip_e/monkey( ) @@ -155,13 +159,13 @@ var/last_chew = 0 var/turf/p_loc_m = C.loc playsound(src.loc, cuff_sound, 30, 1, -2) user.visible_message("\red [user] is trying to put handcuffs on [C]!") - + if (ishuman(C)) var/mob/living/carbon/human/H = C if (!H.has_organ_for_slot(slot_handcuffed)) user << "\red \The [H] needs at least two wrists before you can cuff them together!" return - + spawn(30) if(!C) return if(p_loc == user.loc && p_loc_m == C.loc) From 38d959e9f8c3fad97f53db5341164b34cf6dd744 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 28 Feb 2015 17:34:31 +1030 Subject: [PATCH 031/168] Should fix light level reporting. --- code/modules/hydroponics/trays/tray.dm | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index d915a116c5..19f181d03e 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -592,15 +592,20 @@ if(!environment) //We're in a crate or nullspace, bail out. return - var/area/A = T.loc - var/light_available - if(A) - if(A.lighting_use_dynamic) - light_available = max(0,min(10,T.lighting_lumcount)-5) - else - light_available = 5 + var/light_string + if(closed_system && mechanical) + light_string = "that the internal lights are set to [tray_light] lumens" + else + var/area/A = T.loc + var/light_available + if(A) + if(A.lighting_use_dynamic) + light_available = max(0,min(10,T.lighting_lumcount)-5) + else + light_available = 5 + light_string = "a light level of [light_available] lumens" - usr << "The tray's sensor suite is reporting a light level of [light_available] lumens and a temperature of [environment.temperature]K." + usr << "The tray's sensor suite is reporting [light_string] and a temperature of [environment.temperature]K." /obj/machinery/portable_atmospherics/hydroponics/verb/close_lid_verb() set name = "Toggle Tray Lid" From a8c315ad525929acb6e95fe03c222bb09414710d Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 26 Feb 2015 00:41:46 -0500 Subject: [PATCH 032/168] Updates rig emp_act EMPing hardsuits drains a bit of charge. Module damage is dealt to damaged modules first. Various other adjustments. --- .../spacesuits/rig/modules/computer.dm | 30 +++++++++- code/modules/clothing/spacesuits/rig/rig.dm | 60 ++++++++++++++----- .../clothing/spacesuits/rig/rig_pieces.dm | 4 +- .../clothing/spacesuits/rig/suits/light.dm | 5 +- .../clothing/spacesuits/rig/suits/station.dm | 1 + 5 files changed, 80 insertions(+), 20 deletions(-) diff --git a/code/modules/clothing/spacesuits/rig/modules/computer.dm b/code/modules/clothing/spacesuits/rig/modules/computer.dm index 3d66c64602..a6c549b666 100644 --- a/code/modules/clothing/spacesuits/rig/modules/computer.dm +++ b/code/modules/clothing/spacesuits/rig/modules/computer.dm @@ -441,4 +441,32 @@ drain_loc = null interfaced_with = null - total_power_drained = 0 \ No newline at end of file + total_power_drained = 0 + +/* +//Maybe make this use power when active or something +/obj/item/rig_module/emp_shielding + name = "\improper EMP dissipation module" + desc = "A bewilderingly complex bundle of fiber optics and chips." + toggleable = 1 + usable = 0 + + activate_string = "Enable active EMP shielding" + deactivate_string = "Disable active EMP shielding" + + interface_name = "active EMP shielding system" + interface_desc = "A highly experimental system that augments the hardsuit's existing EM shielding." + var/protection_amount = 20 + +/obj/item/rig_module/emp_shielding/activate() + if(!..()) + return + + holder.emp_protection += protection_amount + +/obj/item/rig_module/emp_shielding/deactivate() + if(!..()) + return + + holder.emp_protection = max(0,(holder.emp_protection - protection_amount)) +*/ diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 5d1addd471..6ce4c07293 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -72,6 +72,8 @@ var/vision_restriction var/offline_vision_restriction = 1 // 0 - none, 1 - welder vision, 2 - blind. Maybe move this to helmets. + var/emp_protection = 0 + // Wiring! How exciting. var/datum/wires/rig/wires var/datum/effect/effect/system/spark_spread/spark_system @@ -336,6 +338,7 @@ for(var/obj/item/rig_module/module in installed_modules) module.deactivate() offline = 2 + malfunction_delay = 0 //ensures that people aren't stuck in their suit if the cell runs out while malfunctioning. chest.slowdown = offline_slowdown return @@ -416,7 +419,7 @@ data["aicontrol"] = control_overridden data["aioverride"] = ai_override_enabled data["securitycheck"] = security_check_enabled - data["malf"] = malfunctioning + data["malf"] = malfunction_delay var/list/module_list = list() @@ -686,13 +689,20 @@ //Todo /obj/item/weapon/rig/proc/malfunction() - return 0 - -/obj/item/weapon/rig/emp_act(severity) - malfunctioning += severity*10 - if(malfunction_delay <= 0) - malfunction_delay = 20 - take_hit(severity*10,"electrical pulse") + return 0 + +/obj/item/weapon/rig/emp_act(severity_class) + //set malfunctioning + if(emp_protection < 40) + malfunctioning += 10 + if(malfunction_delay <= 0) + malfunction_delay = max(malfunction_delay, round(30/severity_class)) + + //drain some charge + if(cell) cell.emp_act(severity_class + 15) + + //possibly damage some modules + take_hit((100/severity_class), "electrical pulse", 1) /obj/item/weapon/rig/proc/shock(mob/user) if (electrocute_mob(user, cell, src)) @@ -705,29 +715,49 @@ if(!installed_modules.len) return - if(!prob(max(0,(damage-(chest ? chest.breach_threshold : 0))))) + var/chance + if(!is_emp) + chance = 2*max(0, damage - (chest? chest.breach_threshold : 0)) + else + //Want this to be roughly independant of the number of modules, that way people designing hardsuits + //don't have to worry (as much) about how adding that extra module will affect emp resiliance. + chance = max(0, damage - emp_protection)*min(installed_modules.len/15, 1) + + if(!prob(chance)) return + //deal addition damage to already damaged module first. + //This way the chances of a module being disabled aren't so remote. var/list/valid_modules = list() + var/list/damaged_modules = list() for(var/obj/item/rig_module/module in installed_modules) if(module.damage < 2) valid_modules |= module + if(module.damage > 0) + damaged_modules |= module - if(!valid_modules.len) - return + var/obj/item/rig_module/dam_module = null + if(damaged_modules.len) + dam_module = pick(damaged_modules) + else if(valid_modules.len) + dam_module = pick(valid_modules) + + if(!dam_module) return - var/obj/item/rig_module/dam_module = pick(valid_modules) dam_module.damage++ if(!source) source = "hit" - if(wearer) - wearer << "The [source] has [dam_module.damage >= 2 ? "destroyed" : "damaged"] your [dam_module.interface_name]!" + if(wearer) + if(dam_module.damage >= 2) + wearer << "The [source] has disabled your [dam_module.interface_name]!" + else + wearer << "The [source] has damaged your [dam_module.interface_name]!" dam_module.deactivate() /obj/item/weapon/rig/proc/malfunction_check(var/mob/living/carbon/human/user) - if(malfunctioning) + if(malfunction_delay) user << "ERROR: Hardware fault. Rebooting interface..." return 1 return 0 diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces.dm b/code/modules/clothing/spacesuits/rig/rig_pieces.dm index fd802ecb63..4a51960524 100644 --- a/code/modules/clothing/spacesuits/rig/rig_pieces.dm +++ b/code/modules/clothing/spacesuits/rig/rig_pieces.dm @@ -39,7 +39,9 @@ flags_inv = HIDEJUMPSUIT|HIDETAIL flags = STOPPRESSUREDAMAGE | THICKMATERIAL | AIRTIGHT slowdown = 0 - breach_threshold = 35 + //With 0.05 resiliance, will reach 10 breach damage after 18 laser carbine blasts. Completely immune to smg hits. + breach_threshold = 28 + resilience = 0.05 can_breach = 1 sprite_sheets = list("Tajara" = 'icons/mob/species/tajaran/suit.dmi',"Unathi" = 'icons/mob/species/unathi/suit.dmi') supporting_limbs = list() diff --git a/code/modules/clothing/spacesuits/rig/suits/light.dm b/code/modules/clothing/spacesuits/rig/suits/light.dm index 6c89a0058b..3471fa0473 100644 --- a/code/modules/clothing/spacesuits/rig/suits/light.dm +++ b/code/modules/clothing/spacesuits/rig/suits/light.dm @@ -6,6 +6,7 @@ suit_type = "light suit" allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/cell) armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) + emp_protection = 10 slowdown = 0 flags = STOPPRESSUREDAMAGE | THICKMATERIAL offline_slowdown = 0 @@ -54,6 +55,7 @@ desc = "A unique, vaccum-proof suit of nano-enhanced armor designed specifically for Spider Clan assassins." icon_state = "ninja_rig" armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) + emp_protection = 40 slowdown = 0 req_access = list(access_syndicate) @@ -75,9 +77,6 @@ ..() -/obj/item/weapon/rig/light/ninja/malfunction_check() - return 0 //even as strong as ninjas are, they may not be able to afford being blocked from switching modules for 20 seconds - /obj/item/weapon/rig/light/stealth name = "stealth suit control module" suit_type = "stealth" diff --git a/code/modules/clothing/spacesuits/rig/suits/station.dm b/code/modules/clothing/spacesuits/rig/suits/station.dm index 44959068eb..ea2c5fc982 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station.dm @@ -7,6 +7,7 @@ slowdown = 3 offline_slowdown = 10 offline_vision_restriction = 2 + emp_protection = -20 allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd) From 55a3b94995400e9f00ee6ea862d36f5027385e63 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 28 Feb 2015 03:33:16 -0500 Subject: [PATCH 033/168] Hardsuit adjustments, fixes Default inherited offline_slowdown set to 3, as most hardsuits use this value. ERT no longer get rad immunity, they have enough advantages - instead only ERT engineers get that. ERT engineer gauntlets are also now insulated, allowing them to do wiring work in space. Fixed a compile error. Fixed mounted laser cannons taking too long to recharge. --- code/modules/clothing/spacesuits/rig/rig.dm | 4 ++-- code/modules/clothing/spacesuits/rig/suits/alien.dm | 3 ++- code/modules/clothing/spacesuits/rig/suits/combat.dm | 1 - code/modules/clothing/spacesuits/rig/suits/ert.dm | 9 +++++++-- code/modules/clothing/spacesuits/rig/suits/merc.dm | 1 - code/modules/clothing/spacesuits/rig/suits/station.dm | 3 --- code/modules/projectiles/guns/energy/laser.dm | 2 +- 7 files changed, 12 insertions(+), 11 deletions(-) diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 6ce4c07293..e9dd834356 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -68,7 +68,7 @@ var/sealing // Keeps track of seal status independantly of canremove. var/offline = 1 // Should we be applying suit maluses? - var/offline_slowdown = 10 // If the suit is deployed and unpowered, it sets slowdown to this. + var/offline_slowdown = 3 // If the suit is deployed and unpowered, it sets slowdown to this. var/vision_restriction var/offline_vision_restriction = 1 // 0 - none, 1 - welder vision, 2 - blind. Maybe move this to helmets. @@ -710,7 +710,7 @@ return 1 return 0 -/obj/item/weapon/rig/proc/take_hit(damage,source) +/obj/item/weapon/rig/proc/take_hit(damage, source, is_emp=0) if(!installed_modules.len) return diff --git a/code/modules/clothing/spacesuits/rig/suits/alien.dm b/code/modules/clothing/spacesuits/rig/suits/alien.dm index 5b35d6a139..cb64d2be44 100644 --- a/code/modules/clothing/spacesuits/rig/suits/alien.dm +++ b/code/modules/clothing/spacesuits/rig/suits/alien.dm @@ -4,6 +4,7 @@ suit_type = "NT breacher" icon_state = "breacher_rig_cheap" armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 70, bio = 100, rad = 50) + emp_protection = -20 slowdown = 6 offline_slowdown = 10 vision_restriction = 1 @@ -16,4 +17,4 @@ icon_state = "breacher_rig" armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 80) vision_restriction = 0 - slowdown = 4 \ No newline at end of file + slowdown = 4 diff --git a/code/modules/clothing/spacesuits/rig/suits/combat.dm b/code/modules/clothing/spacesuits/rig/suits/combat.dm index 55716179c6..9be2576838 100644 --- a/code/modules/clothing/spacesuits/rig/suits/combat.dm +++ b/code/modules/clothing/spacesuits/rig/suits/combat.dm @@ -8,7 +8,6 @@ suit_type = "combat hardsuit" armor = list(melee = 80, bullet = 65, laser = 50, energy = 15, bomb = 80, bio = 100, rad = 60) slowdown = 1 - offline_slowdown = 3 offline_vision_restriction = 1 helm_type = /obj/item/clothing/head/helmet/space/rig/combat diff --git a/code/modules/clothing/spacesuits/rig/suits/ert.dm b/code/modules/clothing/spacesuits/rig/suits/ert.dm index d3db4baf84..121f028686 100644 --- a/code/modules/clothing/spacesuits/rig/suits/ert.dm +++ b/code/modules/clothing/spacesuits/rig/suits/ert.dm @@ -7,13 +7,12 @@ desc = "A suit worn by the commander of a NanoTrasen Emergency Response Team. Has blue highlights. Armoured and space ready." suit_type = "ERT commander" icon_state = "ert_commander_rig" - offline_slowdown = 3 helm_type = /obj/item/clothing/head/helmet/space/rig/ert req_access = list(access_cent_specops) - armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100) + armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 60) allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/crowbar, \ /obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/wirecutters, /obj/item/weapon/wrench, /obj/item/device/multitool, \ /obj/item/device/radio, /obj/item/device/analyzer, /obj/item/weapon/gun/energy/laser, /obj/item/weapon/gun/energy/pulse_rifle, \ @@ -30,6 +29,9 @@ desc = "A suit worn by the engineering division of a NanoTrasen Emergency Response Team. Has orange highlights. Armoured and space ready." suit_type = "ERT engineer" icon_state = "ert_engineer_rig" + armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100) + + glove_type = /obj/item/clothing/gloves/rig/ert_engineer initial_modules = list( /obj/item/rig_module/ai_container, @@ -38,6 +40,9 @@ /obj/item/rig_module/device/rcd ) +/obj/item/clothing/gloves/rig/ert_engineer + siemens_coefficient = 0 + /obj/item/weapon/rig/ert/medical name = "ERT-M suit control module" desc = "A suit worn by the medical division of a NanoTrasen Emergency Response Team. Has white highlights. Armoured and space ready." diff --git a/code/modules/clothing/spacesuits/rig/suits/merc.dm b/code/modules/clothing/spacesuits/rig/suits/merc.dm index 22add92014..8e7b70d5f2 100644 --- a/code/modules/clothing/spacesuits/rig/suits/merc.dm +++ b/code/modules/clothing/spacesuits/rig/suits/merc.dm @@ -9,7 +9,6 @@ suit_type = "crimson hardsuit" armor = list(melee = 80, bullet = 65, laser = 50, energy = 15, bomb = 80, bio = 100, rad = 60) slowdown = 1 - offline_slowdown = 3 offline_vision_restriction = 1 helm_type = /obj/item/clothing/head/helmet/space/rig/merc diff --git a/code/modules/clothing/spacesuits/rig/suits/station.dm b/code/modules/clothing/spacesuits/rig/suits/station.dm index ea2c5fc982..74fd7a16fe 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station.dm @@ -57,7 +57,6 @@ icon_state = "science_rig" armor = list(melee = 15, bullet = 15, laser = 80, energy = 80, bomb = 60, bio = 100, rad = 100) slowdown = 1 - offline_slowdown = 3 offline_vision_restriction = 1 helm_type = /obj/item/clothing/head/helmet/space/rig/ert @@ -80,7 +79,6 @@ icon_state = "medical_rig" armor = list(melee = 30, bullet = 15, laser = 20, energy = 60, bomb = 30, bio = 100, rad = 100) slowdown = 1 - offline_slowdown = 3 offline_vision_restriction = 1 allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical,/obj/item/roller ) @@ -101,7 +99,6 @@ icon_state = "hazard_rig" armor = list(melee = 60, bullet = 10, laser = 30, energy = 5, bomb = 45, bio = 100, rad = 10) slowdown = 1 - offline_slowdown = 3 offline_vision_restriction = 1 helm_type = /obj/item/clothing/head/helmet/space/rig/ert diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 28f95d8211..45cd4b0664 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -52,7 +52,7 @@ obj/item/weapon/gun/energy/laser/retro /obj/item/weapon/gun/energy/lasercannon/mounted self_recharge = 1 use_external_power = 1 - recharge_time = 25 + recharge_time = 8 /obj/item/weapon/gun/energy/xray name = "xray laser gun" From a026922115f1ce182b002ee5fd8b5fc4a41c39c8 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 28 Feb 2015 04:10:04 -0500 Subject: [PATCH 034/168] More hardsuit fixes, ion rifle fix Fixes modules being usable when destroyed. Fixes charge display for fractional charge values. Fixes ion rifles EMPing themselves. --- code/modules/clothing/spacesuits/rig/modules/modules.dm | 5 +++-- code/modules/clothing/spacesuits/rig/rig.dm | 6 +++--- code/modules/projectiles/guns/energy/special.dm | 4 +--- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/code/modules/clothing/spacesuits/rig/modules/modules.dm b/code/modules/clothing/spacesuits/rig/modules/modules.dm index 830e0d784c..17498a31b2 100644 --- a/code/modules/clothing/spacesuits/rig/modules/modules.dm +++ b/code/modules/clothing/spacesuits/rig/modules/modules.dm @@ -138,6 +138,7 @@ if(damage >= 2) usr << "The [interface_name] is damaged beyond use!" + return 0 if(world.time < next_use) usr << "You cannot use the [interface_name] again so soon." @@ -147,7 +148,7 @@ usr << "The suit is not initialized." return 0 - if(usr.lying || usr.stat || usr.stunned || usr.paralysis) + if(usr.lying || usr.stat || usr.stunned || usr.paralysis || usr.weakened) usr << "You cannot use the suit in this state." return 0 @@ -157,7 +158,7 @@ if(holder.security_check_enabled && !holder.check_suit_access(usr)) usr << "Access denied." - return + return 0 if(!holder.check_power_cost(usr, use_power_cost, 0, src, (istype(usr,/mob/living/silicon ? 1 : 0) ) ) ) return 0 diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 7a09fe5bc7..2f5d1f5474 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -313,8 +313,9 @@ if(!istype(wearer) || loc != wearer || wearer.back != src || canremove || !cell || cell.charge <= 0) if(!cell || cell.charge <= 0) - if(electrified >0) + if(electrified > 0) electrified = 0 + malfunction_delay = 0 //ensures that people aren't stuck in their suit if the cell runs out while malfunctioning. if(!offline) if(istype(wearer)) if(!canremove) @@ -338,7 +339,6 @@ for(var/obj/item/rig_module/module in installed_modules) module.deactivate() offline = 2 - malfunction_delay = 0 //ensures that people aren't stuck in their suit if the cell runs out while malfunctioning. chest.slowdown = offline_slowdown return @@ -409,7 +409,7 @@ data["boots"] = (boots ? "[boots.name]" : "None.") data["chest"] = (chest ? "[chest.name]" : "None.") - data["charge"] = cell ? cell.charge : 0 + data["charge"] = cell ? round(cell.charge,1) : 0 data["maxcharge"] = cell ? cell.maxcharge : 0 data["chargestatus"] = cell ? Floor((cell.charge/cell.maxcharge)*50) : 0 diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 76bcebac3c..31480de9c8 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -13,9 +13,7 @@ projectile_type = /obj/item/projectile/ion /obj/item/weapon/gun/energy/ionrifle/emp_act(severity) - if(severity > 2) - return //so it doesn't EMP itself, I guess - ..() + ..(max(severity, 2)) //so it doesn't EMP itself, I guess /obj/item/weapon/gun/energy/ionrifle/update_icon() ..() From 00becda446f97342c09abc943c13d2d1421cfb67 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sat, 28 Feb 2015 14:29:30 +0100 Subject: [PATCH 035/168] Few Fixes. Fixes #8304. Fixes #8306. --- code/modules/mob/new_player/sprite_accessories.dm | 2 +- maps/exodus-5.dmm | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index 4a9f5509ca..240093fec9 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -678,7 +678,7 @@ taj_sideburns name = "Tajara Sideburns" - icon_state = "facial_mutton" + icon_state = "facial_sideburns" species_allowed = list("Tajara") taj_mutton diff --git a/maps/exodus-5.dmm b/maps/exodus-5.dmm index 94c371d1eb..e026786fa4 100644 --- a/maps/exodus-5.dmm +++ b/maps/exodus-5.dmm @@ -812,7 +812,9 @@ "pF" = (/obj/machinery/door_control{id = "riso3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor,/area/research_outpost/iso3_access) "pG" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/iso1) "pH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/yellow,/turf/simulated/floor,/area/research_outpost/iso3_access) +"pI" = (/obj/machinery/mineral/output,/obj/machinery/conveyor{dir = 4; id = "mining_north"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/north_outpost) "pJ" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/iso2) +"pK" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/obj/machinery/conveyor_switch{id = "mining_north"; pixel_x = -5},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "pM" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/iso3) "pN" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore2) "pO" = (/obj/structure/transit_tube{icon_state = "E-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) @@ -945,7 +947,6 @@ "sl" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "sm" = (/obj/structure/disposalpipe/junction/yjunction,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "sn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/mine/north_outpost) -"so" = (/obj/machinery/mineral/output,/obj/machinery/conveyor{dir = 8; id = "mining_north"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/north_outpost) "sp" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal/deliveryChute{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/north_outpost) "sq" = (/obj/machinery/mineral/input,/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_north"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/north_outpost) "sr" = (/obj/machinery/mineral/unloading_machine{icon_state = "unloader-corner"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/north_outpost) @@ -958,7 +959,6 @@ "sy" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/north_outpost) "sz" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_north"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/north_outpost) "sA" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"sB" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/obj/machinery/conveyor_switch{id = "mining_nort"; pixel_y = 10},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "sC" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "sD" = (/turf/simulated/mineral/random/high_chance,/area/mine/explored) "sE" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) @@ -1465,9 +1465,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLrArAqLqLqLqLqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLrArAqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkadadadadadadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaaaaaabkbkbkbkbkbkbkababesgygygyrvgygygygyrJrKrLrMrNrOrPrQrRrIrSrTrIbkbkbkbkbkbkbkbkbkbkabababbkbkbkbkabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLrArAqLqLqLqLqLqLqLrArArAqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkadadadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaaaabkbkbkbkbkbkbkababesesgygyrvgygygygyrUrVrWrXrYrZsasbscsdsesfrIbkbkbkbkbkbkbkbkbkbkbkbkababbkbkbkbkababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLrArArArAqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaabaaaaaaaabkbkbkbkbkbkbkabababesgygyrvgygygygyrIrIrIrIrIrIsgshsirIsjskrIbkbkbkbkbkbkbkbkbkbkbkbkbkbkababbkbkbkabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLrArArArAqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaabkbkbkaaaabkbkbkbkbkbkbkbkbkabesgygyrFslsmxNxNsnspsosrsqstsssvrzswsxsyrIbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabababbkbkababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLrArArArAqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaabkbkbkaaaabkbkbkbkbkbkbkbkbkabesgygyrFslsmxNxNsnsppIsrsqstsssvrzswsxsyrIbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabababbkbkababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLrAqLqLqLqLqLqLqLqLqLqLqLqLqLrArArArAqLqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaabkbkbkaaaaaabkbkbkbkbkbkbkbkabesgygygygyxugygyrIrIrIrIszrIrIrIrIrIrIrIrIbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLrArArAqLqLqLqLqLqLqLqLqLqLqLqLqLrArArAqLqLqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaaaaaabkbkbkbkbkbkbkbkabesesgygygyxugygygygysAsBsCsCdXbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLrArArAqLqLqLqLqLqLqLqLqLqLqLqLqLrArArAqLqLqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaaaaaabkbkbkbkbkbkbkbkabesesgygygyxugygygygysApKsCsCdXbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLrArArAqLqLqLqLqLqLqLqLqLqLqLqLqLrArArAqLqLqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaaaaaaaabkbkbkbkbkbkbkababesgygyrJsFrigygygygygygygydXbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLrArArAqLqLqLqLqLqLqLqLqLqLqLrArArArArArAqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaaaaaabkbkbkbkbkbkbkababesgygypBsGpCgygygygygygygydXbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLrArArArAqLqLqLqLqLqLqLqLqLqLqLrArArArAqLqLqLqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaaaabkbkbkbkbkbkbkbkabesgygygyxugygygygygygygydXdXbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 00152ece1b933beb70edd284661d32ce65ec659c Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sat, 28 Feb 2015 16:11:58 +0100 Subject: [PATCH 036/168] Portable turret changes. Portable turrets now remember their last target (as long as it's valid) until they pop down, preventing them from firing randomly at all targets in view. Portable turrets no longer have increased firing rate simply from being in emagged mode. Lying down while turrets are in lethal mode no longer saves you, as intended. Power consumption updated accordingly. --- code/game/machinery/portable_turret.dm | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 8c04da619b..46b4f65506 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -56,6 +56,7 @@ var/datum/effect/effect/system/spark_spread/spark_system //the spark system, used for generating... sparks? var/wrenching = 0 + var/last_target //last target fired at, prevents turrets from erratically firing at all valid targets in range /obj/machinery/porta_turret/stationary lethal = 1 @@ -513,6 +514,9 @@ return TURRET_PRIORITY_TARGET //if the perp has passed all previous tests, congrats, it is now a "shoot-me!" nominee /obj/machinery/porta_turret/proc/tryToShootAt(var/list/mob/living/targets) + if(targets.len && last_target && (last_target in targets) && target(last_target)) + return 1 + while(targets.len > 0) var/mob/living/M = pick(targets) targets -= M @@ -538,6 +542,7 @@ update_icon() /obj/machinery/porta_turret/proc/popDown() //pops the turret down + last_target = null if(disabled) return if(raising || !raised) @@ -566,7 +571,8 @@ /obj/machinery/porta_turret/proc/target(var/mob/living/target) if(disabled) return - if(target && (target.stat != DEAD) && (!(target.lying) || emagged)) + if(target) + last_target = target spawn() popUp() //pop the turret up if it's not already up. set_dir(get_dir(src, target)) //even if you can't shoot, follow the target @@ -577,7 +583,7 @@ /obj/machinery/porta_turret/proc/shootAt(var/mob/living/target) //any emagged turrets will shoot extremely fast! This not only is deadly, but drains a lot power! - if(!(emagged || lethal)) //if it hasn't been emagged, it has to obey a cooldown rate + if(!emagged) //if it hasn't been emagged, it has to obey a cooldown rate if(last_fired || !raised) //prevents rapid-fire shooting, unless it's been emagged return last_fired = 1 @@ -603,11 +609,12 @@ A = new projectile(loc) playsound(loc, shot_sound, 75, 1) A.original = target - if(!(emagged || lethal)) - use_power(reqpower) - else - use_power(reqpower * 2) - //Shooting Code: + + // Lethal/emagged turrets use twice the power due to higher energy beams + // Emagged turrets again use twice as much power due to higher firing rates + use_power(reqpower * (2 * (emagged || lethal)) * (2 * emagged)) + + //Shooting Code: A.current = T A.yo = U.y - T.y A.xo = U.x - T.x From 8d1a92a0f5ab9fb61a86afadffd892a87364d559 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 28 Feb 2015 04:36:43 -0500 Subject: [PATCH 037/168] Hardsuit tweaks Spider fang blade uses power faster. Light hardsuits (minus ninja suit) have voidsuit-level breach thresholds. If the suit is malfunctioning when it runs out of power then you will need someone to cut you out. --- .../clothing/spacesuits/rig/modules/combat.dm | 2 +- code/modules/clothing/spacesuits/rig/rig.dm | 14 ++++++++------ code/modules/clothing/spacesuits/rig/suits/ert.dm | 1 + .../modules/clothing/spacesuits/rig/suits/light.dm | 10 +++++++++- code/modules/projectiles/guns/energy/laser.dm | 2 +- 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/code/modules/clothing/spacesuits/rig/modules/combat.dm b/code/modules/clothing/spacesuits/rig/modules/combat.dm index 605bff6be8..b106e41255 100644 --- a/code/modules/clothing/spacesuits/rig/modules/combat.dm +++ b/code/modules/clothing/spacesuits/rig/modules/combat.dm @@ -151,7 +151,7 @@ selectable = 1 toggleable = 1 use_power_cost = 50 - active_power_cost = 5 + active_power_cost = 10 passive_power_cost = 0 gun_type = /obj/item/weapon/gun/energy/crossbow/ninja diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 2f5d1f5474..d003d64d59 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -315,14 +315,13 @@ if(!cell || cell.charge <= 0) if(electrified > 0) electrified = 0 - malfunction_delay = 0 //ensures that people aren't stuck in their suit if the cell runs out while malfunctioning. if(!offline) if(istype(wearer)) if(!canremove) if (offline_slowdown < 3) wearer << "Your suit beeps stridently, and suddenly goes dead." else - wearer << "Your suit beeps stridently, and suddenly you're wearing a leaden mass of metal and plastic instead of a powered suit." + wearer << "Your suit beeps stridently, and suddenly you're wearing a leaden mass of metal and plastic composites instead of a powered suit." if(offline_vision_restriction == 1) wearer << "The suit optics flicker and die, leaving you with restricted vision." else if(offline_vision_restriction == 2) @@ -693,7 +692,7 @@ /obj/item/weapon/rig/emp_act(severity_class) //set malfunctioning - if(emp_protection < 40) + if(emp_protection < 30) //for ninjas, really. malfunctioning += 10 if(malfunction_delay <= 0) malfunction_delay = max(malfunction_delay, round(30/severity_class)) @@ -719,8 +718,8 @@ if(!is_emp) chance = 2*max(0, damage - (chest? chest.breach_threshold : 0)) else - //Want this to be roughly independant of the number of modules, that way people designing hardsuits - //don't have to worry (as much) about how adding that extra module will affect emp resiliance. + //Want this to be roughly independant of the number of modules, meaning that X emp hits will disable Y% of the suit's modules on average. + //that way people designing hardsuits don't have to worry (as much) about how adding that extra module will affect emp resiliance by 'soaking' hits for other modules chance = max(0, damage - emp_protection)*min(installed_modules.len/15, 1) if(!prob(chance)) @@ -758,7 +757,10 @@ /obj/item/weapon/rig/proc/malfunction_check(var/mob/living/carbon/human/user) if(malfunction_delay) - user << "ERROR: Hardware fault. Rebooting interface..." + if(offline) + user << "The suit is completely unresponsive." + else + user << "ERROR: Hardware fault. Rebooting interface..." return 1 return 0 diff --git a/code/modules/clothing/spacesuits/rig/suits/ert.dm b/code/modules/clothing/spacesuits/rig/suits/ert.dm index 121f028686..feec1f5810 100644 --- a/code/modules/clothing/spacesuits/rig/suits/ert.dm +++ b/code/modules/clothing/spacesuits/rig/suits/ert.dm @@ -41,6 +41,7 @@ ) /obj/item/clothing/gloves/rig/ert_engineer + name = "insulated gauntlets" siemens_coefficient = 0 /obj/item/weapon/rig/ert/medical diff --git a/code/modules/clothing/spacesuits/rig/suits/light.dm b/code/modules/clothing/spacesuits/rig/suits/light.dm index 3471fa0473..55442c0a02 100644 --- a/code/modules/clothing/spacesuits/rig/suits/light.dm +++ b/code/modules/clothing/spacesuits/rig/suits/light.dm @@ -19,6 +19,8 @@ /obj/item/clothing/suit/space/rig/light name = "suit" + breach_threshold = 18 //comparable to voidsuits + resilience = 0.2 /obj/item/clothing/gloves/rig/light name = "gloves" @@ -55,9 +57,11 @@ desc = "A unique, vaccum-proof suit of nano-enhanced armor designed specifically for Spider Clan assassins." icon_state = "ninja_rig" armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) - emp_protection = 40 + emp_protection = 40 //change this to 30 if too high. slowdown = 0 + chest_type = /obj/item/clothing/suit/space/rig/light/ninja + req_access = list(access_syndicate) initial_modules = list( @@ -77,6 +81,10 @@ ..() +/obj/item/clothing/suit/space/rig/light/ninja + breach_threshold = 28 //comparable to regular hardsuits + resilience = 0.05 + /obj/item/weapon/rig/light/stealth name = "stealth suit control module" suit_type = "stealth" diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 622c23d0ce..2bc36508d8 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -59,7 +59,7 @@ obj/item/weapon/gun/energy/retro /obj/item/weapon/gun/energy/lasercannon/mounted self_recharge = 1 use_external_power = 1 - recharge_time = 8 + recharge_time = 10 /obj/item/weapon/gun/energy/xray name = "xray laser gun" From 65e01c50c1d31026eef4971515d2776283c0e0ff Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sat, 28 Feb 2015 20:47:27 +0100 Subject: [PATCH 038/168] Fixes issue with borg remote access. Borgs had better remote access than even the AI, ignoring all distances if viewing through cameras. Introducing view limit. --- code/modules/nano/nanointeraction.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/nano/nanointeraction.dm b/code/modules/nano/nanointeraction.dm index 5b0a7ec01a..a9025ea70e 100644 --- a/code/modules/nano/nanointeraction.dm +++ b/code/modules/nano/nanointeraction.dm @@ -28,8 +28,10 @@ return STATUS_CLOSE if(lockcharge || stunned || weakened) return STATUS_DISABLED + if(custom_state.flags & NANO_IGNORE_DISTANCE) + return STATUS_INTERACTIVE // robots can interact with things they can see within their view range - if(!(custom_state.flags & NANO_IGNORE_DISTANCE) && (src_object in view(src))) + if((src_object in view(src)) && get_dist(src_object, src) <= src.client.view) return STATUS_INTERACTIVE // interactive (green visibility) return STATUS_DISABLED // no updates, completely disabled (red visibility) From 34e30fd76a142fa7b13e71f9bef161391d0f853d Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Sat, 28 Feb 2015 21:35:29 +0000 Subject: [PATCH 039/168] Properly fixes vines pulling through windoors --- code/modules/hydroponics/spreading/spreading_growth.dm | 2 +- code/modules/hydroponics/spreading/spreading_response.dm | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/code/modules/hydroponics/spreading/spreading_growth.dm b/code/modules/hydroponics/spreading/spreading_growth.dm index 64ef1b55c6..804ec8f08a 100644 --- a/code/modules/hydroponics/spreading/spreading_growth.dm +++ b/code/modules/hydroponics/spreading/spreading_growth.dm @@ -20,7 +20,7 @@ if(!isnull(seed.chems["pacid"])) spawn(rand(5,25)) floor.ex_act(3) continue - else if(!floor.Enter(src)) + if(!Adjacent(floor)) continue neighbors |= floor // Update all of our friends. diff --git a/code/modules/hydroponics/spreading/spreading_response.dm b/code/modules/hydroponics/spreading/spreading_response.dm index 1f8a0cc468..46db4af57b 100644 --- a/code/modules/hydroponics/spreading/spreading_response.dm +++ b/code/modules/hydroponics/spreading/spreading_response.dm @@ -60,11 +60,13 @@ if(buckled_mob) return + if(!Adjacent(victim)) + return + victim.buckled = src victim.update_canmove() buckled_mob = victim - var/turf/T = get_turf(src) - if(victim.loc != T && T.Enter(victim, get_turf(victim))) + if(victim.loc != get_turf(src)) src.visible_message("Tendrils lash out from \the [src] and drag \the [victim] in!") victim.loc = src.loc victim << "Tendrils [pick("wind", "tangle", "tighten")] around you!" From bdce7a8e413977eb6ce8021cbd3e5ccee1fdb16e Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 1 Mar 2015 15:21:15 +0100 Subject: [PATCH 040/168] Fixes #8322. When copying a photo new instances are created of relevant icons, instead of referencing them. --- code/modules/paperwork/photography.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index dcd48955bf..1b6756334c 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -311,9 +311,9 @@ var/global/photo_count = 0 var/obj/item/weapon/photo/p = new/obj/item/weapon/photo() p.name = name - p.icon = icon - p.tiny = tiny - p.img = img + p.icon = icon(icon, icon_state) + p.tiny = icon(tiny) + p.img = icon(img) p.desc = desc p.pixel_x = pixel_x p.pixel_y = pixel_y From df689a4f72b6f633a2f57f15efbec67ebd4ecbf8 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 1 Mar 2015 15:29:17 +0100 Subject: [PATCH 041/168] Increased check_rights flexibility. NanoUI interfaces no longer appear locked when admin observers look at them for too long. --- code/modules/admin/holder2.dm | 14 +++++++------- code/modules/nano/nanointeraction.dm | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 34b4cacde9..f5e2ac61cd 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -50,21 +50,21 @@ proc/admin_proc() NOTE: it checks usr! not src! So if you're checking somebody's rank in a proc which they did not call you will have to do something like if(client.holder.rights & R_ADMIN) yourself. */ -/proc/check_rights(rights_required, show_msg=1) - if(usr && usr.client) +/proc/check_rights(rights_required, show_msg=1, var/mob/user = usr) + if(user && user.client) if(rights_required) - if(usr.client.holder) - if(rights_required & usr.client.holder.rights) + if(user.client.holder) + if(rights_required & user.client.holder.rights) return 1 else if(show_msg) - usr << "Error: You do not have sufficient rights to do that. You require one of the following flags:[rights2text(rights_required," ")]." + user << "Error: You do not have sufficient rights to do that. You require one of the following flags:[rights2text(rights_required," ")]." else - if(usr.client.holder) + if(user.client.holder) return 1 else if(show_msg) - usr << "Error: You are not an admin." + user << "Error: You are not an admin." return 0 //probably a bit iffy - will hopefully figure out a better solution diff --git a/code/modules/nano/nanointeraction.dm b/code/modules/nano/nanointeraction.dm index a9025ea70e..645b5261bf 100644 --- a/code/modules/nano/nanointeraction.dm +++ b/code/modules/nano/nanointeraction.dm @@ -13,7 +13,7 @@ return STATUS_CLOSE // By default no mob can do anything with NanoUI /mob/dead/observer/can_use_topic() - if(check_rights(R_ADMIN, 0)) + if(check_rights(R_ADMIN, 0, src)) return STATUS_INTERACTIVE // Admins are more equal return STATUS_UPDATE // Ghosts can view updates From b82df371594aa857cf588b304ea086b60638c1b6 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 1 Mar 2015 20:51:07 +0100 Subject: [PATCH 042/168] The AI now have the ability to track senders of PDA messages. Can only track the original owner of a PDA. Cannot track the senders/receivers of intercepted messages. All other tracking conditions apply (camera coverage, no agent ID, etc.). --- code/game/objects/items/devices/PDA/PDA.dm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index f4f3b843b0..2825045fb2 100755 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -1067,6 +1067,17 @@ var/global/list/obj/item/device/pda/PDAs = list() new_message = 1 update_icon() +/obj/item/device/pda/ai/new_message(var/atom/movable/sending_unit, var/sender, var/sender_job, var/message) + var/track = "" + if(ismob(sending_unit.loc) && isAI(loc)) + track = "(Follow)" + + var/reception_message = "\icon[src] Message from [sender] ([sender_job]), \"[message]\" (Reply) [track]" + new_info(message_silent, newstone, reception_message) + + log_pda("[usr] (PDA: [sending_unit]) sent \"[message]\" to [name]") + new_message = 1 + /obj/item/device/pda/verb/verb_remove_id() set category = "Object" set name = "Remove id" From a11c7ba1c7d6d9ba5c062cb3e5750fc215e05795 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 2 Mar 2015 11:41:14 +0100 Subject: [PATCH 043/168] Fixes #8334. Removes references to the load_speed argument in load_map as it doesn't actually exist. For some reason the dmm_suit injects itself as an argument in airlocks. Putting a band-aid on the symptom. --- code/game/machinery/doors/airlock.dm | 4 +- code/modules/awaymissions/zlevel.dm | 109 ++++++++++++++------------- code/modules/maps/dmm_suite.dm | 3 +- 3 files changed, 58 insertions(+), 58 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 815bad9805..d15d393517 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1002,7 +1002,7 @@ About the new airlock wires panel: if(operating || welded || locked) return if(!forced) - //despite the name, this wire is for general door control. + //despite the name, this wire is for general door control. //Bolts are already covered by the check for locked, above if( !arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_OPEN_DOOR) ) return @@ -1076,7 +1076,7 @@ About the new airlock wires panel: emitter_resistance *= 3 //if assembly is given, create the new door from the assembly - if (assembly) + if (assembly && istype(assembly)) assembly_type = assembly.type electronics = assembly.electronics diff --git a/code/modules/awaymissions/zlevel.dm b/code/modules/awaymissions/zlevel.dm index d76d9d676b..b0ba29dcd0 100644 --- a/code/modules/awaymissions/zlevel.dm +++ b/code/modules/awaymissions/zlevel.dm @@ -1,54 +1,55 @@ -proc/createRandomZlevel() - if(awaydestinations.len) //crude, but it saves another var! - return - - var/list/potentialRandomZlevels = list() - world << "\red \b Searching for away missions..." - var/list/Lines = file2list("maps/RandomZLevels/fileList.txt") - if(!Lines.len) return - for (var/t in Lines) - if (!t) - continue - - t = trim(t) - if (length(t) == 0) - continue - else if (copytext(t, 1, 2) == "#") - continue - - var/pos = findtext(t, " ") - var/name = null - // var/value = null - - if (pos) - // No, don't do lowertext here, that breaks paths on linux - name = copytext(t, 1, pos) - // value = copytext(t, pos + 1) - else - // No, don't do lowertext here, that breaks paths on linux - name = t - - if (!name) - continue - - potentialRandomZlevels.Add(name) - - - if(potentialRandomZlevels.len) - world << "\red \b Loading away mission..." - - var/map = pick(potentialRandomZlevels) - var/file = file(map) - if(isfile(file)) - maploader.load_map(file, load_speed = 100) - - for(var/obj/effect/landmark/L in landmarks_list) - if (L.name != "awaystart") - continue - awaydestinations.Add(L) - - world << "\red \b Away mission loaded." - - else - world << "\red \b No away missions found." - return \ No newline at end of file +proc/createRandomZlevel() + if(awaydestinations.len) //crude, but it saves another var! + return + + var/list/potentialRandomZlevels = list() + world << "\red \b Searching for away missions..." + var/list/Lines = file2list("maps/RandomZLevels/fileList.txt") + if(!Lines.len) return + for (var/t in Lines) + if (!t) + continue + + t = trim(t) + if (length(t) == 0) + continue + else if (copytext(t, 1, 2) == "#") + continue + + var/pos = findtext(t, " ") + var/name = null + // var/value = null + + if (pos) + // No, don't do lowertext here, that breaks paths on linux + name = copytext(t, 1, pos) + // value = copytext(t, pos + 1) + else + // No, don't do lowertext here, that breaks paths on linux + name = t + + if (!name) + continue + + potentialRandomZlevels.Add(name) + + + if(potentialRandomZlevels.len) + world << "\red \b Loading away mission..." + + var/map = pick(potentialRandomZlevels) + var/file = file(map) + if(isfile(file)) + maploader.load_map(file) + world.log << "away mission loaded: [map]" + + for(var/obj/effect/landmark/L in landmarks_list) + if (L.name != "awaystart") + continue + awaydestinations.Add(L) + + world << "\red \b Away mission loaded." + + else + world << "\red \b No away missions found." + return diff --git a/code/modules/maps/dmm_suite.dm b/code/modules/maps/dmm_suite.dm index 87de0e758e..c263072f99 100644 --- a/code/modules/maps/dmm_suite.dm +++ b/code/modules/maps/dmm_suite.dm @@ -53,10 +53,9 @@ dmm_suite{ */ - verb/load_map(var/dmm_file as file, var/z_offset as num, var/load_speed as num) + verb/load_map(var/dmm_file as file, var/z_offset as num) // dmm_file: A .dmm file to load (Required). // z_offset: A number representing the z-level on which to start loading the map (Optional). - // load_speed: How many tiles should be loaded per second, defaults to no pause (Optional) verb/write_map(var/turf/t1 as turf, var/turf/t2 as turf, var/flags as num){ // t1: A turf representing one corner of a three dimensional grid (Required). From 98be5cbce892e51eb2f154bc47ba3a13e42d5aa3 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 2 Mar 2015 12:59:46 +0100 Subject: [PATCH 044/168] Synth medical sensors now report dead/alive status. Synths with medical augmentation sensors enabled will now see the dead/alive status of crew members with suit sensors set to at least binary level. --- code/defines/procs/hud.dm | 11 +++++++---- code/modules/mob/living/carbon/human/death.dm | 1 + code/modules/mob/living/carbon/human/human.dm | 3 ++- code/modules/mob/living/carbon/human/life.dm | 7 +++++++ code/modules/mob/living/living.dm | 2 ++ code/modules/mob/living/silicon/ai/ai.dm | 1 + code/modules/mob/living/silicon/robot/robot.dm | 1 + code/modules/mob/living/silicon/silicon.dm | 2 +- code/modules/mob/mob_helpers.dm | 7 +++++++ code/setup.dm | 1 + 10 files changed, 30 insertions(+), 6 deletions(-) diff --git a/code/defines/procs/hud.dm b/code/defines/procs/hud.dm index be678b8397..e572176ef9 100644 --- a/code/defines/procs/hud.dm +++ b/code/defines/procs/hud.dm @@ -12,12 +12,15 @@ proc/process_med_hud(var/mob/M, var/local_scanner, var/mob/Alt) if(P.Mob.see_invisible < patient.invisibility) continue - if(!(local_scanner || hassensorlevel(patient, SUIT_SENSOR_VITAL))) - continue - - P.Client.images += patient.hud_list[HEALTH_HUD] if(local_scanner) + P.Client.images += patient.hud_list[HEALTH_HUD] P.Client.images += patient.hud_list[STATUS_HUD] + else + var/sensor_level = getsensorlevel(patient) + if(sensor_level >= SUIT_SENSOR_VITAL) + P.Client.images += patient.hud_list[HEALTH_HUD] + if(sensor_level >= SUIT_SENSOR_BINARY) + P.Client.images += patient.hud_list[LIFE_HUD] //Security HUDs. Pass a value for the second argument to enable implant viewing or other special features. proc/process_sec_hud(var/mob/M, var/advanced_mode, var/mob/Alt) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 9571a789a8..41140f2d3c 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -30,6 +30,7 @@ BITSET(hud_updateflag, HEALTH_HUD) BITSET(hud_updateflag, STATUS_HUD) + BITSET(hud_updateflag, LIFE_HUD) handle_hud_list() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 5c047cd9dd..b95fbaf15c 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -5,7 +5,7 @@ icon = 'icons/mob/human.dmi' icon_state = "body_m_s" - var/list/hud_list[9] + var/list/hud_list[10] var/embedded_flag //To check if we've need to roll for damage on movement while an item is imbedded in us. /mob/living/carbon/human/New(var/new_loc, var/new_species = null) @@ -26,6 +26,7 @@ hud_list[HEALTH_HUD] = image('icons/mob/hud.dmi', src, "hudhealth100") hud_list[STATUS_HUD] = image('icons/mob/hud.dmi', src, "hudhealthy") + hud_list[LIFE_HUD] = image('icons/mob/hud.dmi', src, "hudhealthy") hud_list[ID_HUD] = image('icons/mob/hud.dmi', src, "hudunknown") hud_list[WANTED_HUD] = image('icons/mob/hud.dmi', src, "hudblank") hud_list[IMPLOYAL_HUD] = image('icons/mob/hud.dmi', src, "hudblank") diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 21657fce41..bf53542aec 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1576,6 +1576,13 @@ var/percentage_health = RoundHealth((health-config.health_threshold_crit)/(maxHealth-config.health_threshold_crit)*100) holder.icon_state = "hud[percentage_health]" hud_list[HEALTH_HUD] = holder + + if (BITTEST(hud_updateflag, LIFE_HUD)) + var/image/holder = hud_list[STATUS_HUD] + if(stat == DEAD) + holder.icon_state = "huddead" + else + holder.icon_state = "hudhealthy" if (BITTEST(hud_updateflag, STATUS_HUD)) var/foundVirus = 0 diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 8995183db9..419532d4b2 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -280,6 +280,7 @@ C.legcuffed = initial(C.legcuffed) BITSET(hud_updateflag, HEALTH_HUD) BITSET(hud_updateflag, STATUS_HUD) + BITSET(hud_updateflag, LIFE_HUD) ExtinguishMob() fire_stacks = 0 @@ -332,6 +333,7 @@ BITSET(hud_updateflag, HEALTH_HUD) BITSET(hud_updateflag, STATUS_HUD) + BITSET(hud_updateflag, LIFE_HUD) return /mob/living/proc/UpdateDamageIcon() diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index a0781d7073..3dca3c7a00 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -157,6 +157,7 @@ var/list/ai_verbs_default = list( hud_list[HEALTH_HUD] = image('icons/mob/hud.dmi', src, "hudblank") hud_list[STATUS_HUD] = image('icons/mob/hud.dmi', src, "hudblank") + hud_list[LIFE_HUD] = image('icons/mob/hud.dmi', src, "hudblank") hud_list[ID_HUD] = image('icons/mob/hud.dmi', src, "hudblank") hud_list[WANTED_HUD] = image('icons/mob/hud.dmi', src, "hudblank") hud_list[IMPLOYAL_HUD] = image('icons/mob/hud.dmi', src, "hudblank") diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 3539e683af..9d438df08d 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -153,6 +153,7 @@ var/list/robot_verbs_default = list( hud_list[HEALTH_HUD] = image('icons/mob/hud.dmi', src, "hudblank") hud_list[STATUS_HUD] = image('icons/mob/hud.dmi', src, "hudhealth100") + hud_list[LIFE_HUD] = image('icons/mob/hud.dmi', src, "hudhealth100") hud_list[ID_HUD] = image('icons/mob/hud.dmi', src, "hudblank") hud_list[WANTED_HUD] = image('icons/mob/hud.dmi', src, "hudblank") hud_list[IMPLOYAL_HUD] = image('icons/mob/hud.dmi', src, "hudblank") diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 466e984350..f6cc24de05 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -11,7 +11,7 @@ var/ioncheck[1] var/obj/item/device/radio/common_radio - var/list/hud_list[9] + var/list/hud_list[10] var/list/speech_synthesizer_langs = list() //which languages can be vocalized by the speech synthesizer //Used in say.dm. diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index e8339965c9..18aefb2dc7 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -149,6 +149,13 @@ proc/hassensorlevel(A, var/level) var/obj/item/clothing/under/U = H.w_uniform return U.sensor_mode >= level return 0 + +proc/getsensorlevel(A) + var/mob/living/carbon/human/H = A + if(istype(H) && istype(H.w_uniform, /obj/item/clothing/under)) + var/obj/item/clothing/under/U = H.w_uniform + return U.sensor_mode + return SUIT_SENSOR_OFF /proc/hsl2rgb(h, s, l) return //TODO: Implement diff --git a/code/setup.dm b/code/setup.dm index 17888978ee..045f6b2df0 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -593,6 +593,7 @@ var/list/be_special_flags = list( #define IMPTRACK_HUD 7 // Tracking implant. #define SPECIALROLE_HUD 8 // AntagHUD image. #define STATUS_HUD_OOC 9 // STATUS_HUD without virus DB check for someone being ill. +#define LIFE_HUD 10 // STATUS_HUD that only reports dead or alive // Pulse levels, very simplified. #define PULSE_NONE 0 // So !M.pulse checks would be possible. From 49b3db964fec6348b2329ae8d80c2556c4eed7d2 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 7 Feb 2015 16:43:17 -0500 Subject: [PATCH 045/168] Implements fuel fires Implements liquid fuel fires using the liquid fuel cleanable decal objects. Rewrites zburn to be more sane, replaces convoluted calculations with straightforward reaction limit. Fixes issue with liquid fuel spreading caused by thee object being deleted. Prevents zones from being repeatedly added to the active fire zones list, and processed repeatedly. --- code/ZAS/Fire.dm | 195 +-- code/ZAS/Zone.dm | 8 +- code/ZAS/_gas_mixture.dm | 1090 ----------------- code/ZAS/_gas_mixture_xgm.dm | 2 +- code/game/machinery/atmoalter/canister.dm | 4 +- .../objects/effects/decals/Cleanable/fuel.dm | 33 +- .../game/objects/items/weapons/tanks/tanks.dm | 2 +- code/setup.dm | 19 +- 8 files changed, 155 insertions(+), 1198 deletions(-) delete mode 100644 code/ZAS/_gas_mixture.dm diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm index babce84126..100c45f93d 100644 --- a/code/ZAS/Fire.dm +++ b/code/ZAS/Fire.dm @@ -20,7 +20,7 @@ atom/proc/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0) -turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) +/turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) if(fire_protection > world.time-300) return 0 if(locate(/obj/fire) in src) @@ -35,37 +35,35 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) if(air_contents.check_combustability(liquid)) igniting = 1 - create_fire(1000) + create_fire(vsc.fire_firelevel_multiplier) return igniting /zone/proc/process_fire() - if(!air.check_combustability()) + var/datum/gas_mixture/burn_gas = air.remove_ratio(vsc.fire_consuption_rate, fire_tiles.len) + + var/firelevel = burn_gas.zburn(src, fire_tiles, force_burn = 1, no_check = 1) + //world << "[src]: firelevel [firelevel]" + + air.merge(burn_gas) + + if(firelevel) + for(var/turf/T in fire_tiles) + if(T.fire) + T.fire.firelevel = firelevel + else + var/obj/effect/decal/cleanable/liquid_fuel/fuel = locate() in T + fire_tiles -= T + fuel_objs -= fuel + else for(var/turf/simulated/T in fire_tiles) if(istype(T.fire)) T.fire.RemoveFire() T.fire = null fire_tiles.Cut() + fuel_objs.Cut() if(!fire_tiles.len) air_master.active_fire_zones.Remove(src) - return - - var/datum/gas_mixture/burn_gas = air.remove_ratio(vsc.fire_consuption_rate, fire_tiles.len) - var/gm = burn_gas.group_multiplier - - burn_gas.group_multiplier = 1 - burn_gas.zburn(force_burn = 1, no_check = 1) - burn_gas.group_multiplier = gm - - air.merge(burn_gas) - - var/firelevel = air.calculate_firelevel() - - for(var/turf/T in fire_tiles) - if(T.fire) - T.fire.firelevel = firelevel - else - fire_tiles -= T /turf/proc/create_fire(fl) return 0 @@ -79,8 +77,12 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) return 1 fire = new(src, fl) - zone.fire_tiles |= src air_master.active_fire_zones |= zone + + var/obj/effect/decal/cleanable/liquid_fuel/fuel = locate() in src + zone.fire_tiles |= src + if(fuel) zone.fuel_objs += fuel + return 0 /obj/fire @@ -121,8 +123,8 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) SetLuminosity(3) //im not sure how to implement a version that works for every creature so for now monkeys are firesafe - for(var/mob/living/carbon/human/M in loc) - M.FireBurn(firelevel, air_contents.temperature, air_contents.return_pressure()) //Burn the humans! + for(var/mob/living/L in loc) + L.FireBurn(firelevel, air_contents.temperature, air_contents.return_pressure()) //Burn the mobs! loc.fire_act(air_contents, air_contents.temperature, air_contents.volume) for(var/atom/A in loc) @@ -137,10 +139,11 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) if(!enemy_tile.zone || enemy_tile.fire) continue - if(!enemy_tile.zone.fire_tiles.len) - var/datum/gas_mixture/acs = enemy_tile.return_air() - if(!acs || !acs.check_combustability()) - continue + //if(!enemy_tile.zone.fire_tiles.len) TODO - optimize + var/datum/gas_mixture/acs = enemy_tile.return_air() + var/obj/effect/decal/cleanable/liquid_fuel/liquid = locate() in enemy_tile + if(!acs || !acs.check_combustability(liquid)) + continue //If extinguisher mist passed over the turf it's trying to spread to, don't spread and //reduce firelevel. @@ -169,85 +172,117 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) /obj/fire/Del() if (istype(loc, /turf/simulated)) - SetLuminosity(0) - - loc = null - air_master.active_hotspots.Remove(src) + RemoveFire() ..() /obj/fire/proc/RemoveFire() if (istype(loc, /turf)) SetLuminosity(0) + loc = null air_master.active_hotspots.Remove(src) -turf/simulated/var/fire_protection = 0 //Protects newly extinguished tiles from being overrun again. -turf/proc/apply_fire_protection() -turf/simulated/apply_fire_protection() +/turf/simulated/var/fire_protection = 0 //Protects newly extinguished tiles from being overrun again. +/turf/proc/apply_fire_protection() +/turf/simulated/apply_fire_protection() fire_protection = world.time - -datum/gas_mixture/proc/zburn(obj/effect/decal/cleanable/liquid_fuel/liquid, force_burn, no_check = 0) +//Returns the firelevel +/datum/gas_mixture/proc/zburn(zone/zone, force_burn, no_check = 0) . = 0 - if((temperature > PHORON_MINIMUM_BURN_TEMPERATURE || force_burn) && (no_check ||check_recombustability(liquid))) + if((temperature > PHORON_MINIMUM_BURN_TEMPERATURE || force_burn) && (no_check ||check_recombustability(zone? zone.fuel_objs : null))) + var/gas_fuel = 0 //in the case of mixed gas/liquid fires, the gas burns first. + var/liquid_fuel = 0 var/total_fuel = 0 var/total_oxidizers = 0 + //*** Get the fuel and oxidizer amounts for(var/g in gas) if(gas_data.flags[g] & XGM_GAS_FUEL) - total_fuel += gas[g] + gas_fuel += gas[g] if(gas_data.flags[g] & XGM_GAS_OXIDIZER) total_oxidizers += gas[g] + gas_fuel *= group_multiplier + total_oxidizers *= group_multiplier - if(liquid) //Liquid Fuel - if(liquid.amount <= 0.1) - del liquid - else - total_fuel += liquid.amount + if(zone) + for(var/obj/effect/decal/cleanable/liquid_fuel/fuel in zone.fuel_objs) + liquid_fuel += fuel.amount*LIQUIDFUEL_AMOUNT_TO_MOL - if(total_fuel == 0) + total_fuel = gas_fuel + liquid_fuel + if(total_fuel <= 0.005) return 0 - //Calculate the firelevel. - var/firelevel = calculate_firelevel(liquid, total_fuel, total_oxidizers, force = 1) + //*** Determine how fast the fire burns - //get the current inner energy of the gas mix + //calculate the firelevel. + var/firelevel = calculate_firelevel(zone? zone.fuel_objs : null, total_fuel, total_oxidizers, force = 1) + + //get the current thermal energy of the gas mix //this must be taken here to prevent the addition or deletion of energy by a changing heat capacity var/starting_energy = temperature * heat_capacity() - //determine the amount of oxygen used - var/used_oxidizers = min(total_oxidizers, total_fuel / 2) - - //determine the amount of fuel actually used - var/used_fuel_ratio = min(2 * total_oxidizers , total_fuel) / total_fuel - total_fuel = total_fuel * used_fuel_ratio - - var/total_reactants = total_fuel + used_oxidizers - - //determine the amount of reactants actually reacting - var/used_reactants_ratio = min(max(total_reactants * firelevel / vsc.fire_firelevel_multiplier, 0.2), total_reactants) / total_reactants - + //determine how far the reaction can progress + var/reaction_limit = min(total_oxidizers*(FIRE_REACTION_FUEL_AMOUNT/FIRE_REACTION_OXIDIZER_AMOUNT), total_fuel) //stoichiometric limit + + //determine the actual rate of reaction, as measured by the amount of fuel reacting + + //vapour fuels are extremely volatile! The reaction progress is a percentage of the total fuel (similar to old zburn). + var/gas_reaction_progress = max(0.2*group_multiplier, (firelevel/vsc.fire_firelevel_multiplier)*gas_fuel)*FIRE_GAS_BURNRATE_MULT + //liquid fuels are not as volatile, and the reaction progress depends on the size of the area that is burning (which is sort of accounted for by firelevel). Having more fuel means a longer burn. + var/liquid_reaction_progress = (firelevel/vsc.fire_firelevel_multiplier)*FIRE_LIQUID_BURNRATE_MULT + + //world << "liquid_reaction_progress = [liquid_reaction_progress]" + //world << "gas_reaction_progress = [gas_reaction_progress]" + + var/total_reaction_progress = gas_reaction_progress + liquid_reaction_progress + if(total_reaction_progress <= 0) + return 0 + + var/used_fuel = min(total_reaction_progress, reaction_limit) + var/used_oxidizers = used_fuel*(FIRE_REACTION_OXIDIZER_AMOUNT/FIRE_REACTION_FUEL_AMOUNT) + //world << "used_fuel = [used_fuel]; used_oxidizers = [used_oxidizers]; reaction_limit=[reaction_limit]" + + //*** Remove fuel and oxidizer, add carbon dioxide and heat + //remove and add gasses as calculated - remove_by_flag(XGM_GAS_OXIDIZER, used_oxidizers * used_reactants_ratio) - remove_by_flag(XGM_GAS_FUEL, total_fuel * used_reactants_ratio) + var/used_gas_fuel = min(used_fuel*(gas_reaction_progress/total_reaction_progress), gas_fuel) //remove in proportion to the relative reaction progress + var/used_liquid_fuel = between(0, used_fuel-used_gas_fuel, liquid_fuel) + + //remove_by_flag() and adjust_gas() handle the group_multiplier for us. + remove_by_flag(XGM_GAS_OXIDIZER, used_oxidizers) + remove_by_flag(XGM_GAS_FUEL, used_gas_fuel) + adjust_gas("carbon_dioxide", used_oxidizers) - adjust_gas("carbon_dioxide", max(total_fuel*used_reactants_ratio, 0)) - - if(liquid) - liquid.amount -= (liquid.amount * used_fuel_ratio * used_reactants_ratio) * 5 // liquid fuel burns 5 times as quick - - if(liquid.amount <= 0) del liquid + //As a simplification, we remove fuel equally from all fuel sources. It might be that some fuel sources have more fuel, some have less, but whatever. + if(zone && zone.fuel_objs.len) + var/fuel_to_remove = used_liquid_fuel/(zone.fuel_objs.len*LIQUIDFUEL_AMOUNT_TO_MOL) //convert back to liquid volume units + //world << "used gas fuel = [used_gas_fuel]; used other fuel = [used_fuel-used_gas_fuel]; fuel_to_remove = [fuel_to_remove]" + var/liquidonly = !check_combustability() + for(var/O in zone.fuel_objs) + var/obj/effect/decal/cleanable/liquid_fuel/fuel = O + if(!istype(fuel)) + zone.fuel_objs -= fuel + continue + + fuel.amount -= fuel_to_remove + if(fuel.amount <= 0) + zone.fuel_objs -= fuel + if(liquidonly) + var/turf/T = fuel.loc + if(istype(T) && T.fire) del(T.fire) + del(fuel) //calculate the energy produced by the reaction and then set the new temperature of the mix - temperature = (starting_energy + vsc.fire_fuel_energy_release * total_fuel) / heat_capacity() + temperature = (starting_energy + vsc.fire_fuel_energy_release * used_fuel) / heat_capacity() update_values() - . = total_reactants * used_reactants_ratio + return firelevel -datum/gas_mixture/proc/check_recombustability(obj/effect/decal/cleanable/liquid_fuel/liquid) +datum/gas_mixture/proc/check_recombustability(list/fuel_objs) . = 0 for(var/g in gas) if(gas_data.flags[g] & XGM_GAS_OXIDIZER && gas[g] >= 0.1) @@ -257,7 +292,7 @@ datum/gas_mixture/proc/check_recombustability(obj/effect/decal/cleanable/liquid_ if(!.) return 0 - if(liquid) + if(fuel_objs && fuel_objs.len) return 1 . = 0 @@ -266,7 +301,7 @@ datum/gas_mixture/proc/check_recombustability(obj/effect/decal/cleanable/liquid_ . = 1 break -datum/gas_mixture/proc/check_combustability(obj/effect/decal/cleanable/liquid_fuel/liquid) +/datum/gas_mixture/proc/check_combustability(obj/effect/decal/cleanable/liquid_fuel/liquid=null) . = 0 for(var/g in gas) if(gas_data.flags[g] & XGM_GAS_OXIDIZER && QUANTIZE(gas[g] * vsc.fire_consuption_rate) >= 0.1) @@ -285,20 +320,12 @@ datum/gas_mixture/proc/check_combustability(obj/effect/decal/cleanable/liquid_fu . = 1 break -datum/gas_mixture/proc/calculate_firelevel(obj/effect/decal/cleanable/liquid_fuel/liquid, total_fuel = null, total_oxidizers = null, force = 0) +//Returns a value between 0 and vsc.fire_firelevel_multiplier +/datum/gas_mixture/proc/calculate_firelevel(list/fuel_objs, total_fuel, total_oxidizers, force = 0) //Calculates the firelevel based on one equation instead of having to do this multiple times in different areas. var/firelevel = 0 - if(force || check_recombustability(liquid)) - if(isnull(total_fuel)) - for(var/g in gas) - if(gas_data.flags[g] & XGM_GAS_FUEL) - total_fuel += gas[g] - if(gas_data.flags[g] & XGM_GAS_OXIDIZER) - total_oxidizers += gas[g] - if(liquid) - total_fuel += liquid.amount - + if(force || check_recombustability(fuel_objs)) var/total_combustables = (total_fuel + total_oxidizers) if(total_combustables > 0) diff --git a/code/ZAS/Zone.dm b/code/ZAS/Zone.dm index 7c9c5f32ed..6959d6d9e9 100644 --- a/code/ZAS/Zone.dm +++ b/code/ZAS/Zone.dm @@ -44,6 +44,7 @@ Class Procs: /zone/var/invalid = 0 /zone/var/list/contents = list() /zone/var/list/fire_tiles = list() +/zone/var/list/fuel_objs = list() /zone/var/needs_update = 0 @@ -72,8 +73,10 @@ Class Procs: T.zone = src contents.Add(T) if(T.fire) + var/obj/effect/decal/cleanable/liquid_fuel/fuel = locate() in T fire_tiles.Add(T) - air_master.active_fire_zones.Add(src) + air_master.active_fire_zones |= src + if(fuel) fuel_objs += fuel T.update_graphic(air.graphic) /zone/proc/remove(turf/simulated/T) @@ -85,6 +88,9 @@ Class Procs: #endif contents.Remove(T) fire_tiles.Remove(T) + if(T.fire) + var/obj/effect/decal/cleanable/liquid_fuel/fuel = locate() in T + fuel_objs -= fuel T.zone = null T.update_graphic(graphic_remove = air.graphic) if(contents.len) diff --git a/code/ZAS/_gas_mixture.dm b/code/ZAS/_gas_mixture.dm deleted file mode 100644 index 2a072e8ef9..0000000000 --- a/code/ZAS/_gas_mixture.dm +++ /dev/null @@ -1,1090 +0,0 @@ -/* -What are the archived variables for? - Calculations are done using the archived variables with the results merged into the regular variables. - This prevents race conditions that arise based on the order of tile processing. -*/ - -#define SPECIFIC_HEAT_TOXIN 200 -#define SPECIFIC_HEAT_AIR 20 -#define SPECIFIC_HEAT_CDO 30 -#define HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,phoron) \ - max(0, carbon_dioxide * SPECIFIC_HEAT_CDO + (oxygen + nitrogen) * SPECIFIC_HEAT_AIR + phoron * SPECIFIC_HEAT_TOXIN) - -#define MINIMUM_HEAT_CAPACITY 0.0003 -#define QUANTIZE(variable) (round(variable,0.0001)) -#define TRANSFER_FRACTION 5 //What fraction (1/#) of the air difference to try and transfer - -/hook/startup/proc/createGasOverlays() - plmaster = new /obj/effect/overlay() - plmaster.icon = 'icons/effects/tile_effects.dmi' - plmaster.icon_state = "phoron" - plmaster.layer = FLY_LAYER - plmaster.mouse_opacity = 0 - - slmaster = new /obj/effect/overlay() - slmaster.icon = 'icons/effects/tile_effects.dmi' - slmaster.icon_state = "sleeping_agent" - slmaster.layer = FLY_LAYER - slmaster.mouse_opacity = 0 - return 1 - -/datum/gas/sleeping_agent/specific_heat = 40 //These are used for the "Trace Gases" stuff, but is buggy. - -/datum/gas/oxygen_agent_b/specific_heat = 300 - -/datum/gas/volatile_fuel/specific_heat = 30 - -/datum/gas - var/moles = 0 - - var/specific_heat = 0 - - var/moles_archived = 0 - -/datum/gas_mixture/ - var/oxygen = 0 //Holds the "moles" of each of the four gases. - var/carbon_dioxide = 0 - var/nitrogen = 0 - var/phoron = 0 - - var/total_moles = 0 //Updated when a reaction occurs. - - var/volume = CELL_VOLUME - - var/temperature = 0 //in Kelvin, use calculate_temperature() to modify - - var/group_multiplier = 1 - //Size of the group this gas_mixture is representing. - //=1 for singletons - - var/graphic - - var/list/datum/gas/trace_gases = list() //Seemed to be a good idea that was abandoned - - var/tmp/oxygen_archived //These are variables for use with the archived data - var/tmp/carbon_dioxide_archived - var/tmp/nitrogen_archived - var/tmp/phoron_archived - - var/tmp/temperature_archived - - var/tmp/graphic_archived = 0 - var/tmp/fuel_burnt = 0 - - var/reacting = 0 - -//FOR THE LOVE OF GOD PLEASE USE THIS PROC -//Call it with negative numbers to remove gases. - -/datum/gas_mixture/proc/adjust(o2 = 0, co2 = 0, n2 = 0, tx = 0, list/datum/gas/traces = list()) - //Purpose: Adjusting the gases within a airmix - //Called by: Nothing, yet! - //Inputs: The values of the gases to adjust - //Outputs: null - - oxygen = max(0, oxygen + o2) - carbon_dioxide = max(0, carbon_dioxide + co2) - nitrogen = max(0, nitrogen + n2) - phoron = max(0, phoron + tx) - - //handle trace gasses - for(var/datum/gas/G in traces) - var/datum/gas/T = locate(G.type) in trace_gases - if(T) - T.moles = max(G.moles + T.moles, 0) - else if(G.moles > 0) - trace_gases |= G - update_values() - return - - //tg seems to like using these a lot -/datum/gas_mixture/proc/return_temperature() - return temperature - - -/datum/gas_mixture/proc/return_volume() - return max(0, volume) - - -/datum/gas_mixture/proc/thermal_energy() - return temperature*heat_capacity() - -/////////////////////////////// -//PV=nRT - related procedures// -/////////////////////////////// - -/datum/gas_mixture/proc/heat_capacity() - //Purpose: Returning the heat capacity of the gas mix - //Called by: UNKNOWN - //Inputs: None - //Outputs: Heat capacity - - var/heat_capacity = HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,phoron) - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - heat_capacity += trace_gas.moles*trace_gas.specific_heat - - return max(MINIMUM_HEAT_CAPACITY,heat_capacity) - -/datum/gas_mixture/proc/heat_capacity_archived() - //Purpose: Returning the archived heat capacity of the gas mix - //Called by: UNKNOWN - //Inputs: None - //Outputs: Archived heat capacity - - var/heat_capacity_archived = HEAT_CAPACITY_CALCULATION(oxygen_archived,carbon_dioxide_archived,nitrogen_archived,phoron_archived) - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - heat_capacity_archived += trace_gas.moles_archived*trace_gas.specific_heat - - return max(MINIMUM_HEAT_CAPACITY,heat_capacity_archived) - -/datum/gas_mixture/proc/total_moles() - return total_moles - /*var/moles = oxygen + carbon_dioxide + nitrogen + phoron - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - moles += trace_gas.moles - return moles*/ - -/datum/gas_mixture/proc/return_pressure() - //Purpose: Calculating Current Pressure - //Called by: - //Inputs: None - //Outputs: Gas pressure. - - if(volume>0) - return total_moles()*R_IDEAL_GAS_EQUATION*temperature/volume - return 0 - -// proc/return_temperature() - //Purpose: - //Inputs: - //Outputs: - -// return temperature - -// proc/return_volume() - //Purpose: - //Inputs: - //Outputs: - -// return max(0, volume) - -// proc/thermal_energy() - //Purpose: - //Inputs: - //Outputs: - -// return temperature*heat_capacity() - -/datum/gas_mixture/proc/update_values() - //Purpose: Calculating and storing values which were normally called CONSTANTLY - //Called by: Anything that changes values within a gas mix. - //Inputs: None - //Outputs: None - - total_moles = oxygen + carbon_dioxide + nitrogen + phoron - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - total_moles += trace_gas.moles - - return - -//////////////////////////////////////////// -//Procedures used for very specific events// -//////////////////////////////////////////// - -/datum/gas_mixture/proc/check_tile_graphic() - //Purpose: Calculating the graphic for a tile - //Called by: Turfs updating - //Inputs: None - //Outputs: 1 if graphic changed, 0 if unchanged - - graphic = 0 - if(phoron > MOLES_PHORON_VISIBLE) - graphic = 1 - else if(length(trace_gases)) - var/datum/gas/sleeping_agent = locate(/datum/gas/sleeping_agent) in trace_gases - if(sleeping_agent && (sleeping_agent.moles > 1)) - graphic = 2 - else - graphic = 0 - - return graphic != graphic_archived - -/datum/gas_mixture/proc/react(atom/dump_location) - //Purpose: Calculating if it is possible for a fire to occur in the airmix - //Called by: Air mixes updating? - //Inputs: None - //Outputs: If a fire occured - - //set to 1 if a notable reaction occured (used by pipe_network) - - zburn(null) - - return reacting - -/* -/datum/gas_mixture/proc/fire() - //Purpose: Calculating any fire reactions. - //Called by: react() (See above) - //Inputs: None - //Outputs: How much fuel burned - - return zburn(null) - - var/energy_released = 0 - var/old_heat_capacity = heat_capacity() - - var/datum/gas/volatile_fuel/fuel_store = locate(/datum/gas/volatile_fuel) in trace_gases - if(fuel_store) //General volatile gas burn - var/burned_fuel = 0 - - if(oxygen < fuel_store.moles) - burned_fuel = oxygen - fuel_store.moles -= burned_fuel - oxygen = 0 - else - burned_fuel = fuel_store.moles - oxygen -= fuel_store.moles - del(fuel_store) - - energy_released += FIRE_CARBON_ENERGY_RELEASED * burned_fuel - carbon_dioxide += burned_fuel - fuel_burnt += burned_fuel - - //Handle phoron burning - if(toxins > MINIMUM_HEAT_CAPACITY) - var/phoron_burn_rate = 0 - var/oxygen_burn_rate = 0 - //more phoron released at higher temperatures - var/temperature_scale - if(temperature > PLASMA_UPPER_TEMPERATURE) - temperature_scale = 1 - else - temperature_scale = (temperature-PLASMA_MINIMUM_BURN_TEMPERATURE)/(PLASMA_UPPER_TEMPERATURE-PLASMA_MINIMUM_BURN_TEMPERATURE) - if(temperature_scale > 0) - oxygen_burn_rate = 1.4 - temperature_scale - if(oxygen > toxins*PLASMA_OXYGEN_FULLBURN) - phoron_burn_rate = (toxins*temperature_scale)/4 - else - phoron_burn_rate = (temperature_scale*(oxygen/PLASMA_OXYGEN_FULLBURN))/4 - if(phoron_burn_rate > MINIMUM_HEAT_CAPACITY) - toxins -= phoron_burn_rate - oxygen -= phoron_burn_rate*oxygen_burn_rate - carbon_dioxide += phoron_burn_rate - - energy_released += FIRE_PLASMA_ENERGY_RELEASED * (phoron_burn_rate) - - fuel_burnt += (phoron_burn_rate)*(1+oxygen_burn_rate) - - if(energy_released > 0) - var/new_heat_capacity = heat_capacity() - if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) - temperature = (temperature*old_heat_capacity + energy_released)/new_heat_capacity - update_values() - - return fuel_burnt*/ - -////////////////////////////////////////////// -//Procs for general gas spread calculations.// -////////////////////////////////////////////// - - -/datum/gas_mixture/proc/archive() - //Purpose: Archives the current gas values - //Called by: UNKNOWN - //Inputs: None - //Outputs: 1 - - oxygen_archived = oxygen - carbon_dioxide_archived = carbon_dioxide - nitrogen_archived = nitrogen - phoron_archived = phoron - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - trace_gas.moles_archived = trace_gas.moles - - temperature_archived = temperature - - graphic_archived = graphic - - return 1 - -/datum/gas_mixture/proc/check_then_merge(datum/gas_mixture/giver) - //Purpose: Similar to merge(...) but first checks to see if the amount of air assumed is small enough - // that group processing is still accurate for source (aborts if not) - //Called by: airgroups/machinery expelling air, ? - //Inputs: The gas to try and merge - //Outputs: 1 on successful merge. 0 otherwise. - - if(!giver) - return 0 - if(((giver.oxygen > MINIMUM_AIR_TO_SUSPEND) && (giver.oxygen >= oxygen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((giver.carbon_dioxide > MINIMUM_AIR_TO_SUSPEND) && (giver.carbon_dioxide >= carbon_dioxide*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((giver.nitrogen > MINIMUM_AIR_TO_SUSPEND) && (giver.nitrogen >= nitrogen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((giver.phoron > MINIMUM_AIR_TO_SUSPEND) && (giver.phoron >= phoron*MINIMUM_AIR_RATIO_TO_SUSPEND))) - return 0 - if(abs(giver.temperature - temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) - return 0 - - if(giver.trace_gases.len) - for(var/datum/gas/trace_gas in giver.trace_gases) - var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if((trace_gas.moles > MINIMUM_AIR_TO_SUSPEND) && (!corresponding || (trace_gas.moles >= corresponding.moles*MINIMUM_AIR_RATIO_TO_SUSPEND))) - return 0 - - return merge(giver) - -/datum/gas_mixture/proc/merge(datum/gas_mixture/giver) - //Purpose: Merges all air from giver into self. Deletes giver. - //Called by: Machinery expelling air, check_then_merge, ? - //Inputs: The gas to merge. - //Outputs: 1 - - if(!giver) - return 0 - - if(abs(temperature-giver.temperature)>MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/self_heat_capacity = heat_capacity()*group_multiplier - var/giver_heat_capacity = giver.heat_capacity()*giver.group_multiplier - var/combined_heat_capacity = giver_heat_capacity + self_heat_capacity - if(combined_heat_capacity != 0) - temperature = (giver.temperature*giver_heat_capacity + temperature*self_heat_capacity)/combined_heat_capacity - - if((group_multiplier>1)||(giver.group_multiplier>1)) - oxygen += giver.oxygen*giver.group_multiplier/group_multiplier - carbon_dioxide += giver.carbon_dioxide*giver.group_multiplier/group_multiplier - nitrogen += giver.nitrogen*giver.group_multiplier/group_multiplier - phoron += giver.phoron*giver.group_multiplier/group_multiplier - else - oxygen += giver.oxygen - carbon_dioxide += giver.carbon_dioxide - nitrogen += giver.nitrogen - phoron += giver.phoron - - if(giver.trace_gases.len) - for(var/datum/gas/trace_gas in giver.trace_gases) - var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if(!corresponding) - corresponding = new trace_gas.type() - trace_gases += corresponding - corresponding.moles += trace_gas.moles*giver.group_multiplier/group_multiplier - update_values() - - // Let the garbage collector handle it, faster according to /tg/ testers - //del(giver) - return 1 - -/datum/gas_mixture/proc/remove(amount) - //Purpose: Removes a certain number of moles from the air. - //Called by: ? - //Inputs: How many moles to remove. - //Outputs: Removed air. - - var/sum = total_moles() - amount = min(amount,sum) //Can not take more air than tile has! - if(amount <= 0) - return null - - var/datum/gas_mixture/removed = new - - - removed.oxygen = QUANTIZE((oxygen/sum)*amount) - removed.nitrogen = QUANTIZE((nitrogen/sum)*amount) - removed.carbon_dioxide = QUANTIZE((carbon_dioxide/sum)*amount) - removed.phoron = QUANTIZE(((phoron/sum)*amount)) - - oxygen -= removed.oxygen/group_multiplier - nitrogen -= removed.nitrogen/group_multiplier - carbon_dioxide -= removed.carbon_dioxide/group_multiplier - phoron -= removed.phoron/group_multiplier - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - var/datum/gas/corresponding = new trace_gas.type() - removed.trace_gases += corresponding - - corresponding.moles = ((trace_gas.moles/sum)*amount) - trace_gas.moles -= (corresponding.moles/group_multiplier) - - removed.temperature = temperature - update_values() - removed.update_values() - - return removed - -/datum/gas_mixture/proc/remove_ratio(ratio) - //Purpose: Removes a certain ratio of the air. - //Called by: ? - //Inputs: Percentage to remove. - //Outputs: Removed air. - - if(ratio <= 0) - return null - - ratio = min(ratio, 1) - - var/datum/gas_mixture/removed = new - - removed.oxygen = QUANTIZE(oxygen*ratio) - removed.nitrogen = QUANTIZE(nitrogen*ratio) - removed.carbon_dioxide = QUANTIZE(carbon_dioxide*ratio) - removed.phoron = QUANTIZE(phoron*ratio) - - oxygen -= removed.oxygen/group_multiplier - nitrogen -= removed.nitrogen/group_multiplier - carbon_dioxide -= removed.carbon_dioxide/group_multiplier - phoron -= removed.phoron/group_multiplier - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - var/datum/gas/corresponding = new trace_gas.type() - removed.trace_gases += corresponding - - corresponding.moles = trace_gas.moles*ratio - trace_gas.moles -= corresponding.moles/group_multiplier - - removed.temperature = temperature - update_values() - removed.update_values() - - return removed - -/datum/gas_mixture/proc/check_then_remove(amount) - //Purpose: Similar to remove(...) but first checks to see if the amount of air removed is small enough - // that group processing is still accurate for source (aborts if not) - //Called by: ? - //Inputs: Number of moles to remove - //Outputs: Removed air or 0 if it can remove air or not. - - amount = min(amount,total_moles()) //Can not take more air than tile has! - - if((amount > MINIMUM_AIR_RATIO_TO_SUSPEND) && (amount > total_moles()*MINIMUM_AIR_RATIO_TO_SUSPEND)) - return 0 - - return remove(amount) - -/datum/gas_mixture/proc/copy_from(datum/gas_mixture/sample) - //Purpose: Duplicates the sample air mixture. - //Called by: airgroups splitting, ? - //Inputs: Gas to copy - //Outputs: 1 - - oxygen = sample.oxygen - carbon_dioxide = sample.carbon_dioxide - nitrogen = sample.nitrogen - phoron = sample.phoron - total_moles = sample.total_moles() - - trace_gases.len=null - if(sample.trace_gases.len > 0) - for(var/datum/gas/trace_gas in sample.trace_gases) - var/datum/gas/corresponding = new trace_gas.type() - trace_gases += corresponding - - corresponding.moles = trace_gas.moles - - temperature = sample.temperature - - return 1 - -/datum/gas_mixture/proc/check_gas_mixture(datum/gas_mixture/sharer) - //Purpose: Telling if one or both airgroups needs to disable group processing. - //Called by: Airgroups sharing air, checking if group processing needs disabled. - //Inputs: Gas to compare from other airgroup - //Outputs: 0 if the self-check failed (local airgroup breaks?) - // then -1 if sharer-check failed (sharing airgroup breaks?) - // then 1 if both checks pass (share succesful?) - if(!istype(sharer)) - return - - var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/TRANSFER_FRACTION - var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/TRANSFER_FRACTION - var/delta_nitrogen = QUANTIZE(nitrogen_archived - sharer.nitrogen_archived)/TRANSFER_FRACTION - var/delta_phoron = QUANTIZE(phoron_archived - sharer.phoron_archived)/TRANSFER_FRACTION - - var/delta_temperature = (temperature_archived - sharer.temperature_archived) - - if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_phoron) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_phoron) >= phoron_archived*MINIMUM_AIR_RATIO_TO_SUSPEND))) - return 0 - - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) - return 0 - - if(sharer.trace_gases.len) - for(var/datum/gas/trace_gas in sharer.trace_gases) - if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4) - var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if(corresponding) - if(trace_gas.moles_archived >= corresponding.moles_archived*MINIMUM_AIR_RATIO_TO_SUSPEND*4) - return 0 - else - return 0 - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4) - if(!locate(trace_gas.type) in sharer.trace_gases) - return 0 - - if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= sharer.oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= sharer.carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= sharer.nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_phoron) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_phoron) >= sharer.phoron_archived*MINIMUM_AIR_RATIO_TO_SUSPEND))) - return -1 - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4) - var/datum/gas/corresponding = locate(trace_gas.type) in sharer.trace_gases - if(corresponding) - if(trace_gas.moles_archived >= corresponding.moles_archived*MINIMUM_AIR_RATIO_TO_SUSPEND*4) - return -1 - else - return -1 - - return 1 - -/datum/gas_mixture/proc/check_turf(turf/model) - //Purpose: Used to compare the gases in an unsimulated turf with the gas in a simulated one. - //Called by: Sharing air (mimicing) with adjacent unsimulated turfs - //Inputs: Unsimulated turf - //Outputs: 1 if safe to mimic, 0 if needs to break airgroup. - - var/delta_oxygen = (oxygen_archived - model.oxygen)/TRANSFER_FRACTION - var/delta_carbon_dioxide = (carbon_dioxide_archived - model.carbon_dioxide)/TRANSFER_FRACTION - var/delta_nitrogen = (nitrogen_archived - model.nitrogen)/TRANSFER_FRACTION - var/delta_phoron = (phoron_archived - model.phoron)/TRANSFER_FRACTION - - var/delta_temperature = (temperature_archived - model.temperature) - - if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_phoron) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_phoron) >= phoron_archived*MINIMUM_AIR_RATIO_TO_SUSPEND))) - return 0 - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) - return 0 - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4) - return 0 - - return 1 - -/datum/gas_mixture/proc/share(datum/gas_mixture/sharer) - //Purpose: Used to transfer gas from a more pressurised tile to a less presurised tile - // (Two directional, if the other tile is more pressurised, air travels to current tile) - //Called by: Sharing air with adjacent simulated turfs - //Inputs: Air datum to share with - //Outputs: Amount of gas exchanged (Negative if lost air, positive if gained.) - - - if(!istype(sharer)) - return - - var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/TRANSFER_FRACTION - var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/TRANSFER_FRACTION - var/delta_nitrogen = QUANTIZE(nitrogen_archived - sharer.nitrogen_archived)/TRANSFER_FRACTION - var/delta_phoron = QUANTIZE(phoron_archived - sharer.phoron_archived)/TRANSFER_FRACTION - - var/delta_temperature = (temperature_archived - sharer.temperature_archived) - - var/old_self_heat_capacity = 0 - var/old_sharer_heat_capacity = 0 - - var/heat_self_to_sharer = 0 - var/heat_capacity_self_to_sharer = 0 - var/heat_sharer_to_self = 0 - var/heat_capacity_sharer_to_self = 0 - - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - - var/delta_air = delta_oxygen+delta_nitrogen - if(delta_air) - var/air_heat_capacity = SPECIFIC_HEAT_AIR*delta_air - if(delta_air > 0) - heat_self_to_sharer += air_heat_capacity*temperature_archived - heat_capacity_self_to_sharer += air_heat_capacity - else - heat_sharer_to_self -= air_heat_capacity*sharer.temperature_archived - heat_capacity_sharer_to_self -= air_heat_capacity - - if(delta_carbon_dioxide) - var/carbon_dioxide_heat_capacity = SPECIFIC_HEAT_CDO*delta_carbon_dioxide - if(delta_carbon_dioxide > 0) - heat_self_to_sharer += carbon_dioxide_heat_capacity*temperature_archived - heat_capacity_self_to_sharer += carbon_dioxide_heat_capacity - else - heat_sharer_to_self -= carbon_dioxide_heat_capacity*sharer.temperature_archived - heat_capacity_sharer_to_self -= carbon_dioxide_heat_capacity - - if(delta_phoron) - var/phoron_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_phoron - if(delta_phoron > 0) - heat_self_to_sharer += phoron_heat_capacity*temperature_archived - heat_capacity_self_to_sharer += phoron_heat_capacity - else - heat_sharer_to_self -= phoron_heat_capacity*sharer.temperature_archived - heat_capacity_sharer_to_self -= phoron_heat_capacity - - old_self_heat_capacity = heat_capacity()*group_multiplier - old_sharer_heat_capacity = sharer.heat_capacity()*sharer.group_multiplier - - oxygen -= delta_oxygen/group_multiplier - sharer.oxygen += delta_oxygen/sharer.group_multiplier - - carbon_dioxide -= delta_carbon_dioxide/group_multiplier - sharer.carbon_dioxide += delta_carbon_dioxide/sharer.group_multiplier - - nitrogen -= delta_nitrogen/group_multiplier - sharer.nitrogen += delta_nitrogen/sharer.group_multiplier - - phoron -= delta_phoron/group_multiplier - sharer.phoron += delta_phoron/sharer.group_multiplier - - var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_phoron) - - var/list/trace_types_considered = list() - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - - var/datum/gas/corresponding = locate(trace_gas.type) in sharer.trace_gases - var/delta = 0 - - if(corresponding) - delta = QUANTIZE(trace_gas.moles_archived - corresponding.moles_archived)/TRANSFER_FRACTION - else - corresponding = new trace_gas.type() - sharer.trace_gases += corresponding - - delta = trace_gas.moles_archived/TRANSFER_FRACTION - - trace_gas.moles -= delta/group_multiplier - corresponding.moles += delta/sharer.group_multiplier - - if(delta) - var/individual_heat_capacity = trace_gas.specific_heat*delta - if(delta > 0) - heat_self_to_sharer += individual_heat_capacity*temperature_archived - heat_capacity_self_to_sharer += individual_heat_capacity - else - heat_sharer_to_self -= individual_heat_capacity*sharer.temperature_archived - heat_capacity_sharer_to_self -= individual_heat_capacity - - moved_moles += delta - - trace_types_considered += trace_gas.type - - - if(sharer.trace_gases.len) - for(var/datum/gas/trace_gas in sharer.trace_gases) - if(trace_gas.type in trace_types_considered) continue - else - var/datum/gas/corresponding - var/delta = 0 - - corresponding = new trace_gas.type() - trace_gases += corresponding - - delta = trace_gas.moles_archived/TRANSFER_FRACTION - - trace_gas.moles -= delta/sharer.group_multiplier - corresponding.moles += delta/group_multiplier - - //Guaranteed transfer from sharer to self - var/individual_heat_capacity = trace_gas.specific_heat*delta - heat_sharer_to_self += individual_heat_capacity*sharer.temperature_archived - heat_capacity_sharer_to_self += individual_heat_capacity - - moved_moles += -delta - update_values() - sharer.update_values() - - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/new_self_heat_capacity = old_self_heat_capacity + heat_capacity_sharer_to_self - heat_capacity_self_to_sharer - var/new_sharer_heat_capacity = old_sharer_heat_capacity + heat_capacity_self_to_sharer - heat_capacity_sharer_to_self - - if(new_self_heat_capacity > MINIMUM_HEAT_CAPACITY) - temperature = (old_self_heat_capacity*temperature - heat_capacity_self_to_sharer*temperature_archived + heat_capacity_sharer_to_self*sharer.temperature_archived)/new_self_heat_capacity - - if(new_sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) - sharer.temperature = (old_sharer_heat_capacity*sharer.temperature-heat_capacity_sharer_to_self*sharer.temperature_archived + heat_capacity_self_to_sharer*temperature_archived)/new_sharer_heat_capacity - - if(abs(old_sharer_heat_capacity) > MINIMUM_HEAT_CAPACITY) - if(abs(new_sharer_heat_capacity/old_sharer_heat_capacity - 1) < 0.10) // <10% change in sharer heat capacity - temperature_share(sharer, OPEN_HEAT_TRANSFER_COEFFICIENT) - - if((delta_temperature > MINIMUM_TEMPERATURE_TO_MOVE) || abs(moved_moles) > MINIMUM_MOLES_DELTA_TO_MOVE) - var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - sharer.temperature_archived*(sharer.total_moles() - moved_moles) - return delta_pressure*R_IDEAL_GAS_EQUATION/volume - - else - return 0 - -/datum/gas_mixture/proc/mimic(turf/model, border_multiplier) - //Purpose: Used transfer gas from a more pressurised tile to a less presurised unsimulated tile. - //Called by: "sharing" from unsimulated to simulated turfs. - //Inputs: Unsimulated turf, Multiplier for gas transfer (optional) - //Outputs: Amount of gas exchanged - - var/delta_oxygen = QUANTIZE(oxygen_archived - model.oxygen)/TRANSFER_FRACTION - var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - model.carbon_dioxide)/TRANSFER_FRACTION - var/delta_nitrogen = QUANTIZE(nitrogen_archived - model.nitrogen)/TRANSFER_FRACTION - var/delta_phoron = QUANTIZE(phoron_archived - model.phoron)/TRANSFER_FRACTION - - var/delta_temperature = (temperature_archived - model.temperature) - - var/heat_transferred = 0 - var/old_self_heat_capacity = 0 - var/heat_capacity_transferred = 0 - - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - - var/delta_air = delta_oxygen+delta_nitrogen - if(delta_air) - var/air_heat_capacity = SPECIFIC_HEAT_AIR*delta_air - heat_transferred -= air_heat_capacity*model.temperature - heat_capacity_transferred -= air_heat_capacity - - if(delta_carbon_dioxide) - var/carbon_dioxide_heat_capacity = SPECIFIC_HEAT_CDO*delta_carbon_dioxide - heat_transferred -= carbon_dioxide_heat_capacity*model.temperature - heat_capacity_transferred -= carbon_dioxide_heat_capacity - - if(delta_phoron) - var/phoron_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_phoron - heat_transferred -= phoron_heat_capacity*model.temperature - heat_capacity_transferred -= phoron_heat_capacity - - old_self_heat_capacity = heat_capacity()*group_multiplier - - if(border_multiplier) - oxygen -= delta_oxygen*border_multiplier/group_multiplier - carbon_dioxide -= delta_carbon_dioxide*border_multiplier/group_multiplier - nitrogen -= delta_nitrogen*border_multiplier/group_multiplier - phoron -= delta_phoron*border_multiplier/group_multiplier - else - oxygen -= delta_oxygen/group_multiplier - carbon_dioxide -= delta_carbon_dioxide/group_multiplier - nitrogen -= delta_nitrogen/group_multiplier - phoron -= delta_phoron/group_multiplier - - var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_phoron) - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - var/delta = 0 - - delta = trace_gas.moles_archived/TRANSFER_FRACTION - - if(border_multiplier) - trace_gas.moles -= delta*border_multiplier/group_multiplier - else - trace_gas.moles -= delta/group_multiplier - - var/heat_cap_transferred = delta*trace_gas.specific_heat - heat_transferred += heat_cap_transferred*temperature_archived - heat_capacity_transferred += heat_cap_transferred - moved_moles += delta - update_values() - - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/new_self_heat_capacity = old_self_heat_capacity - heat_capacity_transferred - if(new_self_heat_capacity > MINIMUM_HEAT_CAPACITY) - if(border_multiplier) - temperature = (old_self_heat_capacity*temperature - heat_capacity_transferred*border_multiplier*temperature_archived)/new_self_heat_capacity - else - temperature = (old_self_heat_capacity*temperature - heat_capacity_transferred*border_multiplier*temperature_archived)/new_self_heat_capacity - - temperature_mimic(model, model.thermal_conductivity, border_multiplier) - - if((delta_temperature > MINIMUM_TEMPERATURE_TO_MOVE) || abs(moved_moles) > MINIMUM_MOLES_DELTA_TO_MOVE) - var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - model.temperature*(model.oxygen+model.carbon_dioxide+model.nitrogen+model.phoron) - return delta_pressure*R_IDEAL_GAS_EQUATION/volume - else - return 0 - -/datum/gas_mixture/proc/check_both_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient) - var/delta_temperature = (temperature_archived - sharer.temperature_archived) - - var/self_heat_capacity = heat_capacity_archived() - var/sharer_heat_capacity = sharer.heat_capacity_archived() - - var/self_temperature_delta = 0 - var/sharer_temperature_delta = 0 - - if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity)) - - self_temperature_delta = -heat/(self_heat_capacity*group_multiplier) - sharer_temperature_delta = heat/(sharer_heat_capacity*sharer.group_multiplier) - else - return 1 - - if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \ - && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived)) - return 0 - - if((abs(sharer_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \ - && (abs(sharer_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*sharer.temperature_archived)) - return -1 - - temperature += self_temperature_delta - sharer.temperature += sharer_temperature_delta - - return 1 - //Logic integrated from: temperature_share(sharer, conduction_coefficient) for efficiency - -/datum/gas_mixture/proc/check_me_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient) - var/delta_temperature = (temperature_archived - sharer.temperature_archived) - - var/self_heat_capacity = heat_capacity_archived() - var/sharer_heat_capacity = sharer.heat_capacity_archived() - - var/self_temperature_delta = 0 - var/sharer_temperature_delta = 0 - - if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity)) - - self_temperature_delta = -heat/(self_heat_capacity*group_multiplier) - sharer_temperature_delta = heat/(sharer_heat_capacity*sharer.group_multiplier) - else - return 1 - - if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \ - && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived)) - return 0 - - temperature += self_temperature_delta - sharer.temperature += sharer_temperature_delta - - return 1 - //Logic integrated from: temperature_share(sharer, conduction_coefficient) for efficiency - -/datum/gas_mixture/proc/check_me_then_temperature_turf_share(turf/simulated/sharer, conduction_coefficient) - var/delta_temperature = (temperature_archived - sharer.temperature) - - var/self_temperature_delta = 0 - var/sharer_temperature_delta = 0 - - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/self_heat_capacity = heat_capacity_archived() - - if((sharer.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*sharer.heat_capacity/(self_heat_capacity+sharer.heat_capacity)) - - self_temperature_delta = -heat/(self_heat_capacity*group_multiplier) - sharer_temperature_delta = heat/sharer.heat_capacity - else - return 1 - - if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \ - && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived)) - return 0 - - temperature += self_temperature_delta - sharer.temperature += sharer_temperature_delta - - return 1 - //Logic integrated from: temperature_turf_share(sharer, conduction_coefficient) for efficiency - -/datum/gas_mixture/proc/check_me_then_temperature_mimic(turf/model, conduction_coefficient) - var/delta_temperature = (temperature_archived - model.temperature) - var/self_temperature_delta = 0 - - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/self_heat_capacity = heat_capacity_archived() - - if((model.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*model.heat_capacity/(self_heat_capacity+model.heat_capacity)) - - self_temperature_delta = -heat/(self_heat_capacity*group_multiplier) - - if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \ - && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived)) - return 0 - - temperature += self_temperature_delta - - return 1 - //Logic integrated from: temperature_mimic(model, conduction_coefficient) for efficiency - -/datum/gas_mixture/proc/temperature_share(datum/gas_mixture/sharer, conduction_coefficient) - var/delta_temperature = (temperature_archived - sharer.temperature_archived) - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/self_heat_capacity = heat_capacity_archived() - var/sharer_heat_capacity = sharer.heat_capacity_archived() - if(!group_multiplier) - message_admins("Error! The gas mixture (ref \ref[src]) has no group multiplier!") - return - - if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity)) - - temperature -= heat/(self_heat_capacity*group_multiplier) - sharer.temperature += heat/(sharer_heat_capacity*sharer.group_multiplier) - -/datum/gas_mixture/proc/temperature_mimic(turf/model, conduction_coefficient, border_multiplier) - var/delta_temperature = (temperature - model.temperature) - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/self_heat_capacity = heat_capacity()//_archived() - if(!group_multiplier) - message_admins("Error! The gas mixture (ref \ref[src]) has no group multiplier!") - return - - if((model.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*model.heat_capacity/(self_heat_capacity+model.heat_capacity)) - - if(border_multiplier) - temperature -= heat*border_multiplier/(self_heat_capacity*group_multiplier) - else - temperature -= heat/(self_heat_capacity*group_multiplier) - -/datum/gas_mixture/proc/temperature_turf_share(turf/simulated/sharer, conduction_coefficient) - var/delta_temperature = (temperature_archived - sharer.temperature) - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/self_heat_capacity = heat_capacity() - - if((sharer.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*sharer.heat_capacity/(self_heat_capacity+sharer.heat_capacity)) - - temperature -= heat/(self_heat_capacity*group_multiplier) - sharer.temperature += heat/sharer.heat_capacity - -/datum/gas_mixture/proc/compare(datum/gas_mixture/sample) - //Purpose: Compares sample to self to see if within acceptable ranges that group processing may be enabled - //Called by: Airgroups trying to rebuild - //Inputs: Gas mix to compare - //Outputs: 1 if can rebuild, 0 if not. - if(!sample) return 0 - - - if((abs(oxygen-sample.oxygen) > MINIMUM_AIR_TO_SUSPEND) && \ - ((oxygen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen) || (oxygen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen))) - return 0 - if((abs(nitrogen-sample.nitrogen) > MINIMUM_AIR_TO_SUSPEND) && \ - ((nitrogen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen) || (nitrogen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen))) - return 0 - if((abs(carbon_dioxide-sample.carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && \ - ((carbon_dioxide < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide) || (carbon_dioxide > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide))) - return 0 - if((abs(phoron-sample.phoron) > MINIMUM_AIR_TO_SUSPEND) && \ - ((phoron < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.phoron) || (phoron > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.phoron))) - return 0 - - - if(total_moles() > MINIMUM_AIR_TO_SUSPEND) - if((abs(temperature-sample.temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) && \ - ((temperature < (1-MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature) || (temperature > (1+MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature))) - //world << "temp fail [temperature] & [sample.temperature]" - return 0 - var/check_moles - if(sample.trace_gases.len) - for(var/datum/gas/trace_gas in sample.trace_gases) - var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if(corresponding) - check_moles = corresponding.moles - else - check_moles = 0 - - if((abs(trace_gas.moles - check_moles) > MINIMUM_AIR_TO_SUSPEND) && \ - ((check_moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles) || (check_moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles))) - return 0 - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if(corresponding) - check_moles = corresponding.moles - else - check_moles = 0 - - if((abs(trace_gas.moles - check_moles) > MINIMUM_AIR_TO_SUSPEND) && \ - ((trace_gas.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*check_moles) || (trace_gas.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*check_moles))) - return 0 - - return 1 - -/datum/gas_mixture/proc/add(datum/gas_mixture/right_side) - oxygen += right_side.oxygen - carbon_dioxide += right_side.carbon_dioxide - nitrogen += right_side.nitrogen - phoron += right_side.phoron - - if(trace_gases.len || right_side.trace_gases.len) - for(var/datum/gas/trace_gas in right_side.trace_gases) - var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if(!corresponding) - corresponding = new trace_gas.type() - trace_gases += corresponding - corresponding.moles += trace_gas.moles - - update_values() - return 1 - -/datum/gas_mixture/proc/subtract(datum/gas_mixture/right_side) - //Purpose: Subtracts right_side from air_mixture. Used to help turfs mingle - //Called by: Pipelines ending in a break (or something) - //Inputs: Gas mix to remove - //Outputs: 1 - - oxygen = max(oxygen - right_side.oxygen) - carbon_dioxide = max(carbon_dioxide - right_side.carbon_dioxide) - nitrogen = max(nitrogen - right_side.nitrogen) - phoron = max(phoron - right_side.phoron) - - if(trace_gases.len || right_side.trace_gases.len) - for(var/datum/gas/trace_gas in right_side.trace_gases) - var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if(corresponding) - corresponding.moles = max(0, corresponding.moles - trace_gas.moles) - - update_values() - return 1 - -/datum/gas_mixture/proc/multiply(factor) - oxygen *= factor - carbon_dioxide *= factor - nitrogen *= factor - phoron *= factor - - if(trace_gases && trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - trace_gas.moles *= factor - - update_values() - return 1 - -/datum/gas_mixture/proc/divide(factor) - oxygen /= factor - carbon_dioxide /= factor - nitrogen /= factor - phoron /= factor - - if(trace_gases && trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - trace_gas.moles /= factor - - update_values() - return 1 diff --git a/code/ZAS/_gas_mixture_xgm.dm b/code/ZAS/_gas_mixture_xgm.dm index ceb72679e9..ddfbb574ca 100644 --- a/code/ZAS/_gas_mixture_xgm.dm +++ b/code/ZAS/_gas_mixture_xgm.dm @@ -301,7 +301,7 @@ /datum/gas_mixture/proc/react(atom/dump_location) - zburn(null) + zburn(null, force_burn=0, no_check=0) //could probably just call zburn() here with no args but I like being explicit. //Rechecks the gas_mixture and adjusts the graphic list if needed. diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 32e1d77f44..b108b0090a 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -199,9 +199,7 @@ update_flag else can_label = 0 - if(air_contents.temperature > PHORON_FLASHPOINT) - air_contents.zburn() - return + air_contents.react() //cooking up air cans - add phoron and oxygen, then heat above PHORON_MINIMUM_BURN_TEMPERATURE /obj/machinery/portable_atmospherics/canister/return_air() return air_contents diff --git a/code/game/objects/effects/decals/Cleanable/fuel.dm b/code/game/objects/effects/decals/Cleanable/fuel.dm index 5162d0f6df..f60e956561 100644 --- a/code/game/objects/effects/decals/Cleanable/fuel.dm +++ b/code/game/objects/effects/decals/Cleanable/fuel.dm @@ -1,10 +1,10 @@ -obj/effect/decal/cleanable/liquid_fuel +/obj/effect/decal/cleanable/liquid_fuel //Liquid fuel is used for things that used to rely on volatile fuels or phoron being contained to a couple tiles. icon = 'icons/effects/effects.dmi' icon_state = "fuel" layer = TURF_LAYER+0.2 anchored = 1 - var/amount = 1 //Basically moles. + var/amount = 1 New(turf/newLoc,amt=1,nologs=0) if(!nologs) @@ -16,25 +16,34 @@ obj/effect/decal/cleanable/liquid_fuel for(var/obj/effect/decal/cleanable/liquid_fuel/other in newLoc) if(other != src) other.amount += src.amount + + var/oldsrc = src + src = null spawn other.Spread() - del src + del(oldsrc) Spread() . = ..() - proc/Spread() + proc/Spread(exclude=list()) //Allows liquid fuels to sometimes flow into other tiles. - if(amount < 5.0) return + if(amount < 15) return //lets suppose welder fuel is fairly thick and sticky. For something like water, 5 or less would be more appropriate. var/turf/simulated/S = loc if(!istype(S)) return for(var/d in cardinal) - if(rand(25)) - var/turf/simulated/target = get_step(src,d) - var/turf/simulated/origin = get_turf(src) - if(origin.CanPass(null, target, 0, 0) && target.CanPass(null, origin, 0, 0)) - if(!locate(/obj/effect/decal/cleanable/liquid_fuel) in target) - new/obj/effect/decal/cleanable/liquid_fuel(target, amount*0.25,1) - amount *= 0.75 + var/turf/simulated/target = get_step(src,d) + var/turf/simulated/origin = get_turf(src) + if(origin.CanPass(null, target, 0, 0) && target.CanPass(null, origin, 0, 0)) + var/obj/effect/decal/cleanable/liquid_fuel/other_fuel = locate() in target + if(other_fuel) + other_fuel.amount += amount*0.25 + if(!(other_fuel in exclude)) + exclude += src + other_fuel.Spread(exclude) + else + new/obj/effect/decal/cleanable/liquid_fuel(target, amount*0.25,1) + amount *= 0.75 + flamethrower_fuel icon_state = "mustard" diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index 551e4790dc..04d32c49b2 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -246,7 +246,7 @@ /obj/item/weapon/tank/process() //Allow for reactions - air_contents.react() + air_contents.react() //cooking up air tanks - add phoron and oxygen, then heat above PHORON_MINIMUM_BURN_TEMPERATURE check_status() diff --git a/code/setup.dm b/code/setup.dm index e1b8b6695b..1acaee1280 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -122,12 +122,19 @@ #define CARBON_LIFEFORM_FIRE_DAMAGE 4 // Phoron fire properties. -#define PHORON_MINIMUM_BURN_TEMPERATURE (T0C + 100) -#define PHORON_FLASHPOINT (T0C + 246) -#define PHORON_UPPER_TEMPERATURE (T0C + 1370) -#define PHORON_MINIMUM_OXYGEN_NEEDED 2 -#define PHORON_MINIMUM_OXYGEN_PHORON_RATIO 20 -#define PHORON_OXYGEN_FULLBURN 10 +#define PHORON_MINIMUM_BURN_TEMPERATURE (T0C + 126) //400 K - autoignite temperature in tanks and canisters - enclosed environments I guess +#define PHORON_FLASHPOINT (T0C + 246) //519 K - autoignite temperature in air if that ever gets implemented. + +//These control the mole ratio of oxidizer and fuel used in the combustion reaction +#define FIRE_REACTION_OXIDIZER_AMOUNT 3 +#define FIRE_REACTION_FUEL_AMOUNT 2 + +//These control the speed at which fire burns +#define FIRE_GAS_BURNRATE_MULT 1 +#define FIRE_LIQUID_BURNRATE_MULT 0.5 + +//How many moles of fuel are contained within one solid/liquid fuel volume unit +#define LIQUIDFUEL_AMOUNT_TO_MOL 1 //mol/volume unit #define T0C 273.15 // 0.0 degrees celcius #define T20C 293.15 // 20.0 degrees celcius From 318f5e1a92300b65a3461c809c4c38a4bd1e9337 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 1 Mar 2015 14:48:40 +0100 Subject: [PATCH 046/168] Cleans up access handling. --- code/game/jobs/access.dm | 39 +- code/game/machinery/deployable.dm | 3 +- code/game/machinery/doors/airlock.dm | 3 +- code/game/machinery/kitchen/smartfridge.dm | 6 +- code/game/machinery/vending.dm | 18 +- code/modules/clothing/spacesuits/rig/rig.dm | 4 +- .../clothing/spacesuits/rig/rig_attackby.dm | 4 +- .../clothing/spacesuits/rig/suits/station.dm | 12 +- code/modules/research/rdconsole.dm | 3 +- code/modules/shuttles/departmental.dm | 2 +- maps/PowerTesting.dmm | 10 +- maps/exodus-1.dmm | 1154 ++++++++--------- maps/exodus-2.dmm | 290 ++--- maps/exodus-3.dmm | 30 +- maps/exodus-4.dmm | 46 +- maps/exodus-5.dmm | 256 ++-- 16 files changed, 927 insertions(+), 953 deletions(-) diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 2625af077c..0e830b909c 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -85,10 +85,8 @@ //MONEY /var/const/access_crate_cash = 200 -/obj/var/list/req_access = null -/obj/var/req_access_txt = "0" -/obj/var/list/req_one_access = null -/obj/var/req_one_access_txt = "0" +/obj/var/list/req_access = list() +/obj/var/list/req_one_access = list() //returns 1 if this mob has sufficient access to use this object /obj/proc/allowed(mob/M) @@ -117,37 +115,14 @@ return null /obj/proc/check_access(obj/item/I) - //These generations have been moved out of /obj/New() because they were slowing down the creation of objects that never even used the access system. - if(!src.req_access) - src.req_access = list() - if(src.req_access_txt) - var/list/req_access_str = text2list(req_access_txt,";") - for(var/x in req_access_str) - var/n = text2num(x) - if(n) - req_access += n - - if(!src.req_one_access) - src.req_one_access = list() - if(src.req_one_access_txt) - var/list/req_one_access_str = text2list(req_one_access_txt,";") - for(var/x in req_one_access_str) - var/n = text2num(x) - if(n) - req_one_access += n - - if(!istype(src.req_access, /list)) //something's very wrong - return 1 - - var/list/L = src.req_access - if(!L.len && (!src.req_one_access || !src.req_one_access.len)) //no requirements + if(!src.req_access.len && !src.req_one_access.len) //no requirements return 1 if(!I) return 0 for(var/req in src.req_access) if(!(req in I.GetAccess())) //doesn't have this access return 0 - if(src.req_one_access && src.req_one_access.len) + if(src.req_one_access.len) for(var/req in src.req_one_access) if(req in I.GetAccess()) //has an access from the single access list return 1 @@ -156,15 +131,13 @@ /obj/proc/check_access_list(var/list/L) - if(!src.req_access && !src.req_one_access) return 1 - if(!istype(src.req_access, /list)) return 1 - if(!src.req_access.len && (!src.req_one_access || !src.req_one_access.len)) return 1 + if(!src.req_access.len && !src.req_one_access.len) return 1 if(!L) return 0 if(!istype(L, /list)) return 0 for(var/req in src.req_access) if(!(req in L)) //doesn't have this access return 0 - if(src.req_one_access && src.req_one_access.len) + if(src.req_one_access.len) for(var/req in src.req_one_access) if(req in L) //has an access from the single access list return 1 diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index d6eff496d0..87e7adea03 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -182,7 +182,8 @@ for reference: else if (istype(W, /obj/item/weapon/card/emag)) if (src.emagged == 0) src.emagged = 1 - src.req_access = null + src.req_access.Cut() + src.req_one_access.Cut() user << "You break the ID authentication lock on \the [src]." var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(2, 1, src) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index a548739960..811fcffc82 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1085,9 +1085,10 @@ About the new airlock wires panel: //update the door's access to match the electronics' secured_wires = electronics.secure if(electronics.one_access) - req_access = null + req_access.Cut() req_one_access = src.electronics.conf_access else + req_one_access.Cut() req_access = src.electronics.conf_access //get the name from the assembly diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index 7b186bcc9c..11688adc16 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -58,7 +58,7 @@ /obj/machinery/smartfridge/secure/extract name = "\improper Slime Extract Storage" desc = "A refrigerated storage unit for slime extracts" - req_access_txt = "47" + req_access = list(access_research) /obj/machinery/smartfridge/secure/extract/accept_check(var/obj/item/O as obj) if(istype(O,/obj/item/slime_extract)) @@ -70,7 +70,7 @@ desc = "A refrigerated storage unit for storing medicine and chemicals." icon_state = "smartfridge" //To fix the icon in the map editor. icon_on = "smartfridge_chem" - req_one_access_txt = "5;33" + req_one_access = list(access_medical,access_chemistry) /obj/machinery/smartfridge/secure/medbay/accept_check(var/obj/item/O as obj) if(istype(O,/obj/item/weapon/reagent_containers/glass/)) @@ -84,7 +84,7 @@ /obj/machinery/smartfridge/secure/virology name = "\improper Refrigerated Virus Storage" desc = "A refrigerated storage unit for storing viral material." - req_access_txt = "39" + req_access = list(access_virology) icon_state = "smartfridge_virology" icon_on = "smartfridge_virology" icon_off = "smartfridge_virology-off" diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index d5b97e2772..10a939fd49 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -700,7 +700,7 @@ idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan. product_slogans = "I hope nobody asks me for a bloody cup o' tea...;Alcohol is humanity's friend. Would you abandon a friend?;Quite delighted to serve you!;Is nobody thirsty on this station?" product_ads = "Drink up!;Booze is good for you!;Alcohol is humanity's best friend.;Quite delighted to serve you!;Care for a nice, cold beer?;Nothing cures you like booze!;Have a sip!;Have a drink!;Have a beer!;Beer is good for you!;Only the finest alcohol!;Best quality booze since 2053!;Award-winning wine!;Maximum alcohol!;Man loves beer.;A toast for progress!" - req_access_txt = "25" + req_access = list(access_bar) /obj/machinery/vending/assist products = list( /obj/item/device/assembly/prox_sensor = 5,/obj/item/device/assembly/igniter = 3,/obj/item/device/assembly/signaler = 4, @@ -788,7 +788,7 @@ icon_state = "med" icon_deny = "med-deny" product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!" - req_access_txt = "5" + req_access = list(access_medical) products = list(/obj/item/weapon/reagent_containers/glass/bottle/antitoxin = 4,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline = 4, /obj/item/weapon/reagent_containers/glass/bottle/stoxin = 4,/obj/item/weapon/reagent_containers/glass/bottle/toxin = 4, /obj/item/weapon/reagent_containers/syringe/antiviral = 4,/obj/item/weapon/reagent_containers/syringe = 12, @@ -812,7 +812,7 @@ product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?" icon_state = "wallmed" icon_deny = "wallmed-deny" - req_access_txt = "5" + req_access = list(access_medical) density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude products = list(/obj/item/stack/medical/bruise_pack = 2,/obj/item/stack/medical/ointment = 2,/obj/item/weapon/reagent_containers/hypospray/autoinjector = 4,/obj/item/device/healthanalyzer = 1) contraband = list(/obj/item/weapon/reagent_containers/syringe/antitoxin = 4,/obj/item/weapon/reagent_containers/syringe/antiviral = 4,/obj/item/weapon/reagent_containers/pill/tox = 1) @@ -822,7 +822,7 @@ desc = "Wall-mounted Medical Equipment dispenser." icon_state = "wallmed" icon_deny = "wallmed-deny" - req_access_txt = "5" + req_access = list(access_medical) density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude products = list(/obj/item/weapon/reagent_containers/hypospray/autoinjector = 5,/obj/item/weapon/reagent_containers/syringe/antitoxin = 3,/obj/item/stack/medical/bruise_pack = 3, /obj/item/stack/medical/ointment =3,/obj/item/device/healthanalyzer = 3) @@ -834,7 +834,7 @@ product_ads = "Crack capitalist skulls!;Beat some heads in!;Don't forget - harm is good!;Your weapons are right here.;Handcuffs!;Freeze, scumbag!;Don't tase me bro!;Tase them, bro.;Why not have a donut?" icon_state = "sec" icon_deny = "sec-deny" - req_access_txt = "1" + req_access = list(access_security) products = list(/obj/item/weapon/handcuffs = 8,/obj/item/weapon/grenade/flashbang = 4,/obj/item/device/flash = 5, /obj/item/weapon/reagent_containers/food/snacks/donut/normal = 12,/obj/item/weapon/storage/box/evidence = 6) contraband = list(/obj/item/clothing/glasses/sunglasses = 2,/obj/item/weapon/storage/donut_box = 2) @@ -927,7 +927,7 @@ desc = "Tools for tools." icon_state = "tool" icon_deny = "tool-deny" - //req_access_txt = "12" //Maintenance access + //req_access = list(access_maint_tunnels) //Maintenance access products = list(/obj/item/stack/cable_coil/random = 10,/obj/item/weapon/crowbar = 5,/obj/item/weapon/weldingtool = 3,/obj/item/weapon/wirecutters = 5, /obj/item/weapon/wrench = 5,/obj/item/device/analyzer = 5,/obj/item/device/t_scanner = 5,/obj/item/weapon/screwdriver = 5) contraband = list(/obj/item/weapon/weldingtool/hugetank = 2,/obj/item/clothing/gloves/fyellow = 2) @@ -938,7 +938,7 @@ desc = "Spare tool vending. What? Did you expect some witty description?" icon_state = "engivend" icon_deny = "engivend-deny" - req_access_txt = "11" //Engineering Equipment access + req_access = list(access_engine_equip) //Engineering Equipment access products = list(/obj/item/clothing/glasses/meson = 2,/obj/item/device/multitool = 4,/obj/item/weapon/airlock_electronics = 10,/obj/item/weapon/module/power_control = 10,/obj/item/weapon/airalarm_electronics = 10,/obj/item/weapon/cell/high = 10) contraband = list(/obj/item/weapon/cell/potato = 3) premium = list(/obj/item/weapon/storage/belt/utility = 3) @@ -949,7 +949,7 @@ desc = "Everything you need for do-it-yourself station repair." icon_state = "engi" icon_deny = "engi-deny" - req_access_txt = "11" + req_access = list(access_engine_equip) products = list(/obj/item/clothing/under/rank/chief_engineer = 4,/obj/item/clothing/under/rank/engineer = 4,/obj/item/clothing/shoes/orange = 4,/obj/item/clothing/head/hardhat = 4, /obj/item/weapon/storage/belt/utility = 4,/obj/item/clothing/glasses/meson = 4,/obj/item/clothing/gloves/yellow = 4, /obj/item/weapon/screwdriver = 12, /obj/item/weapon/crowbar = 12,/obj/item/weapon/wirecutters = 12,/obj/item/device/multitool = 12,/obj/item/weapon/wrench = 12,/obj/item/device/t_scanner = 12, @@ -966,7 +966,7 @@ desc = "All the tools you need to create your own robot army." icon_state = "robotics" icon_deny = "robotics-deny" - req_access_txt = "29" + req_access = list(access_robotics) products = list(/obj/item/clothing/suit/storage/toggle/labcoat = 4,/obj/item/clothing/under/rank/roboticist = 4,/obj/item/stack/cable_coil = 4,/obj/item/device/flash = 4, /obj/item/weapon/cell/high = 12, /obj/item/device/assembly/prox_sensor = 3,/obj/item/device/assembly/signaler = 3,/obj/item/device/healthanalyzer = 3, /obj/item/weapon/scalpel = 2,/obj/item/weapon/circular_saw = 2,/obj/item/weapon/tank/anesthetic = 2,/obj/item/clothing/mask/breath/medical = 5, diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index cc6776865a..21af652464 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -12,8 +12,8 @@ icon = 'icons/obj/rig_modules.dmi' desc = "A back-mounted hardsuit deployment and control mechanism." slot_flags = SLOT_BACK - req_one_access = null - req_access = null + req_one_access = list() + req_access = list() w_class = 4 // These values are passed on to all component pieces. diff --git a/code/modules/clothing/spacesuits/rig/rig_attackby.dm b/code/modules/clothing/spacesuits/rig/rig_attackby.dm index c0d119b0b4..e7a59ea305 100644 --- a/code/modules/clothing/spacesuits/rig/rig_attackby.dm +++ b/code/modules/clothing/spacesuits/rig/rig_attackby.dm @@ -21,8 +21,8 @@ return else if(istype(W, /obj/item/weapon/card/emag)) locked_dna = null - req_access = null - req_one_access = null + req_access.Cut() + req_one_access.Cut() locked = 0 subverted = 1 user << "You short out the access protocol for the suit." diff --git a/code/modules/clothing/spacesuits/rig/suits/station.dm b/code/modules/clothing/spacesuits/rig/suits/station.dm index 44959068eb..0f20afed50 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station.dm @@ -10,8 +10,8 @@ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd) - req_access = null - req_one_access = null + req_access = list() + req_one_access = list() initial_modules = list( /obj/item/rig_module/device/plasmacutter, @@ -84,8 +84,8 @@ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical,/obj/item/roller ) - req_access = null - req_one_access = null + req_access = list() + req_one_access = list() initial_modules = list( /obj/item/rig_module/chem_dispenser/injector, @@ -107,6 +107,6 @@ allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton) - req_access = null - req_one_access = null + req_access = list() + req_one_access = list() diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index da76756fd6..1ad86378b0 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -954,8 +954,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/robotics name = "Robotics R&D Console" id = 2 - req_access = null - req_access_txt = "29" + req_access = list(access_robotics) /obj/machinery/computer/rdconsole/core name = "Core R&D Console" diff --git a/code/modules/shuttles/departmental.dm b/code/modules/shuttles/departmental.dm index 018d194a71..81ad237cc7 100644 --- a/code/modules/shuttles/departmental.dm +++ b/code/modules/shuttles/departmental.dm @@ -7,7 +7,7 @@ /obj/machinery/computer/shuttle_control/engineering name = "engineering shuttle control console" shuttle_tag = "Engineering" - //req_one_access_txt = "11;24" + //req_one_access = list(access_engine_equip,access_atmospherics) circuit = /obj/item/weapon/circuitboard/engineering_shuttle /obj/machinery/computer/shuttle_control/research diff --git a/maps/PowerTesting.dmm b/maps/PowerTesting.dmm index e9a20ece67..9c7088d6ab 100644 --- a/maps/PowerTesting.dmm +++ b/maps/PowerTesting.dmm @@ -27,11 +27,11 @@ "aA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/solar/port) "aB" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/solar/port) "aC" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/solar/port) -"aD" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; layer = 3.3; master_tag = "robotics_solar_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "0"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/solar/port) -"aE" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) -"aF" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "robotics_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "robotics_solar_pump"; tag_exterior_door = "robotics_solar_outer"; frequency = 1379; id_tag = "robotics_solar_airlock"; tag_interior_door = "robotics_solar_inner"; layer = 3.3; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_chamber_sensor = "robotics_solar_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "robotics_solar_sensor"; layer = 3.3; pixel_x = 12; pixel_y = -25},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/portsolar) -"aG" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) -"aH" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; layer = 3.3; master_tag = "robotics_solar_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/portsolar) +"aD" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; layer = 3.3; master_tag = "robotics_solar_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/solar/port) +"aE" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_outer"; locked = 1; name = "Engineering External Access"; req_access = list(10, 13)},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) +"aF" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "robotics_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "robotics_solar_pump"; tag_exterior_door = "robotics_solar_outer"; frequency = 1379; id_tag = "robotics_solar_airlock"; tag_interior_door = "robotics_solar_inner"; layer = 3.3; pixel_x = 0; pixel_y = -25; req_access = list(13); tag_chamber_sensor = "robotics_solar_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "robotics_solar_sensor"; layer = 3.3; pixel_x = 12; pixel_y = -25},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/portsolar) +"aG" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_inner"; locked = 1; name = "Engineering External Access"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) +"aH" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; layer = 3.3; master_tag = "robotics_solar_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/portsolar) "aI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "aJ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "aK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/portsolar) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 33b225b005..6b8d646f9e 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -39,7 +39,7 @@ "aaM" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/security/range) "aaN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/range) "aaO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/security/range) -"aaP" = (/obj/machinery/door/window/northleft{dir = 4; name = "Range Access"; req_access_txt = "63"},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/security/range) +"aaP" = (/obj/machinery/door/window/northleft{dir = 4; name = "Range Access"; req_access = list(63)},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/security/range) "aaQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/security/range) "aaR" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/security/range) "aaS" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/table/reinforced,/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/obj/item/clothing/ears/earmuffs,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/security/range) @@ -74,7 +74,7 @@ "abv" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Fore"},/turf/simulated/floor/plating,/area/maintenance/foresolar) "abw" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/foresolar) "abx" = (/obj/effect/decal/cleanable/ash,/obj/structure/closet/emcloset,/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/security_port) -"aby" = (/obj/machinery/camera{c_tag = "Armoury - Tactical Equipment "; dir = 2; network = list("SS13")},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access_txt = "3"},/obj/structure/table/rack,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/tactical) +"aby" = (/obj/machinery/camera{c_tag = "Armoury - Tactical Equipment "; dir = 2; network = list("SS13")},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = list(3)},/obj/structure/table/rack,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/tactical) "abz" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) "abA" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) "abB" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) @@ -91,20 +91,20 @@ "abM" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating/airless,/area/solar/auxport) "abN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "abO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_starboard) -"abP" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/turf/simulated/floor/plating,/area/security/brig) +"abP" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access = list(12,24)},/turf/simulated/floor/plating,/area/security/brig) "abQ" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "abR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "lawyer_blast"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) "abS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "lawyer_blast"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) "abT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "lawyer_blast"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) "abU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/prison) "abV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/security/prison) -"abW" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "brig_solar_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/foresolar) -"abX" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "brig_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "brig_solar_airlock"; layer = 3.3; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_airpump = "brig_solar_pump"; tag_chamber_sensor = "brig_solar_sensor"; tag_exterior_door = "brig_solar_outer"; tag_interior_door = "brig_solar_inner"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "brig_solar_sensor"; layer = 3.3; pixel_x = 12; pixel_y = -25},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/foresolar) -"abY" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "brig_solar_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/foresolar) -"abZ" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; layer = 3.3; master_tag = "brig_solar_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/foresolar) +"abW" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "brig_solar_outer"; locked = 1; name = "Engineering External Access"; req_access = list(10,13)},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/foresolar) +"abX" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "brig_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "brig_solar_airlock"; layer = 3.3; pixel_x = 0; pixel_y = -25; req_access = list(13); tag_airpump = "brig_solar_pump"; tag_chamber_sensor = "brig_solar_sensor"; tag_exterior_door = "brig_solar_outer"; tag_interior_door = "brig_solar_inner"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "brig_solar_sensor"; layer = 3.3; pixel_x = 12; pixel_y = -25},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/foresolar) +"abY" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "brig_solar_inner"; locked = 1; name = "Engineering External Access"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/foresolar) +"abZ" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; layer = 3.3; master_tag = "brig_solar_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/foresolar) "aca" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/foresolar) "acb" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/foresolar) -"acc" = (/obj/machinery/door/airlock/engineering{name = "Fore Solar Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/foresolar) +"acc" = (/obj/machinery/door/airlock/engineering{name = "Fore Solar Access"; req_access = list(10)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/foresolar) "acd" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/security_port) "ace" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) "acf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/tactical) @@ -117,21 +117,21 @@ "acm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/main) "acn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/main) "aco" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/main) -"acp" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Firing Range"; req_access_txt = "1"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/main) +"acp" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Firing Range"; req_access = list(1)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/main) "acq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/main) "acr" = (/turf/simulated/wall,/area/security/main) "acs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "act" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_starboard) -"acu" = (/obj/machinery/door/window/brigdoor{dir = 1; id = "Cell 3"; name = "Cell 3"; req_access_txt = "2"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) +"acu" = (/obj/machinery/door/window/brigdoor{dir = 1; id = "Cell 3"; name = "Cell 3"; req_access = list(2)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) "acv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/maintenance/foresolar) "acw" = (/obj/machinery/power/solar_control{id = "auxsolarnorth"; name = "Fore Solar Control"; track = 0},/obj/structure/cable/yellow,/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/foresolar) "acx" = (/turf/simulated/floor/plating,/area/maintenance/foresolar) "acy" = (/obj/machinery/camera{c_tag = "Fore Solar Control"; dir = 1},/obj/structure/cable,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/foresolar) "acz" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "Fore Solar Access"; dir = 8},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/security_port) -"acA" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/highsecurity{name = "Tactical Equipment"; req_access_txt = "3"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) -"acB" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access_txt = "3"},/obj/random/projectile,/obj/random/projectile,/obj/random/projectile,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) -"acC" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access_txt = "3"},/obj/structure/window/reinforced{dir = 8},/obj/random/energy,/obj/random/energy,/obj/random/energy,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) -"acD" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access_txt = "3"},/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/stunshells,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"acA" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/highsecurity{name = "Tactical Equipment"; req_access = list(3)},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) +"acB" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = list(3)},/obj/random/projectile,/obj/random/projectile,/obj/random/projectile,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"acC" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = list(3)},/obj/structure/window/reinforced{dir = 8},/obj/random/energy,/obj/random/energy,/obj/random/energy,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"acD" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = list(3)},/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/stunshells,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) "acE" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "acF" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "acG" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/screwdriver{pixel_y = 15},/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/security/main) @@ -150,7 +150,7 @@ "acT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/brig) "acU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating/airless,/area/maintenance/foresolar) "acV" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/security_port) -"acW" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"; req_access_txt = "3"},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"acW" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"; req_access = list(3)},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) "acX" = (/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "acY" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "acZ" = (/obj/structure/table,/obj/machinery/recharger,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/main) @@ -167,10 +167,10 @@ "adk" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "adl" = (/turf/simulated/floor/plating,/area/maintenance/security_starboard) "adm" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/security_starboard) -"adn" = (/obj/structure/table/rack,/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access_txt = "3"},/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/gun/energy/ionrifle,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"adn" = (/obj/structure/table/rack,/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = list(3)},/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/gun/energy/ionrifle,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) "ado" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "adp" = (/obj/structure/table,/obj/machinery/recharger,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) -"adq" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"; req_access_txt = "3"},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Armoury - Secure"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"adq" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"; req_access = list(3)},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Armoury - Secure"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) "adr" = (/obj/structure/table/rack,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/storage/box/emps{pixel_x = 3; pixel_y = 2},/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) "ads" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) "adt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) @@ -182,15 +182,15 @@ "adz" = (/obj/structure/bed/chair/office/dark,/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor,/area/security/main) "adA" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/noticeboard{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) "adB" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/security_starboard) -"adC" = (/obj/machinery/door/airlock/external{icon_state = "door_locked"; locked = 1; name = "External Construction Airlock"; req_access_txt = "32"},/obj/item/tape/engineering{icon_state = "engineering_door"; layer = 4},/turf/simulated/floor/plating,/area/maintenance/security_starboard) +"adC" = (/obj/machinery/door/airlock/external{icon_state = "door_locked"; locked = 1; name = "External Construction Airlock"; req_access = list(32)},/obj/item/tape/engineering{icon_state = "engineering_door"; layer = 4},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "adD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_port) "adE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/security_port) "adF" = (/obj/structure/table/rack,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/gun/energy/taser,/obj/item/weapon/gun/energy/taser,/obj/item/weapon/gun/energy/taser,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) -"adG" = (/obj/machinery/door_control{id = "Armoury"; name = "Armoury Access"; pixel_x = -1; pixel_y = -28; req_access_txt = "3"; req_one_access = null; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) +"adG" = (/obj/machinery/door_control{id = "Armoury"; name = "Armoury Access"; pixel_x = -1; pixel_y = -28; req_access = list(3)},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "adH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/main) "adI" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/main) "adJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) -"adK" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Briefing Room"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/main) +"adK" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Briefing Room"; req_access = list(63)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/main) "adL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) "adM" = (/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/security/main) "adN" = (/obj/structure/table,/obj/item/weapon/folder/red,/turf/simulated/floor,/area/security/main) @@ -200,27 +200,27 @@ "adR" = (/obj/structure/closet/toolcloset,/obj/item/clothing/head/hardhat/dblue,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "adS" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "adT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_port) -"adU" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"; req_access_txt = "3"},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) -"adV" = (/obj/structure/table/rack,/obj/structure/window/reinforced,/obj/machinery/door/window/brigdoor{dir = 1; name = "Weapons locker"; req_access_txt = "3"},/obj/structure/window/reinforced{dir = 4},/obj/item/clothing/suit/armor/laserproof{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/armor/laserproof{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"adU" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"; req_access = list(3)},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"adV" = (/obj/structure/table/rack,/obj/structure/window/reinforced,/obj/machinery/door/window/brigdoor{dir = 1; name = "Weapons locker"; req_access = list(3)},/obj/structure/window/reinforced{dir = 4},/obj/item/clothing/suit/armor/laserproof{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/armor/laserproof{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) "adW" = (/obj/machinery/flasher/portable,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) "adX" = (/obj/machinery/light,/obj/machinery/flasher/portable,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) -"adY" = (/obj/machinery/door_control{id = "Armoury"; name = "Emergency Access"; pixel_x = -28; pixel_y = 4; req_access_txt = "3"; req_one_access = null; req_one_access_txt = "0"},/turf/simulated/floor,/area/security/main) +"adY" = (/obj/machinery/door_control{id = "Armoury"; name = "Emergency Access"; pixel_x = -28; pixel_y = 4; req_access = list(3)},/turf/simulated/floor,/area/security/main) "adZ" = (/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) "aea" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/main) "aeb" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/security/main) "aec" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/main) "aed" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) "aee" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'INTERNALS REQUIRED'."; name = "INTERNALS REQUIRED"; pixel_x = 32; pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/security_starboard) -"aef" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/window/brigdoor{dir = 4; id = "Cell 1"; name = "Cell 1"; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/brig) +"aef" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/window/brigdoor{dir = 4; id = "Cell 1"; name = "Cell 1"; req_access = list(2)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/brig) "aeg" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/security_port) -"aeh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/highsecurity{name = "Secure Armoury Section"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/warden) +"aeh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/highsecurity{name = "Secure Armoury Section"; req_access = list(3)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/warden) "aei" = (/obj/machinery/light{dir = 8},/obj/structure/window/reinforced,/obj/structure/table,/obj/item/device/megaphone,/obj/item/device/megaphone,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) "aej" = (/obj/structure/window/reinforced,/obj/structure/table,/obj/item/device/taperecorder{pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) "aek" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced,/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/storage/box,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) "ael" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) "aem" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/main) "aen" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) -"aeo" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Briefing Room"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/main) +"aeo" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Briefing Room"; req_access = list(63)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/main) "aep" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) "aeq" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/main) "aer" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/main) @@ -231,7 +231,7 @@ "aew" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_port) "aex" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/shard,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/security_port) "aey" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor/plating,/area/maintenance/security_port) -"aez" = (/obj/structure/closet/crate/secure{name = "FOR DISPOSAL"; req_access_txt = "58"},/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/balaclava,/obj/effect/decal/cleanable/cobweb2,/obj/item/clothing/mask/muzzle,/obj/item/weapon/reagent_containers/ld50_syringe/choral,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/security_port) +"aez" = (/obj/structure/closet/crate/secure{name = "FOR DISPOSAL"; req_access = list(58)},/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/balaclava,/obj/effect/decal/cleanable/cobweb2,/obj/item/clothing/mask/muzzle,/obj/item/weapon/reagent_containers/ld50_syringe/choral,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/security_port) "aeA" = (/obj/machinery/deployable/barrier,/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) "aeB" = (/obj/machinery/camera{c_tag = "Armoury"},/obj/machinery/deployable/barrier,/obj/structure/sign/securearea{name = "\improper ARMORY"; pixel_y = 32},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) "aeC" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/security/warden) @@ -247,7 +247,7 @@ "aeM" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/security/main) "aeN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/main) "aeO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) -"aeP" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/security/main) +"aeP" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access = list(1)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/security/main) "aeQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "aeR" = (/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "aeS" = (/turf/simulated/wall/r_wall,/area/maintenance/security_starboard) @@ -282,7 +282,7 @@ "afv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/warden) "afw" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/warden) "afx" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/warden) -"afy" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Armoury"; req_access_txt = "2"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/warden) +"afy" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Armoury"; req_access = list(2)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/warden) "afz" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) "afA" = (/obj/item/weapon/stool,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/main) "afB" = (/obj/structure/disposalpipe/segment,/obj/item/weapon/stool,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/main) @@ -291,14 +291,14 @@ "afE" = (/obj/machinery/vending/cola,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) "afF" = (/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) "afG" = (/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/security/main) -"afH" = (/obj/machinery/door/window/eastright{dir = 1; name = "Security Delivery"; req_access_txt = "1"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "delivery"},/area/security/main) +"afH" = (/obj/machinery/door/window/eastright{dir = 1; name = "Security Delivery"; req_access = list(1)},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "delivery"},/area/security/main) "afI" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; dir = 1; freq = 1400; location = "Security"},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/security/main) "afJ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/meter,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "afK" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{frequency = 1380; id_tag = "escape_pod_3_berth"; pixel_x = 25; pixel_y = 25; tag_door = "escape_pod_3_berth_hatch"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/security_starboard) -"afL" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_3_berth_hatch"; locked = 1; name = "Escape Pod"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) -"afM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_3_hatch"; locked = 1; name = "Escape Pod Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) +"afL" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_3_berth_hatch"; locked = 1; name = "Escape Pod"; req_access = list(13)},/turf/simulated/floor/plating,/area/maintenance/security_starboard) +"afM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_3_hatch"; locked = 1; name = "Escape Pod Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) "afN" = (/obj/structure/bed/chair{dir = 4},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) -"afO" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_3"; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "escape_pod_3_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) +"afO" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_3"; pixel_x = 0; pixel_y = -25; tag_door = "escape_pod_3_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) "afP" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape_pod3/station) "afQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_port) "afR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/security_port) @@ -328,7 +328,7 @@ "agp" = (/turf/simulated/wall,/area/crew_quarters/heads/hos) "agq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) "agr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/goldenplaque,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) -"ags" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_command{id_tag = "HoSdoor"; name = "Head of Security"; req_access_txt = "58"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) +"ags" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_command{id_tag = "HoSdoor"; name = "Head of Security"; req_access = list(58)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "agt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) "agu" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) "agv" = (/turf/simulated/wall/r_wall,/area/crew_quarters/heads/hos) @@ -343,7 +343,7 @@ "agE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/solar/auxport) "agF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/warden) "agG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/warden) -"agH" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Warden's Office"; req_access_txt = "3"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) +"agH" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Warden's Office"; req_access = list(3)},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "agI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/warden) "agJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/warden) "agK" = (/obj/structure/closet/wardrobe/red,/obj/structure/window/reinforced,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/armband,/obj/item/clothing/accessory/armband,/obj/item/clothing/accessory/armband,/turf/simulated/floor,/area/security/main) @@ -397,21 +397,21 @@ "ahG" = (/obj/machinery/camera{c_tag = "Interrogation"; network = list("SS13","Interrogation")},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1449; listening = 0; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "ahH" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "ahI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/security/brig) -"ahJ" = (/obj/machinery/door/airlock/security{name = "Evidence Storage"; req_access_txt = "1"},/turf/simulated/floor,/area/security/brig) +"ahJ" = (/obj/machinery/door/airlock/security{name = "Evidence Storage"; req_access = list(1)},/turf/simulated/floor,/area/security/brig) "ahK" = (/turf/simulated/floor,/area/security/brig) "ahL" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "ahM" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor,/area/security/brig) "ahN" = (/obj/structure/bed/chair,/turf/simulated/floor,/area/security/brig) "ahO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) -"ahP" = (/obj/item/device/eftpos{eftpos_name = "Brig EFTPOS scanner"},/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{dir = 8; name = "Warden's Desk"; req_access_txt = "3"},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) +"ahP" = (/obj/item/device/eftpos{eftpos_name = "Brig EFTPOS scanner"},/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{dir = 8; name = "Warden's Desk"; req_access = list(3)},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "ahQ" = (/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) -"ahR" = (/obj/item/weapon/hand_labeler,/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{dir = 4; name = "Warden's Desk"; req_access_txt = "3"},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) +"ahR" = (/obj/item/weapon/hand_labeler,/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{dir = 4; name = "Warden's Desk"; req_access = list(3)},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "ahS" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/security/main) "ahT" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/vending/coffee,/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) "ahU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/crew_quarters/heads/hos) "ahV" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask{pixel_x = -4; pixel_y = 8},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ahW" = (/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) -"ahX" = (/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/flashlight/lamp/green{dir = 2; pixel_x = 10; pixel_y = 12},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -4; pixel_y = 7; req_access_txt = "2"},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/heads/hos) +"ahX" = (/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/flashlight/lamp/green{dir = 2; pixel_x = 10; pixel_y = 12},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -4; pixel_y = 7; req_access = list(2)},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/heads/hos) "ahY" = (/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/weapon/stamp/hos,/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/heads/hos) "ahZ" = (/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/computer/skills{pixel_y = 4},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/heads/hos) "aia" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) @@ -475,32 +475,32 @@ "ajg" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ajh" = (/obj/structure/filingcabinet,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "aji" = (/obj/structure/closet/secure_closet/hos,/obj/item/device/radio/intercom{pixel_x = 27},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) -"ajj" = (/obj/machinery/door/airlock/maintenance{name = "Firefighting equipment"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/security_port) +"ajj" = (/obj/machinery/door/airlock/maintenance{name = "Firefighting equipment"; req_access = list(12)},/turf/simulated/floor/plating,/area/maintenance/security_port) "ajk" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/turf/simulated/floor/plating,/area/maintenance/security_port) "ajl" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/security_port) -"ajm" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Interrogation Observation"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) -"ajn" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Interrogation"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) -"ajo" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Evidence Storage"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) +"ajm" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Interrogation Observation"; req_access = list(63)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) +"ajn" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Interrogation"; req_access = list(63)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) +"ajo" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Evidence Storage"; req_access = list(1)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) "ajp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/brig) "ajq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/brig) -"ajr" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Security Processing"; req_access_txt = "1"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/brig) +"ajr" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Security Processing"; req_access = list(1)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/brig) "ajs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/brig) -"ajt" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Security Processing"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/brig) +"ajt" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Security Processing"; req_access = list(1)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/brig) "aju" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/brig) "ajv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/brig) "ajw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/brig) -"ajx" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Warden's Office"; req_access_txt = "3"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) +"ajx" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Warden's Office"; req_access = list(3)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "ajy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/brig) "ajz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/brig) -"ajA" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Equipment Storage"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/main) -"ajB" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Equipment Storage"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/main) +"ajA" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Equipment Storage"; req_access = list(1)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/main) +"ajB" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Equipment Storage"; req_access = list(1)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/main) "ajC" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/crew_quarters/heads/hos) "ajD" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "ajE" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "ajF" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/security_port) "ajG" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/security_port) "ajH" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/maintenance/security_port) -"ajI" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "1"},/turf/simulated/floor/plating,/area/security/brig) +"ajI" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access = list(1)},/turf/simulated/floor/plating,/area/security/brig) "ajJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig) "ajK" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "ajL" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) @@ -544,7 +544,7 @@ "akx" = (/obj/machinery/door_timer/cell_3{pixel_y = -32},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/brig) "aky" = (/obj/item/device/radio/intercom{pixel_y = -30},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/brig) "akz" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) -"akA" = (/obj/machinery/door_control{id = "Cell 3"; name = "Cell 3 Door"; pixel_x = -1; pixel_y = -28; req_access_txt = "2"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/security/brig) +"akA" = (/obj/machinery/door_control{id = "Cell 3"; name = "Cell 3 Door"; pixel_x = -1; pixel_y = -28; req_access = list(2)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/security/brig) "akB" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/brig) "akC" = (/obj/machinery/light,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/brig) "akD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/brig) @@ -561,7 +561,7 @@ "akO" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) "akP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/brig) "akQ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor,/area/security/brig) -"akR" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{id_tag = "detdoor"; name = "Detective"; req_access_txt = "4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/detectives_office) +"akR" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{id_tag = "detdoor"; name = "Detective"; req_access = list(4)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/detectives_office) "akS" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "akT" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/security/detectives_office) "akU" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/carpet,/area/security/detectives_office) @@ -570,7 +570,7 @@ "akX" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Detective"},/turf/simulated/floor/carpet,/area/security/detectives_office) "akY" = (/obj/structure/closet/secure_closet/detective,/obj/item/weapon/reagent_containers/food/drinks/flask/detflask,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "akZ" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) -"ala" = (/obj/machinery/door/airlock/maintenance{name = "Firefighting equipment"; req_access_txt = "12"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) +"ala" = (/obj/machinery/door/airlock/maintenance{name = "Firefighting equipment"; req_access = list(12)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "alb" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/security_starboard) "alc" = (/obj/machinery/atmospherics/pipe/tank/nitrous_oxide{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/security/brig) "ald" = (/obj/machinery/atmospherics/valve{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/security/brig) @@ -583,17 +583,17 @@ "alk" = (/turf/simulated/floor/plating/airless,/area/solar/auxport) "all" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area/solar/auxport) "alm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/prison) -"aln" = (/obj/machinery/door/airlock/glass_security{id_tag = "prisonexit"; name = "Brig Exit"; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) +"aln" = (/obj/machinery/door/airlock/glass_security{id_tag = "prisonexit"; name = "Brig Exit"; req_access = list(2)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) "alo" = (/obj/machinery/door/blast/regular{id = "Cell 1"; name = "Cell Door"},/turf/simulated/floor,/area/security/prison) "alp" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig) -"alq" = (/obj/machinery/door/window/brigdoor{dir = 1; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) -"alr" = (/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 1; icon_state = "rightsecure"; req_access_txt = "63"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) +"alq" = (/obj/machinery/door/window/brigdoor{dir = 1; req_access = list(63)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) +"alr" = (/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 1; icon_state = "rightsecure"; req_access = list(63)},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "als" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/computer/security,/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig) "alt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/brig) "alu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/security/brig) -"alv" = (/obj/machinery/door/airlock/glass_security{id_tag = "BrigFoyer"; layer = 2.8; name = "Security Wing"; req_access_txt = "63"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/brig) +"alv" = (/obj/machinery/door/airlock/glass_security{id_tag = "BrigFoyer"; layer = 2.8; name = "Security Wing"; req_access = list(63)},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/brig) "alw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/security/brig) -"alx" = (/obj/machinery/door/airlock/glass_security{id_tag = "BrigFoyer"; layer = 2.8; name = "Security Wing"; req_access_txt = "63"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/brig) +"alx" = (/obj/machinery/door/airlock/glass_security{id_tag = "BrigFoyer"; layer = 2.8; name = "Security Wing"; req_access = list(63)},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/brig) "aly" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/solar/auxport) "alz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/auxport) "alA" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/auxport) @@ -611,7 +611,7 @@ "alM" = (/turf/simulated/floor/plating,/area/security/brig) "alN" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/security/brig) "alO" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/security/brig) -"alP" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Riot Control"; req_access_txt = "2"},/turf/simulated/floor,/area/security/brig) +"alP" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Riot Control"; req_access = list(2)},/turf/simulated/floor,/area/security/brig) "alQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) "alR" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/brig) "alS" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/security/brig) @@ -621,7 +621,7 @@ "alW" = (/turf/simulated/wall,/area/security/prison) "alX" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor,/area/security/prison) "alY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) -"alZ" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 8; icon_state = "rightsecure"; req_access_txt = "2"},/obj/structure/table/reinforced,/turf/simulated/floor,/area/security/brig) +"alZ" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 8; icon_state = "rightsecure"; req_access = list(2)},/obj/structure/table/reinforced,/turf/simulated/floor,/area/security/brig) "ama" = (/obj/structure/table,/obj/item/device/t_scanner,/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/security_starboard) "amb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/brig) "amc" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/machinery/door_control{desc = "A remote control switch for the brig foyer."; id = "BrigFoyer"; name = "Brig Foyer Doors"; normaldoorcontrol = 1; pixel_x = 28; pixel_y = -15},/turf/simulated/floor,/area/security/brig) @@ -640,13 +640,13 @@ "amp" = (/obj/structure/table/woodentable,/obj/item/ashtray/bronze,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/obj/item/device/flash,/obj/item/weapon/handcuffs,/turf/simulated/floor/carpet,/area/security/detectives_office) "amq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/security/detectives_office) "amr" = (/obj/item/weapon/storage/secure/safe{pixel_x = 35; pixel_y = 5},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) -"ams" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/machinery/door_control{id = "prisonentry"; name = "Entry Doors"; normaldoorcontrol = 1; pixel_x = -6; pixel_y = 24; req_access_txt = "2"},/obj/machinery/door_control{id = "prisonexit"; name = "Exit Doors"; normaldoorcontrol = 1; pixel_x = 6; pixel_y = 24; req_access_txt = "2"},/obj/machinery/button/flasher{id = "permentryflash"; name = "entry flash"; pixel_x = -26; pixel_y = 6; req_access_txt = "2"},/turf/simulated/floor,/area/security/brig) +"ams" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/machinery/door_control{id = "prisonentry"; name = "Entry Doors"; normaldoorcontrol = 1; pixel_x = -6; pixel_y = 24; req_access = list(2)},/obj/machinery/door_control{id = "prisonexit"; name = "Exit Doors"; normaldoorcontrol = 1; pixel_x = 6; pixel_y = 24; req_access = list(2)},/obj/machinery/button/flasher{id = "permentryflash"; name = "entry flash"; pixel_x = -26; pixel_y = 6; req_access = list(2)},/turf/simulated/floor,/area/security/brig) "amt" = (/obj/machinery/camera{c_tag = "Firing Range"; dir = 8; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/range) -"amu" = (/obj/machinery/door/airlock/engineering{name = "Security Substation"; req_access_txt = "0"; req_one_access_txt = "11;24"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/substation/security) +"amu" = (/obj/machinery/door/airlock/engineering{name = "Security Substation"; req_one_access = list(11,24)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/substation/security) "amv" = (/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/power/sensor{name = "Powernet Sensor - Security Subgrid"; name_tag = "Security Subgrid"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/maintenance/substation/security) "amw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/substation/security) -"amx" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "arrivals_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/turf/simulated/floor/plating/airless,/area/space) -"amy" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Security Lobby"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/fore) +"amx" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "arrivals_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access = list(13)},/turf/simulated/floor/plating/airless,/area/space) +"amy" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Security Lobby"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/fore) "amz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/hallway/primary/fore) "amA" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/camera{c_tag = "Brig Toxin Control"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/security/brig) "amB" = (/obj/machinery/atmospherics/valve{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/security/brig) @@ -660,15 +660,15 @@ "amJ" = (/obj/structure/closet/secure_closet/brig{id = "Cell 3"; name = "Cell 3 Locker"},/obj/machinery/camera{c_tag = "Brig Cell 3"; dir = 8; network = list("SS13","Prison")},/turf/simulated/floor{icon_state = "red"},/area/security/prison) "amK" = (/obj/machinery/flasher{id = "permentryflash"; name = "Floor mounted flash"; pixel_x = 0},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/prison) "amL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) -"amM" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/brigdoor{dir = 8; req_access_txt = "2"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/table/reinforced,/turf/simulated/floor,/area/security/brig) -"amN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/button/flasher{id = "permflash"; name = "Brig flashes"; pixel_x = -6; pixel_y = -24; req_access_txt = "2"; tag = "permflash"},/obj/machinery/door_control{id = "brigobs"; name = "observation shutters"; pixel_x = 6; pixel_y = -24},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -26; pixel_y = -4; req_access_txt = "2"},/turf/simulated/floor,/area/security/brig) +"amM" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/brigdoor{dir = 8; req_access = list(2)},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/table/reinforced,/turf/simulated/floor,/area/security/brig) +"amN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/button/flasher{id = "permflash"; name = "Brig flashes"; pixel_x = -6; pixel_y = -24; req_access = list(2); tag = "permflash"},/obj/machinery/door_control{id = "brigobs"; name = "observation shutters"; pixel_x = 6; pixel_y = -24},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -26; pixel_y = -4; req_access = list(2)},/turf/simulated/floor,/area/security/brig) "amO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Big Brother is watching."; name = "Brig Monitor"; network = list("Prison"); pixel_x = 3; pixel_y = -33},/turf/simulated/floor,/area/security/brig) "amP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "Prison Wing Observation"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/security/brig) "amQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Big Brother is watching."; name = "Brig Monitor"; network = list("Prison"); pixel_x = -3; pixel_y = -33},/turf/simulated/floor,/area/security/brig) "amR" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/security/brig) "amS" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/southright{dir = 4},/obj/structure/table/reinforced,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/security/lobby) "amT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/lobby) -"amU" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Security Lobby"; req_access_txt = "0"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/fore) +"amU" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Security Lobby"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/fore) "amV" = (/obj/structure/table/reinforced,/obj/item/weapon/folder{pixel_x = -4},/obj/item/weapon/folder/red{pixel_y = 3},/obj/item/weapon/folder/blue{pixel_x = 5},/obj/item/weapon/folder/yellow,/obj/item/weapon/stamp/internalaffairs,/obj/item/weapon/stamp/denied{pixel_x = 4; pixel_y = -2},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "amW" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Internal Affairs Agent"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "amX" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) @@ -684,7 +684,7 @@ "anh" = (/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/shuttle/syndicate_elite/station) "ani" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "anj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) -"ank" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "EVA\\Security Maintenance"; req_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/security_port) +"ank" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "EVA\\Security Maintenance"},/turf/simulated/floor/plating,/area/maintenance/security_port) "anl" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/wall,/area/security/brig) "anm" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/wall,/area/security/brig) "ann" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) @@ -715,7 +715,7 @@ "anM" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/photo_album{pixel_y = -10},/obj/item/device/camera_film,/obj/item/device/camera_film,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "anN" = (/obj/structure/bookcase,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "anO" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/security_starboard) -"anP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/engineering{name = "Security Substation"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor/plating,/area/maintenance/substation/security) +"anP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/engineering{name = "Security Substation"; req_one_access = list(11,24)},/turf/simulated/floor/plating,/area/maintenance/substation/security) "anQ" = (/turf/simulated/wall,/area/maintenance/substation/security) "anR" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Security Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/security) "anS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/substation/security) @@ -730,12 +730,12 @@ "aob" = (/obj/structure/table,/obj/item/weapon/pen,/obj/item/weapon/paper,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/security/brig) "aoc" = (/obj/item/weapon/stool,/obj/effect/decal/cleanable/dirt,/obj/machinery/camera{c_tag = "Solitary Confinement North"; dir = 2; network = list("SS13","Prison")},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plating,/area/security/brig) "aod" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) -"aoe" = (/obj/machinery/door_control{id = "Cell 2"; name = "Cell 2 Door"; pixel_x = 30; pixel_y = 1; req_access_txt = "2"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/brig) -"aof" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/window/brigdoor{dir = 4; id = "Cell 2"; name = "Cell 2"; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/brig) +"aoe" = (/obj/machinery/door_control{id = "Cell 2"; name = "Cell 2 Door"; pixel_x = 30; pixel_y = 1; req_access = list(2)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/brig) +"aof" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/window/brigdoor{dir = 4; id = "Cell 2"; name = "Cell 2"; req_access = list(2)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/brig) "aog" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/security/prison) "aoh" = (/obj/machinery/camera{c_tag = "Brig Cell 2"; dir = 2; network = list("SS13","Prison")},/obj/structure/closet/secure_closet/brig{id = "Cell 2"; name = "Cell 2 Locker"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) "aoi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/prison) -"aoj" = (/obj/machinery/door/airlock/glass_security{id_tag = "prisonentry"; name = "Brig Entry"; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) +"aoj" = (/obj/machinery/door/airlock/glass_security{id_tag = "prisonentry"; name = "Brig Entry"; req_access = list(2)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) "aok" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/prison) "aol" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/security/prison) "aom" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/southleft,/turf/simulated/floor,/area/security/prison) @@ -744,7 +744,7 @@ "aop" = (/obj/item/device/radio/intercom{desc = "Talk... listen through this."; name = "Station Intercom (Brig Radio)"; pixel_x = 0; pixel_y = 26; wires = 7},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aoq" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/security/prison) "aor" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) -"aos" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "lawyer_blast"; name = "Privacy Shutters"; opacity = 0},/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/eastright{base_state = "left"; dir = 4; icon_state = "left"; name = "Internal Affairs Desk"; req_access_txt = "38"},/turf/simulated/floor,/area/lawoffice) +"aos" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "lawyer_blast"; name = "Privacy Shutters"; opacity = 0},/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/eastright{base_state = "left"; dir = 4; icon_state = "left"; name = "Internal Affairs Desk"; req_access = list(38)},/turf/simulated/floor,/area/lawoffice) "aot" = (/obj/machinery/camera{c_tag = "Security Lobby"; dir = 4; pixel_x = 0; pixel_y = -22},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/table,/obj/item/weapon/book/manual/security_space_law{pixel_y = 6},/turf/simulated/floor,/area/security/lobby) "aou" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/lobby) "aov" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/lobby) @@ -754,11 +754,11 @@ "aoz" = (/obj/structure/window/basic{dir = 1},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "aoA" = (/obj/structure/window/basic{dir = 1},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "aoB" = (/obj/structure/window/basic{dir = 1},/obj/machinery/photocopier,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) -"aoC" = (/obj/machinery/door/window/westleft{dir = 1; name = "Forensics Area"; req_access_txt = "4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "warnwhite"; dir = 1},/area/security/detectives_office) +"aoC" = (/obj/machinery/door/window/westleft{dir = 1; name = "Forensics Area"; req_access = list(4)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "warnwhite"; dir = 1},/area/security/detectives_office) "aoD" = (/obj/structure/window/basic{dir = 1},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "aoE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/basic{dir = 1},/obj/structure/filingcabinet/security{desc = "A large cabinet with hard copy security records."; name = "Security Records"},/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "aoF" = (/obj/machinery/newscaster{pixel_x = 28; pixel_y = 1},/obj/structure/window/basic{dir = 1},/obj/structure/filingcabinet/medical{desc = "A large cabinet with hard copy medical records."; name = "Medical Records"},/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) -"aoG" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{name = "Dormitory\\Security Maintenance"; req_access_txt = "12"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/maintenance/dormitory) +"aoG" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{name = "Dormitory\\Security Maintenance"; req_access = list(12)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/maintenance/dormitory) "aoH" = (/turf/simulated/wall,/area/maintenance/dormitory) "aoI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/dormitory) "aoJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/dormitory) @@ -781,7 +781,7 @@ "apa" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/evahallway) "apb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/evahallway) "apc" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/security/brig) -"apd" = (/obj/machinery/door/airlock/glass_security{name = "Solitary Confinement 2"; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/security/brig) +"apd" = (/obj/machinery/door/airlock/glass_security{name = "Solitary Confinement 2"; req_access = list(2)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/security/brig) "ape" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) "apf" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/security/brig) "apg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/fore) @@ -793,7 +793,7 @@ "apm" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/prison) "apn" = (/obj/machinery/flasher{id = "permflash"; name = "Floor mounted flash"; pixel_x = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/prison) "apo" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/security/prison) -"app" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/security/range) +"app" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access = list(1)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/security/range) "apq" = (/obj/machinery/light{dir = 8},/obj/structure/bed/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/lobby) "apr" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/security/lobby) "aps" = (/obj/structure/cable/yellow,/turf/simulated/floor/plating/airless,/area/solar/fore) @@ -811,7 +811,7 @@ "apE" = (/obj/structure/bed/chair/wood/wings,/turf/simulated/floor/wood,/area/maintenance/dormitory) "apF" = (/turf/simulated/floor/wood,/area/maintenance/dormitory) "apG" = (/obj/structure/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/wood{icon_state = "wood-broken6"},/area/maintenance/dormitory) -"apH" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "dorm_outer"; locked = 1; name = "Dormitory External Access"; req_access = null; req_access_txt = "13"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/dormitory) +"apH" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "dorm_outer"; locked = 1; name = "Dormitory External Access"; req_access = list(13)},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/dormitory) "apI" = (/obj/machinery/power/solar{id = "auxsolareast"; name = "Port Auxiliary Solar Array"},/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/auxstarboard) "apJ" = (/obj/machinery/power/solar{id = "auxsolareast"; name = "Port Auxiliary Solar Array"},/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/auxport) "apK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/evahallway) @@ -836,7 +836,7 @@ "aqd" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/security/lobby) "aqe" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/lobby) "aqf" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/lobby) -"aqg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock{name = "Internal Affairs"; req_access_txt = "38"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/lawoffice) +"aqg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock{name = "Internal Affairs"; req_access = list(38)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/lawoffice) "aqh" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "aqi" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "aqj" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) @@ -846,7 +846,7 @@ "aqn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "aqo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "aqp" = (/obj/structure/bed/chair/office/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) -"aqq" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/maintenance{name = "Detective Maintenance"; req_access_txt = "4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/security/detectives_office) +"aqq" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/maintenance{name = "Detective Maintenance"; req_access = list(4)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/security/detectives_office) "aqr" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/dormitory) "aqs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/dormitory) "aqt" = (/obj/structure/table/gamblingtable,/turf/simulated/floor/wood,/area/maintenance/dormitory) @@ -865,7 +865,7 @@ "aqG" = (/obj/structure/table,/obj/item/weapon/dice,/turf/simulated/floor,/area/security/prison) "aqH" = (/obj/structure/table,/obj/item/ashtray/plastic,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aqI" = (/obj/structure/reagent_dispensers/water_cooler,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/security/prison) -"aqJ" = (/obj/structure/table,/obj/machinery/vending/wallmed1{pixel_y = -32; req_access_txt = "0"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/prison) +"aqJ" = (/obj/structure/table,/obj/machinery/vending/wallmed1{pixel_y = -32},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/prison) "aqK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/prison) "aqL" = (/obj/structure/table,/obj/item/weapon/storage/box/cups,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/prison) "aqM" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area/solar/fore) @@ -891,11 +891,11 @@ "arg" = (/obj/structure/table,/obj/item/weapon/dice/d20,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/wood,/area/maintenance/dormitory) "arh" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "dorm_pump"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/maintenance/dormitory) "ari" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/dormitory) -"arj" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "dorm_airlock"; name = "Dormitory Airlock Console"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "1;5;11;18;24"; tag_airpump = "dorm_pump"; tag_chamber_sensor = "dorm_sensor"; tag_exterior_door = "dorm_outer"; tag_interior_door = "dorm_inner"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/dormitory) +"arj" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "dorm_airlock"; name = "Dormitory Airlock Console"; pixel_x = 25; pixel_y = 0; req_one_access = list(1,5,11,18,24); tag_airpump = "dorm_pump"; tag_chamber_sensor = "dorm_sensor"; tag_exterior_door = "dorm_outer"; tag_interior_door = "dorm_inner"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/dormitory) "ark" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/evahallway) "arl" = (/obj/item/weapon/stool,/obj/effect/decal/cleanable/dirt,/obj/machinery/camera{c_tag = "Solitary Confinement South"; dir = 2; network = list("SS13","Prison")},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plating,/area/security/brig) "arm" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) -"arn" = (/obj/machinery/door_control{id = "Cell 1"; name = "Cell 1 Door"; pixel_x = 30; pixel_y = 1; req_access_txt = "2"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/brig) +"arn" = (/obj/machinery/door_control{id = "Cell 1"; name = "Cell 1 Door"; pixel_x = 30; pixel_y = 1; req_access = list(2)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/brig) "aro" = (/obj/structure/closet/secure_closet/brig{id = "Cell 2"; name = "Cell 2 Locker"},/obj/machinery/camera{c_tag = "Brig Cell 1"; dir = 2; network = list("SS13","Prison")},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) "arp" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/prison) "arq" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/security/prison) @@ -903,14 +903,14 @@ "ars" = (/obj/structure/table,/obj/item/weapon/deck,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "art" = (/obj/structure/table,/obj/item/weapon/newspaper,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/prison) "aru" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor,/area/security/prison) -"arv" = (/obj/machinery/door/airlock{name = "Visitation Area"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) +"arv" = (/obj/machinery/door/airlock{name = "Visitation Area"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "arw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/security/prison) "arx" = (/turf/simulated/wall/r_wall,/area/security/lobby) -"ary" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; layer = 3.3; master_tag = "brig_solar_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/solar/fore) -"arz" = (/obj/machinery/door/airlock{id_tag = "visitdoor"; name = "Visitation Area"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/lobby) +"ary" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; layer = 3.3; master_tag = "brig_solar_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access = list(13)},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/solar/fore) +"arz" = (/obj/machinery/door/airlock{id_tag = "visitdoor"; name = "Visitation Area"; req_access = list(63)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/lobby) "arA" = (/turf/simulated/wall/r_wall,/area/hallway/primary/fore) "arB" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area/solar/fore) -"arC" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "1"},/turf/simulated/floor/plating,/area/security/brig) +"arC" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access = list(1)},/turf/simulated/floor/plating,/area/security/brig) "arD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating/airless,/area/solar/fore) "arE" = (/turf/simulated/wall,/area/hallway/primary/fore) "arF" = (/obj/structure/closet{name = "Evidence Closet"},/obj/machinery/door_control{id = "lawyer_blast"; name = "Privacy Shutters"; pixel_y = -25},/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/obj/item/device/camera{pixel_x = 3; pixel_y = -4},/obj/item/device/flash,/obj/item/device/flash,/obj/item/weapon/storage/secure/briefcase,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) @@ -922,11 +922,11 @@ "arL" = (/turf/simulated/floor/wood{icon_state = "wood-broken4"},/area/maintenance/dormitory) "arM" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 1},/turf/simulated/floor/wood,/area/maintenance/dormitory) "arN" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/maintenance/dormitory) -"arO" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "dorm_inner"; locked = 1; name = "Dormitory Internal Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/dormitory) -"arP" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "dorm_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless,/area/maintenance/dormitory) +"arO" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "dorm_inner"; locked = 1; name = "Dormitory Internal Access"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/dormitory) +"arP" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "dorm_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access = list(13)},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless,/area/maintenance/dormitory) "arQ" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/evahallway) "arR" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/security/brig) -"arS" = (/obj/machinery/door/airlock/glass_security{name = "Solitary Confinement 1"; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/security/brig) +"arS" = (/obj/machinery/door/airlock/glass_security{name = "Solitary Confinement 1"; req_access = list(2)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/security/brig) "arT" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) "arU" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/brig) "arV" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/status_display{density = 0; layer = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/primary/central_one) @@ -961,7 +961,7 @@ "asy" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/substation/security) "asz" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air/airlock,/obj/effect/decal/cleanable/cobweb2,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/dormitory) "asA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/arrivals) -"asB" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "arrivals_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/maintenance/arrivals) +"asB" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "arrivals_outer"; locked = 1; name = "Engineering External Access"; req_access = list(10,13)},/turf/simulated/floor/plating,/area/maintenance/arrivals) "asC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/evahallway) "asD" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1475; listening = 0; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = -30},/obj/item/device/radio/headset,/obj/item/device/radio/headset,/obj/item/device/radio/headset,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/brig) "asE" = (/obj/item/device/radio/intercom{pixel_x = 30},/obj/machinery/door_timer/cell_1{pixel_x = 32; pixel_y = -32},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/brig) @@ -982,7 +982,7 @@ "asT" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/dormitory) "asU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/dormitory) "asV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/dormitory) -"asW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/dormitory) +"asW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/dormitory) "asX" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/plating,/area/maintenance/dormitory) "asY" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/dormitory) "asZ" = (/turf/simulated/wall/r_wall,/area/maintenance/dormitory) @@ -1003,7 +1003,7 @@ "ato" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape_pod2/station) "atp" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/escape_pod2/station) "atq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/arrivals) -"atr" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "dorm_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = 25; req_access_txt = "13"},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/dormitory) +"atr" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "dorm_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = 25; req_access = list(13)},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/dormitory) "ats" = (/obj/structure/table/rack,/obj/item/weapon/flame/lighter/random,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/turf/simulated/floor/plating,/area/maintenance/evahallway) "att" = (/obj/item/weapon/cigbutt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/evahallway) "atu" = (/obj/machinery/washing_machine,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/security/prison) @@ -1032,10 +1032,10 @@ "atR" = (/turf/simulated/floor/engine{name = "Holodeck Projector Floor"},/area/holodeck/alphadeck) "atS" = (/turf/simulated/wall/r_wall,/area/hallway/secondary/entry/fore) "atT" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape_pod1/station) -"atU" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_1"; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "escape_pod_1_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station) +"atU" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_1"; pixel_x = -25; pixel_y = 0; tag_door = "escape_pod_1_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station) "atV" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape_pod2/station) -"atW" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_2"; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "escape_pod_2_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) -"atX" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "arrivals_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "arrivals_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "arrivals_pump"; tag_exterior_door = "arrivals_outer"; frequency = 1379; id_tag = "arrivals_airlock"; tag_interior_door = "arrivals_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "arrivals_sensor"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/arrivals) +"atW" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_2"; pixel_x = -25; pixel_y = 0; tag_door = "escape_pod_2_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) +"atX" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "arrivals_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "arrivals_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "arrivals_pump"; tag_exterior_door = "arrivals_outer"; frequency = 1379; id_tag = "arrivals_airlock"; tag_interior_door = "arrivals_inner"; pixel_x = 25; req_access = list(13); tag_chamber_sensor = "arrivals_sensor"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/arrivals) "atY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating,/area/maintenance/arrivals) "atZ" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 6},/turf/simulated/wall,/area/maintenance/evahallway) "aua" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/plating,/area/maintenance/evahallway) @@ -1046,7 +1046,7 @@ "auf" = (/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) "aug" = (/obj/structure/urinal{pixel_y = 32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) "auh" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) -"aui" = (/obj/machinery/door/airlock{name = "Brig Restroom"; req_access_txt = "0"},/turf/simulated/floor,/area/security/prison) +"aui" = (/obj/machinery/door/airlock{name = "Brig Restroom"},/turf/simulated/floor,/area/security/prison) "auj" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor,/area/security/prison) "auk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/prison) "aul" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/turf/simulated/floor,/area/security/prison) @@ -1082,7 +1082,7 @@ "auP" = (/obj/structure/bed/chair{dir = 1},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) "auQ" = (/turf/simulated/wall,/area/maintenance/arrivals) "auR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/arrivals) -"auS" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "arrivals_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/arrivals) +"auS" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "arrivals_inner"; locked = 1; name = "Engineering External Access"; req_access = list(13)},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/arrivals) "auT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/arrivals) "auU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/arrivals) "auV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/arrivals) @@ -1118,10 +1118,10 @@ "avz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = -6},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "avA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "avB" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape_pod1/station) -"avC" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_1_hatch"; locked = 1; name = "Escape Pod Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station) +"avC" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_1_hatch"; locked = 1; name = "Escape Pod Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station) "avD" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/escape_pod1/station) "avE" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape_pod2/station) -"avF" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_2_hatch"; locked = 1; name = "Escape Pod Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) +"avF" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_2_hatch"; locked = 1; name = "Escape Pod Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) "avG" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/escape_pod2/station) "avH" = (/turf/simulated/floor/plating,/area/maintenance/arrivals) "avI" = (/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/maintenance/arrivals) @@ -1133,11 +1133,11 @@ "avO" = (/obj/machinery/space_heater,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/arrivals) "avP" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central_one) "avQ" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) -"avR" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eva_outer"; locked = 1; name = "EVA External Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/airless{icon_state = "circuit"},/area/maintenance/evahallway) +"avR" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eva_outer"; locked = 1; name = "EVA External Access"; req_access = list(13)},/turf/simulated/floor/airless{icon_state = "circuit"},/area/maintenance/evahallway) "avS" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eva_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "eva_pump"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/evahallway) -"avT" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eva_airlock"; name = "EVA Airlock Console"; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "1;5;11;18;24"; tag_airpump = "eva_pump"; tag_chamber_sensor = "eva_sensor"; tag_exterior_door = "eva_outer"; tag_interior_door = "eva_inner"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/maintenance/evahallway) -"avU" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eva_inner"; locked = 1; name = "EVA Internal Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/evahallway) -"avV" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eva_airlock"; name = "exterior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "1;11;18;24"},/turf/simulated/floor/plating/airless,/area/maintenance/evahallway) +"avT" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eva_airlock"; name = "EVA Airlock Console"; pixel_y = 25; req_one_access = list(1,5,11,18,24); tag_airpump = "eva_pump"; tag_chamber_sensor = "eva_sensor"; tag_exterior_door = "eva_outer"; tag_interior_door = "eva_inner"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/maintenance/evahallway) +"avU" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eva_inner"; locked = 1; name = "EVA Internal Access"; req_access = list(13)},/turf/simulated/floor/plating,/area/maintenance/evahallway) +"avV" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eva_airlock"; name = "exterior access button"; pixel_x = 0; pixel_y = 25; req_access = list(1,11,18,24)},/turf/simulated/floor/plating/airless,/area/maintenance/evahallway) "avW" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/evahallway) "avX" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/evahallway) "avY" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) @@ -1147,7 +1147,7 @@ "awc" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets{pixel_x = -3; pixel_y = -3},/turf/simulated/floor,/area/security/prison) "awd" = (/obj/structure/table,/obj/item/weapon/minihoe,/obj/item/device/analyzer/plant_analyzer,/obj/item/clothing/head/greenbandana,/turf/simulated/floor,/area/security/prison) "awe" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor,/area/security/prison) -"awf" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eva_airlock"; name = "interior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "1;11;18;24"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/evahallway) +"awf" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eva_airlock"; name = "interior access button"; pixel_x = 0; pixel_y = 25; req_access = list(1,11,18,24)},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/evahallway) "awg" = (/obj/structure/table,/obj/structure/bedsheetbin,/turf/simulated/floor,/area/security/prison) "awh" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/item/clothing/head/soft/orange,/obj/item/clothing/shoes/sandal,/turf/simulated/floor,/area/security/prison) "awi" = (/obj/machinery/light,/obj/structure/bed,/obj/item/weapon/bedsheet/orange,/turf/simulated/floor,/area/security/prison) @@ -1179,8 +1179,8 @@ "awI" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "awJ" = (/obj/structure/closet,/obj/item/weapon/storage/backpack,/turf/simulated/floor/plating,/area/maintenance/arrivals) "awK" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/maintenance/substation/security) -"awL" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "arrivals_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = 25; req_access_txt = "13"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/arrivals) -"awM" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) +"awL" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "arrivals_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = 25; req_access = list(13)},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/arrivals) +"awM" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "awN" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/turf/simulated/floor/plating,/area/maintenance/arrivals) "awO" = (/obj/structure/table/reinforced,/obj/machinery/door/blast/shutters{dir = 2; id = "bar"; layer = 3.1; name = "Bar Shutters"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "awP" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless,/area/maintenance/evahallway) @@ -1216,13 +1216,13 @@ "axt" = (/obj/structure/closet/lasertag/blue,/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) "axu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass{name = "Holodeck Control"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor,/area/crew_quarters/fitness) "axv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/crew_quarters/fitness) -"axw" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_1_berth_hatch"; locked = 1; name = "Escape Pod"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) +"axw" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_1_berth_hatch"; locked = 1; name = "Escape Pod"; req_access = list(13)},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "axx" = (/obj/structure/sign/pods,/turf/simulated/wall,/area/hallway/secondary/entry/fore) -"axy" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_2_berth_hatch"; locked = 1; name = "Escape Pod"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) +"axy" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_2_berth_hatch"; locked = 1; name = "Escape Pod"; req_access = list(13)},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "axz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/power/apc/high{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry/port) "axA" = (/obj/machinery/camera{c_tag = "Arrivals East"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry/port) "axB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"axC" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_tool_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) +"axC" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_tool_outer"; locked = 1; name = "Engineering External Access"; req_access = list(10,13)},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "axD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/evahallway) "axE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/evahallway) "axF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/evahallway) @@ -1234,7 +1234,7 @@ "axL" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/evahallway) "axM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/evahallway) "axN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating,/area/maintenance/evahallway) -"axO" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/fore) +"axO" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/fore) "axP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "axQ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor,/area/hallway/primary/fore) "axR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) @@ -1271,7 +1271,7 @@ "ayw" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/hallway/secondary/entry/fore) "ayx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/checkpoint2) "ayy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"ayz" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "solar_tool_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_tool_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "solar_tool_pump"; tag_exterior_door = "solar_tool_outer"; frequency = 1379; id_tag = "solar_tool_airlock"; tag_interior_door = "solar_tool_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "solar_tool_sensor"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/auxsolarport) +"ayz" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "solar_tool_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_tool_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "solar_tool_pump"; tag_exterior_door = "solar_tool_outer"; frequency = 1379; id_tag = "solar_tool_airlock"; tag_interior_door = "solar_tool_inner"; pixel_x = 25; req_access = list(13); tag_chamber_sensor = "solar_tool_sensor"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "ayA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "ayB" = (/obj/effect/decal/cleanable/cobweb,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/evahallway) "ayC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/evahallway) @@ -1285,7 +1285,7 @@ "ayK" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/maintenance/evahallway) "ayL" = (/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva) "ayM" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva) -"ayN" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "E.V.A. Maintenance"; req_one_access_txt = "1;5;11;18;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) +"ayN" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "E.V.A. Maintenance"; req_one_access = list(1,5,11,18,24)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "ayO" = (/obj/machinery/camera{c_tag = "Fore Primary Hallway"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "ayP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/fore) "ayQ" = (/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) @@ -1310,10 +1310,10 @@ "azj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "azk" = (/obj/machinery/camera{c_tag = "Fore Starboard Solars"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Fore Starboard"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "azl" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Fore Port"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"azm" = (/obj/machinery/door/window{dir = 8; name = "Mass Driver"; req_access_txt = "22"},/obj/machinery/mass_driver{dir = 4; id = "chapelgun"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/airlock_sensor{pixel_y = 25},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/chapel/main) +"azm" = (/obj/machinery/door/window{dir = 8; name = "Mass Driver"; req_access = list(22)},/obj/machinery/mass_driver{dir = 4; id = "chapelgun"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/airlock_sensor{pixel_y = 25},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/chapel/main) "azn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera{c_tag = "Holodeck South"; dir = 1; pixel_y = 6},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "azo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) -"azp" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_chapel_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) +"azp" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_chapel_outer"; locked = 1; name = "Engineering External Access"; req_access = list(10,13)},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "azq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "azr" = (/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry/fore) "azs" = (/turf/simulated/floor,/area/hallway/secondary/entry/fore) @@ -1329,7 +1329,7 @@ "azC" = (/obj/structure/bed/chair/office/dark,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/checkpoint2) "azD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "azE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"azF" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_tool_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) +"azF" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_tool_inner"; locked = 1; name = "Engineering External Access"; req_access = list(13)},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "azG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "azH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "azI" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/evahallway) @@ -1344,14 +1344,14 @@ "azR" = (/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/evahallway) "azS" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "azT" = (/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) -"azU" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medical Hardsuits"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"azU" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medical Hardsuits"; req_access = list(5)},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "azV" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/ai_monitored/storage/eva) "azW" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva) "azX" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva) "azY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva) "azZ" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva) "aAa" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aAb" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_security{name = "Security Hardsuits"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aAb" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_security{name = "Security Hardsuits"; req_access = list(1)},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aAc" = (/obj/structure/table/rack,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/security,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/security,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aAd" = (/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "aAe" = (/turf/simulated/floor/carpet{tag = "icon-carpet2-0"; icon_state = "carpet2-0"},/area/crew_quarters/sleep/bedrooms) @@ -1371,7 +1371,7 @@ "aAs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/library) "aAt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/library) "aAu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) -"aAv" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "solar_chapel_pump"; tag_exterior_door = "solar_chapel_outer"; frequency = 1379; id_tag = "solar_chapel_airlock"; tag_interior_door = "solar_chapel_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "solar_chapel_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_chapel_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "solar_chapel_pump"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) +"aAv" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "solar_chapel_pump"; tag_exterior_door = "solar_chapel_outer"; frequency = 1379; id_tag = "solar_chapel_airlock"; tag_interior_door = "solar_chapel_inner"; pixel_x = 25; req_access = list(13); tag_chamber_sensor = "solar_chapel_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_chapel_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "solar_chapel_pump"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aAw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "aAx" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "aAy" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry/fore) @@ -1383,7 +1383,7 @@ "aAE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/arrivals) "aAF" = (/turf/simulated/wall/r_wall,/area/maintenance/auxsolarport) "aAG" = (/obj/machinery/power/solar_control{id = "auxsolareast"; name = "Fore Port Solar Control"; track = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"aAH" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "solar_tool_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) +"aAH" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "solar_tool_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access = list(13)},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "aAI" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "aAJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/evahallway) "aAK" = (/obj/structure/closet/emcloset,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/evahallway) @@ -1412,7 +1412,7 @@ "aBh" = (/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/sleep) "aBi" = (/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/crew_quarters/sleep) "aBj" = (/turf/simulated/wall,/area/crew_quarters/toilet) -"aBk" = (/obj/machinery/door/airlock{name = "Unisex Showers"; req_access_txt = "0"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) +"aBk" = (/obj/machinery/door/airlock{name = "Unisex Showers"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aBl" = (/obj/machinery/light,/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/turf/simulated/floor{dir = 10; icon_state = "neutral"},/area/crew_quarters/fitness) "aBm" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness) "aBn" = (/obj/machinery/light_switch{pixel_y = -25},/obj/structure/closet/athletic_mixed,/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness) @@ -1421,10 +1421,10 @@ "aBq" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/maintenance/library) "aBr" = (/obj/structure/closet/lasertag/red,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/crew_quarters/fitness) "aBs" = (/obj/effect/landmark/start/ninja,/turf/space,/area/space) -"aBt" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "solar_chapel_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarstarboard) +"aBt" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "solar_chapel_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/auxsolarstarboard) "aBu" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aBv" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) -"aBw" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_chapel_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) +"aBw" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_chapel_inner"; locked = 1; name = "Engineering External Access"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aBx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aBy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aBz" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/hallway/secondary/entry/fore) @@ -1473,7 +1473,7 @@ "aCq" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aCr" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aCs" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) -"aCt" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"aCt" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "aCu" = (/turf/simulated/wall,/area/maintenance/substation/civilian_east) "aCv" = (/turf/simulated/wall/r_wall,/area/maintenance/auxsolarstarboard) "aCw" = (/obj/machinery/power/solar_control{id = "auxsolareast"; name = "Fore Starboard Solar Control"; track = 0},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/maintenance/auxsolarstarboard) @@ -1483,7 +1483,7 @@ "aCA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "aCB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "aCC" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry/port) -"aCD" = (/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "1"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/checkpoint2) +"aCD" = (/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access = list(1)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/checkpoint2) "aCE" = (/turf/simulated/wall,/area/security/checkpoint2) "aCF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/machinery/meter,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/maintenance/arrivals) "aCG" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/arrivals) @@ -1491,7 +1491,7 @@ "aCI" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "aCJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/arrivals) "aCK" = (/turf/simulated/wall,/area/storage/primary) -"aCL" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/storage/primary) +"aCL" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/storage/primary) "aCM" = (/turf/simulated/wall/r_wall,/area/storage/primary) "aCN" = (/obj/structure/closet/secure_closet/freezer/money,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/nuke_storage) "aCO" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 6},/area/security/nuke_storage) @@ -1529,8 +1529,8 @@ "aDu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/sleep) "aDv" = (/obj/machinery/camera{c_tag = "Dormitory South"; c_tag_order = 999; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) "aDw" = (/obj/structure/cable/green,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) -"aDx" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) -"aDy" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) +"aDx" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) +"aDy" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) "aDz" = (/obj/item/weapon/stool{pixel_y = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aDA" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aDB" = (/obj/machinery/power/terminal,/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) @@ -1556,7 +1556,7 @@ "aDV" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2) "aDW" = (/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint2) "aDX" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/maintenance/arrivals) -"aDY" = (/obj/machinery/door/airlock/engineering{icon_state = "door_closed"; locked = 0; name = "Fore Port Solar Access"; req_access_txt = "10"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) +"aDY" = (/obj/machinery/door/airlock/engineering{icon_state = "door_closed"; locked = 0; name = "Fore Port Solar Access"; req_access = list(10)},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "aDZ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/auxsolarport) "aEa" = (/obj/machinery/vending/assist,/turf/simulated/floor,/area/storage/primary) "aEb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/storage/primary) @@ -1579,14 +1579,14 @@ "aEs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/gateway) "aEt" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/gateway) "aEu" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/extinguisher,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/evahallway) -"aEv" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hardsuits"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aEv" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hardsuits"; req_one_access = list(11,24)},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aEw" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aEx" = (/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aEy" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aEz" = (/obj/structure/table/reinforced{icon_state = "table"},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 6},/obj/item/weapon/storage/briefcase/inflatable{pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = -3},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "aEA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aEB" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/clothing/shoes/magboots,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) -"aEC" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_one) +"aEC" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aED" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central_one) "aEE" = (/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/hallway/primary/central_one) "aEF" = (/obj/structure/table/woodentable,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/weapon/tape_roll,/turf/simulated/floor/wood,/area/library) @@ -1596,13 +1596,13 @@ "aEJ" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aEK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aEL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) -"aEM" = (/obj/machinery/door/airlock{name = "Unisex Showers"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) +"aEM" = (/obj/machinery/door/airlock{name = "Unisex Showers"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aEN" = (/obj/machinery/light/small,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aEO" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aEP" = (/obj/item/weapon/storage/secure/safe{pixel_x = -22; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aEQ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aER" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"aES" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Bar Maintenance"; req_access_txt = "25"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/bar) +"aES" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Bar Maintenance"; req_access = list(25)},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/bar) "aET" = (/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j1s"; sortType = "Bar"; name = "Bar"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/bar) "aEU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) "aEV" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/library) @@ -1640,18 +1640,18 @@ "aFB" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/arrivals) "aFC" = (/turf/simulated/wall,/area/maintenance/substation/civilian_west) "aFD" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/arrivals) -"aFE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Civilian West Substation"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) +"aFE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Civilian West Substation"; req_one_access = list(11,24)},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) "aFF" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry/port) -"aFG" = (/obj/machinery/door/airlock/security{name = "Security Checkpoint"; req_access = null; req_access_txt = "1"},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) +"aFG" = (/obj/machinery/door/airlock/security{name = "Security Checkpoint"; req_access = list(1)},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) "aFH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) -"aFI" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/primary) +"aFI" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/primary) "aFJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/storage/primary) "aFK" = (/obj/effect/landmark/start{name = "Assistant"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/storage/primary) "aFL" = (/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) "aFM" = (/obj/item/weapon/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) "aFN" = (/obj/effect/landmark/start{name = "Assistant"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/storage/primary) "aFO" = (/obj/machinery/lapvend,/turf/simulated/floor,/area/storage/primary) -"aFP" = (/obj/structure/table/rack,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 1; name = "Weapons locker"; req_access_txt = "3"},/obj/item/clothing/suit/armor/bulletproof{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/armor/bulletproof{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"aFP" = (/obj/structure/table/rack,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 1; name = "Weapons locker"; req_access = list(3)},/obj/item/clothing/suit/armor/bulletproof{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/armor/bulletproof{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) "aFQ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "vault"},/area/security/nuke_storage) "aFR" = (/obj/item/weapon/coin/silver{pixel_x = 7; pixel_y = 12},/obj/item/weapon/coin/silver{pixel_x = 12; pixel_y = 7},/obj/item/weapon/coin/silver{pixel_x = 4; pixel_y = 8},/obj/item/weapon/coin/silver{pixel_x = -6; pixel_y = 5},/obj/item/weapon/coin/silver{pixel_x = 5; pixel_y = -8},/obj/structure/closet/crate{name = "Silver Crate"},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/security/nuke_storage) "aFS" = (/obj/machinery/camera{c_tag = "Gateway"; dir = 4; network = list("SS13")},/obj/machinery/vending/coffee,/turf/simulated/floor,/area/gateway) @@ -1661,7 +1661,7 @@ "aFW" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/evahallway) "aFX" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aFY" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aFZ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "1;5;11;18;24"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aFZ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_one_access = list(1,5,11,18,24)},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aGa" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aGb" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "aGc" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/fore) @@ -1672,7 +1672,7 @@ "aGh" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/entry/port) "aGi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aGj" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/reagent_dispensers/watertank,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/library) -"aGk" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep) +"aGk" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep) "aGl" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aGm" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aGn" = (/obj/structure/sign/poster{pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/crew_quarters/toilet) @@ -1685,7 +1685,7 @@ "aGu" = (/obj/item/weapon/cigbutt,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/dormitory) "aGv" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) "aGw" = (/obj/effect/decal/cleanable/dirt,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/bar) -"aGx" = (/obj/machinery/door/airlock/engineering{icon_state = "door_closed"; locked = 0; name = "Fore Starboard Solar Access"; req_access_txt = "10"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) +"aGx" = (/obj/machinery/door/airlock/engineering{icon_state = "door_closed"; locked = 0; name = "Fore Starboard Solar Access"; req_access = list(10)},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aGy" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/auxsolarstarboard) "aGz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/library) "aGA" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/landmark{name = "blobstart"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/library) @@ -1695,7 +1695,7 @@ "aGE" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/library) "aGF" = (/turf/simulated/wall,/area/chapel/office) "aGG" = (/turf/simulated/wall,/area/chapel/main) -"aGH" = (/obj/machinery/door/airlock/maintenance{name = "Chapel Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;22"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/chapel/main) +"aGH" = (/obj/machinery/door/airlock/maintenance{name = "Chapel Maintenance"; req_one_access = list(12,22)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/chapel/main) "aGI" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/arrival/station) "aGJ" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "aGK" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/arrival/station) @@ -1748,7 +1748,7 @@ "aHF" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aHG" = (/obj/machinery/light/small{dir = 8},/obj/machinery/recharge_station,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aHH" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"aHI" = (/obj/item/device/radio/intercom{pixel_x = 25},/obj/structure/window/reinforced,/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"aHI" = (/obj/item/device/radio/intercom{pixel_x = 25},/obj/structure/window/reinforced,/obj/structure/closet/secure_closet/bar{req_access = list(25)},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aHJ" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/bar) "aHK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/bar) "aHL" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/bar) @@ -1760,7 +1760,7 @@ "aHR" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Dormitory"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/central_two) "aHS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/bar) "aHT" = (/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j1s"; sortType = "Hydroponics"; name = "Hydroponics"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/bar) -"aHU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Bar\\Library Maintenance"; req_access_txt = "0"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/library) +"aHU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Bar\\Library Maintenance"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/library) "aHV" = (/obj/structure/closet,/obj/item/device/flashlight,/obj/effect/decal/cleanable/cobweb2,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/bar) "aHW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/maintenance/bar) "aHX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Fore Starboard Solar Access"; dir = 1},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/library) @@ -1768,18 +1768,18 @@ "aHZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/bar) "aIa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/library) "aIb" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/library) -"aIc" = (/obj/machinery/door/airlock/maintenance{name = "Library Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;37"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/library) +"aIc" = (/obj/machinery/door/airlock/maintenance{name = "Library Maintenance"; req_one_access = list(12,37)},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/library) "aId" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/structure/table/woodentable,/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/turf/simulated/floor/wood,/area/library) "aIe" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/packageWrap,/turf/simulated/floor/wood,/area/library) "aIf" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/wood,/area/library) "aIg" = (/turf/simulated/wall,/area/library) -"aIh" = (/obj/machinery/door/airlock/maintenance{name = "Crematorium Maintenance"; req_access_txt = "27"},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/chapel/office) +"aIh" = (/obj/machinery/door/airlock/maintenance{name = "Crematorium Maintenance"; req_access = list(27)},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/chapel/office) "aIi" = (/obj/structure/closet/wardrobe/chaplain_black,/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aIj" = (/obj/machinery/light/small{dir = 1},/obj/machinery/requests_console{department = "Chapel"; departmentType = 2; pixel_y = 30},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aIk" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/camera{c_tag = "Chapel Office"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aIl" = (/obj/machinery/door_control{id = "chapel"; name = "Privacy Shutters"; pixel_y = 25},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aIm" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/rag,/obj/structure/noticeboard{pixel_x = -30; pixel_y = 0},/obj/machinery/door/blast/shutters{dir = 2; id = "bar"; layer = 3.1; name = "Bar Shutters"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) -"aIn" = (/obj/structure/closet/coffin,/obj/machinery/door/window/eastleft{name = "Coffin Storage"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"aIn" = (/obj/structure/closet/coffin,/obj/machinery/door/window/eastleft{name = "Coffin Storage"; req_access = list(22)},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aIo" = (/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aIp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aIq" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) @@ -1795,12 +1795,12 @@ "aIA" = (/turf/simulated/wall,/area/hallway/secondary/entry/starboard) "aIB" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) "aIC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/starboard) -"aID" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/window/brigdoor{dir = 1; name = "Security Checkpoint"; req_access_txt = "63"},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry/starboard) +"aID" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/window/brigdoor{dir = 1; name = "Security Checkpoint"; req_access = list(63)},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry/starboard) "aIE" = (/obj/structure/sign/double/map/left,/turf/simulated/wall,/area/hallway/secondary/entry/starboard) "aIF" = (/obj/structure/sign/double/map/right,/turf/simulated/wall,/area/hallway/secondary/entry/starboard) "aIG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) "aIH" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) -"aII" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/engineering{name = "Civilian West Substation"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) +"aII" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/engineering{name = "Civilian West Substation"; req_one_access = list(11,24)},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) "aIJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) "aIK" = (/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/storage/primary) "aIL" = (/obj/effect/landmark/start{name = "Assistant"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/storage/primary) @@ -1817,7 +1817,7 @@ "aIW" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/evahallway) "aIX" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/evahallway) "aIY" = (/obj/machinery/suit_cycler/engineering,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) -"aIZ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A. Cycler Access"; req_access_txt = "0"; req_one_access_txt = "1;5;11;18;24"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aIZ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A. Cycler Access"; req_one_access = list(1,5,11,18,24)},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aJa" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aJb" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "aJc" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) @@ -1836,11 +1836,11 @@ "aJp" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aJq" = (/obj/machinery/door/airlock{name = "Unit B"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aJr" = (/obj/structure/sign/securearea{desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; pixel_x = -28; pixel_y = 4},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"aJs" = (/obj/machinery/door/window/southleft{name = "Bar Delivery"; icon_state = "left"; dir = 8; req_access_txt = "25"; base_state = "left"},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/bar) +"aJs" = (/obj/machinery/door/window/southleft{name = "Bar Delivery"; icon_state = "left"; dir = 8; req_access = list(25); base_state = "left"},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/bar) "aJt" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Bar"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/crew_quarters/bar) "aJu" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/substation/command) "aJv" = (/obj/effect/landmark{name = "blobstart"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/bar) -"aJw" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Kitchen Cold Room Maintenance"; req_access_txt = "28"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/maintenance/bar) +"aJw" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Kitchen Cold Room Maintenance"; req_access = list(28)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/maintenance/bar) "aJx" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Kitchen"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/bar) "aJy" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/bar) "aJz" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/bar) @@ -1871,7 +1871,7 @@ "aJY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) "aJZ" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/power/sensor{name = "Powernet Sensor - Civilian West"; name_tag = "Civilian West Subgrid"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) "aKa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/power/breakerbox/activated{RCon_tag = "Civilian West Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) -"aKb" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "1;11;18;24"},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_one) +"aKb" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_one_access = list(1,11,18,24)},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_one) "aKc" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/storage/emergency2) "aKd" = (/turf/simulated/floor,/area/hallway/secondary/entry/starboard) "aKe" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/storage/emergency2) @@ -1879,9 +1879,9 @@ "aKg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/locker) "aKh" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/locker) "aKi" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/locker) -"aKj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/locker) +"aKj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access = list(12)},/turf/simulated/floor/plating,/area/maintenance/locker) "aKk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/locker) -"aKl" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Warehouse Maintenance"; req_access_txt = "31"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/quartermaster/storage) +"aKl" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Warehouse Maintenance"; req_access = list(31)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/quartermaster/storage) "aKm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/storage/primary) "aKn" = (/turf/simulated/floor,/area/storage/primary) "aKo" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/storage/primary) @@ -1908,33 +1908,33 @@ "aKJ" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aKK" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aKL" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/rig/unathi,/obj/item/clothing/mask/breath,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) -"aKM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) +"aKM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aKN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/central_one) "aKO" = (/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central_one) "aKP" = (/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Central Hallway North"; dir = 2},/obj/structure/sign/directions/evac{dir = 4; icon_state = "direction_evac"; pixel_y = 24; tag = "icon-direction_evac (EAST)"},/obj/structure/sign/directions/security{dir = 1; icon_state = "direction_sec"; pixel_y = 40; tag = "icon-direction_sec (NORTH)"},/obj/structure/sign/directions/medical{dir = 4; icon_state = "direction_med"; pixel_y = 32; tag = "icon-direction_med (EAST)"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central_one) -"aKQ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) +"aKQ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aKR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aKS" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_two) -"aKT" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "1;11;18;24"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_one) +"aKT" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_one_access = list(1,11,18,24)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_one) "aKU" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/central_two) "aKV" = (/obj/machinery/camera{c_tag = "Dormitory Toilets"; dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aKW" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) -"aKX" = (/obj/machinery/door/airlock{name = "Bar Backroom"; req_access_txt = "25"},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/crew_quarters/bar) -"aKY" = (/obj/machinery/door/airlock/maintenance{name = "Bar Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;25;28"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/bar) +"aKX" = (/obj/machinery/door/airlock{name = "Bar Backroom"; req_access = list(25)},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/crew_quarters/bar) +"aKY" = (/obj/machinery/door/airlock/maintenance{name = "Bar Maintenance"; req_one_access = list(12,25,28)},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/bar) "aKZ" = (/turf/simulated/wall,/area/crew_quarters/kitchen) "aLa" = (/obj/structure/sink/kitchen{pixel_y = 28},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aLb" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aLc" = (/obj/structure/closet/chefcloset,/obj/machinery/light/small{dir = 1},/obj/item/device/eftpos{eftpos_name = "Kitchen EFTPOS scanner"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aLd" = (/obj/machinery/camera{c_tag = "Kitchen Cold Room"},/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) -"aLe" = (/obj/machinery/door/window/southleft{base_state = "left"; dir = 2; icon_state = "left"; name = "Kitchen Delivery"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/kitchen) +"aLe" = (/obj/machinery/door/window/southleft{base_state = "left"; dir = 2; icon_state = "left"; name = "Kitchen Delivery"; req_access = list(28)},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/kitchen) "aLf" = (/turf/simulated/wall,/area/hydroponics) "aLg" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Hydroponics"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) "aLh" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/hydroponics) -"aLi" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"},/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/hydroponics) +"aLi" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access = list(35)},/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/hydroponics) "aLj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/wood,/area/library) "aLk" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/wood,/area/library) "aLl" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/library) -"aLm" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "nuke_shuttle_dock_airlock"; pixel_x = 0; pixel_y = 30; req_access_txt = "0"; req_one_access_txt = "13"; tag_airpump = "nuke_shuttle_dock_pump"; tag_chamber_sensor = "nuke_shuttle_dock_sensor"; tag_exterior_door = "nuke_shuttle_dock_outer"; tag_interior_door = "nuke_shuttle_dock_inner"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry/port) +"aLm" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "nuke_shuttle_dock_airlock"; pixel_x = 0; pixel_y = 30; req_one_access = list(13); tag_airpump = "nuke_shuttle_dock_pump"; tag_chamber_sensor = "nuke_shuttle_dock_sensor"; tag_exterior_door = "nuke_shuttle_dock_outer"; tag_interior_door = "nuke_shuttle_dock_inner"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry/port) "aLn" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/library) "aLo" = (/obj/machinery/newscaster{pixel_x = 30},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/wood,/area/library) "aLp" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) @@ -1972,11 +1972,11 @@ "aLV" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/hallway/primary/port) "aLW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/hallway/primary/port) "aLX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/primary/port) -"aLY" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/port) +"aLY" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/port) "aLZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/port) "aMa" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Gateway Access"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/port) "aMb" = (/turf/simulated/wall,/area/hallway/primary/central_one) -"aMc" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_one) +"aMc" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aMd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aMe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/sign/securearea,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aMf" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 4},/area/hallway/primary/central_two) @@ -2004,7 +2004,7 @@ "aMB" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aMC" = (/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aMD" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) -"aME" = (/obj/machinery/door/window/eastright{name = "Hydroponics Delivery"; icon_state = "right"; dir = 2; req_access_txt = "35"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) +"aME" = (/obj/machinery/door/window/eastright{name = "Hydroponics Delivery"; icon_state = "right"; dir = 2; req_access = list(35)},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) "aMF" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 8},/obj/machinery/alarm{pixel_y = 22},/obj/machinery/camera{c_tag = "Hydroponics Pasture"},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "aMG" = (/obj/structure/sink/kitchen{pixel_y = 28},/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "aMH" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) @@ -2023,7 +2023,7 @@ "aMU" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/wood,/area/library) "aMV" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera{c_tag = "Chapel Crematorium"; dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "aMW" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) -"aMX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock{name = "Crematorium"; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) +"aMX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock{name = "Crematorium"; req_access = list(27)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "aMY" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aMZ" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aNa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) @@ -2111,7 +2111,7 @@ "aOE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics) "aOF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics) "aOG" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 5; icon_state = "green"},/area/hydroponics) -"aOH" = (/obj/machinery/door/airlock/glass{name = "Hydroponics Pasture"; req_access_txt = "35"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hydroponics) +"aOH" = (/obj/machinery/door/airlock/glass{name = "Hydroponics Pasture"; req_access = list(35)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hydroponics) "aOI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 9; icon_state = "green"},/area/hydroponics) "aOJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics) "aOK" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics) @@ -2185,7 +2185,7 @@ "aQa" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit) "aQb" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aQc" = (/obj/effect/landmark/start{name = "Bartender"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) -"aQd" = (/obj/machinery/door/window{dir = 4; name = "Bar"; req_access_txt = "25"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) +"aQd" = (/obj/machinery/door/window{dir = 4; name = "Bar"; req_access = list(25)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aQe" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/crew_quarters/bar) "aQf" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/carpet,/area/crew_quarters/bar) "aQg" = (/obj/machinery/light/small{dir = 4},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/obj/structure/table/woodentable,/obj/item/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/simulated/floor/carpet,/area/crew_quarters/bar) @@ -2205,10 +2205,10 @@ "aQu" = (/obj/machinery/bookbinder{pixel_y = 0},/turf/simulated/floor/wood,/area/library) "aQv" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/library) "aQw" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/library) -"aQx" = (/obj/machinery/door/airlock/glass{name = "Chapel Office"; req_access_txt = "22"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) -"aQy" = (/obj/machinery/door/morgue{dir = 2; name = "Confession Booth (Chaplain)"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"aQx" = (/obj/machinery/door/airlock/glass{name = "Chapel Office"; req_access = list(22)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) +"aQy" = (/obj/machinery/door/morgue{dir = 2; name = "Confession Booth (Chaplain)"; req_access = list(22)},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aQz" = (/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_x = 25},/obj/structure/bed/chair,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) -"aQA" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "nuke_shuttle_dock_airlock"; name = "interior access button"; pixel_x = -28; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry/port) +"aQA" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "nuke_shuttle_dock_airlock"; name = "interior access button"; pixel_x = -28; pixel_y = 25; req_one_access = list(13)},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry/port) "aQB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aQC" = (/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aQD" = (/obj/machinery/vending/snack,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/port) @@ -2218,7 +2218,7 @@ "aQH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aQI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aQJ" = (/obj/machinery/camera{c_tag = "Arrivals Center"; dir = 4; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry/port) -"aQK" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/starboard) +"aQK" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/starboard) "aQL" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/hallway/secondary/entry/starboard) "aQM" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry/starboard) "aQN" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) @@ -2251,13 +2251,13 @@ "aRo" = (/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central_two) "aRp" = (/turf/simulated/floor,/area/hallway/primary/central_two) "aRq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/central_two) -"aRr" = (/obj/structure/closet/coffin,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "chapel"; name = "Privacy Shutters"; opacity = 0},/obj/machinery/door/window/eastleft{dir = 8; name = "Coffin Storage"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) +"aRr" = (/obj/structure/closet/coffin,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "chapel"; name = "Privacy Shutters"; opacity = 0},/obj/machinery/door/window/eastleft{dir = 8; name = "Coffin Storage"; req_access = list(22)},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "aRs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/blast/shutters{dir = 2; id = "bar"; layer = 3.1; name = "Bar Shutters"},/turf/simulated/floor/plating,/area/hallway/primary/central_two) "aRt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/shutters{dir = 8; id = "office_shutter"; layer = 3.1; name = "Office Shutters"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "aRu" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/crew_quarters/bar) "aRv" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/crew_quarters/bar) "aRw" = (/obj/machinery/vending/cigarette{pixel_x = 0; pixel_y = 0},/obj/structure/window/reinforced,/turf/simulated/floor/carpet,/area/crew_quarters/bar) -"aRx" = (/obj/machinery/door/airlock{name = "Kitchen cold room"; req_access_txt = "28"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) +"aRx" = (/obj/machinery/door/airlock{name = "Kitchen cold room"; req_access = list(28)},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aRy" = (/obj/structure/table,/obj/item/weapon/hatchet,/obj/item/weapon/minihoe,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics) "aRz" = (/obj/machinery/biogenerator,/turf/simulated/floor,/area/hydroponics) "aRA" = (/obj/machinery/seed_extractor,/turf/simulated/floor,/area/hydroponics) @@ -2300,12 +2300,12 @@ "aSl" = (/obj/structure/bed/chair/comfy/beige{tag = "icon-comfychair (NORTH)"; icon_state = "comfychair"; dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry/starboard) "aSm" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry/starboard) "aSn" = (/obj/structure/cable/green,/obj/machinery/power/apc/high{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) -"aSo" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/port) +"aSo" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/port) "aSp" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor,/area/hallway/primary/port) "aSq" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/port) "aSr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/port) "aSs" = (/obj/machinery/door/airlock/glass{name = "Art Storage"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/port) -"aSt" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/hallway/primary/port) +"aSt" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/hallway/primary/port) "aSu" = (/obj/structure/table,/turf/simulated/floor,/area/hallway/primary/port) "aSv" = (/obj/structure/table,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/hallway/primary/port) "aSw" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/closet/emcloset,/turf/simulated/floor,/area/hallway/primary/port) @@ -2337,7 +2337,7 @@ "aSW" = (/obj/machinery/disposal,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aSX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/kitchen) "aSY" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"aSZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass{name = "Hydroponics Pasture"; req_access_txt = "28"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) +"aSZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass{name = "Hydroponics Pasture"; req_access = list(28)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aTa" = (/obj/machinery/smartfridge,/turf/simulated/wall,/area/crew_quarters/kitchen) "aTb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/kitchen) "aTc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/kitchen) @@ -2399,9 +2399,9 @@ "aUg" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/storage/art) "aUh" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/storage/art) "aUi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/locker) -"aUj" = (/obj/machinery/door/airlock{name = "Port Emergency Storage"; req_access_txt = "0"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/hallway/primary/port) +"aUj" = (/obj/machinery/door/airlock{name = "Port Emergency Storage"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/hallway/primary/port) "aUk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/port) -"aUl" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Auxiliary Tool Storage"; req_access_txt = "12"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/port) +"aUl" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Auxiliary Tool Storage"; req_access = list(12)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/port) "aUm" = (/turf/simulated/wall,/area/storage/tools) "aUn" = (/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/hallway/primary/central_one) "aUo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_one) @@ -2447,7 +2447,7 @@ "aVc" = (/obj/structure/bookcase{name = "bookcase (Fiction)"},/turf/simulated/floor/wood,/area/library) "aVd" = (/obj/structure/bookcase{name = "bookcase (Non-Fiction)"},/turf/simulated/floor/wood,/area/library) "aVe" = (/obj/machinery/camera{c_tag = "Library South"; dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/library) -"aVf" = (/obj/machinery/door/morgue{dir = 2; name = "Private Study"; req_access_txt = "37"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/library) +"aVf" = (/obj/machinery/door/morgue{dir = 2; name = "Private Study"; req_access = list(37)},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/library) "aVg" = (/obj/machinery/light{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aVh" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "aVi" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/chapel/main) @@ -2476,7 +2476,7 @@ "aVF" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/storage/art) "aVG" = (/turf/simulated/wall,/area/storage/emergency2) "aVH" = (/obj/machinery/light_switch{pixel_y = 28},/obj/structure/closet/hydrant{pixel_x = -32},/turf/simulated/floor/plating,/area/storage/emergency2) -"aVI" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "5;12;47"},/turf/simulated/floor/plating,/area/hallway/primary/starboard) +"aVI" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{req_one_access = list(5,12,47)},/turf/simulated/floor/plating,/area/hallway/primary/starboard) "aVJ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/research_port) "aVK" = (/turf/simulated/floor/plating,/area/storage/emergency2) "aVL" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/camera{c_tag = "Auxiliary Tool Storage"; dir = 2},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/storage/tools) @@ -2508,7 +2508,7 @@ "aWl" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 8},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aWm" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aWn" = (/obj/structure/table/reinforced,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) -"aWo" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access_txt = "28"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) +"aWo" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access = list(28)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aWp" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aWq" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aWr" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) @@ -2516,7 +2516,7 @@ "aWt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aWu" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aWv" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"aWw" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access_txt = "28"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/hydroponics/garden) +"aWw" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access = list(28)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/hydroponics/garden) "aWx" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/smartfridge/drying_rack,/turf/simulated/floor{dir = 9; icon_state = "green"},/area/hydroponics/garden) "aWy" = (/obj/structure/table/reinforced,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "grimy"},/area/hydroponics/garden) "aWz" = (/obj/item/weapon/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Gardener"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics/garden) @@ -2525,7 +2525,7 @@ "aWC" = (/obj/structure/flora/bush,/turf/simulated/floor/grass,/area/hydroponics/garden) "aWD" = (/obj/machinery/portable_atmospherics/hydroponics/soil,/turf/simulated/floor/grass,/area/hydroponics/garden) "aWE" = (/obj/structure/flora/ausbushes/sparsegrass,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/grass,/area/hydroponics/garden) -"aWF" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 8; icon_state = "right"; name = "Library Desk Door"; req_access_txt = "37"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/library) +"aWF" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 8; icon_state = "right"; name = "Library Desk Door"; req_access = list(37)},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/library) "aWG" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/wood,/area/library) "aWH" = (/obj/structure/table/woodentable,/obj/machinery/librarycomp{pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/wood,/area/library) "aWI" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) @@ -2620,11 +2620,11 @@ "aYt" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit) "aYu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/secondary/exit) "aYv" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor,/area/hallway/secondary/exit) -"aYw" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_north_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor,/area/hallway/secondary/exit) -"aYx" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_inner"; locked = 1; name = "Escape Airlock"; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = -19},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"aYy" = (/obj/machinery/light/small,/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_north_airlock"; master_tag = "escape_dock"; pixel_y = 30; req_one_access_txt = "13"; tag_airlock_mech_sensor = "escape_dock_north_mech"; tag_airpump = "escape_dock_north_pump"; tag_chamber_sensor = "escape_dock_north_sensor"; tag_exterior_door = "escape_dock_north_outer"; tag_interior_door = "escape_dock_north_inner"; tag_shuttle_mech_sensor = "shuttle_dock_north_mech"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_north_pump"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"aYw" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_north_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_one_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor,/area/hallway/secondary/exit) +"aYx" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = -19},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"aYy" = (/obj/machinery/light/small,/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_north_airlock"; master_tag = "escape_dock"; pixel_y = 30; req_one_access = list(13); tag_airlock_mech_sensor = "escape_dock_north_mech"; tag_airpump = "escape_dock_north_pump"; tag_chamber_sensor = "escape_dock_north_sensor"; tag_exterior_door = "escape_dock_north_outer"; tag_interior_door = "escape_dock_north_inner"; tag_shuttle_mech_sensor = "shuttle_dock_north_mech"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_north_pump"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "aYz" = (/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_north_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"aYA" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_outer"; locked = 1; name = "Escape Airlock"; req_access_txt = "13"},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = -19},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"aYA" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = -19},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "aYB" = (/turf/space,/area/shuttle/transport1/station) "aYC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "aYD" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry/aft) @@ -2645,7 +2645,7 @@ "aYS" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/locker) "aYT" = (/obj/structure/closet/wardrobe/grey,/obj/machinery/requests_console{department = "Locker Room"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor,/area/crew_quarters/locker) "aYU" = (/obj/structure/table,/obj/item/clothing/head/soft/grey{pixel_x = -2; pixel_y = 3},/turf/simulated/floor,/area/crew_quarters/locker) -"aYV" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "nuke_shuttle_dock_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = 32; req_access_txt = "0"; req_one_access_txt = "13"},/turf/space,/area/space) +"aYV" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "nuke_shuttle_dock_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = 32; req_one_access = list(13)},/turf/space,/area/space) "aYW" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/crew_quarters/locker) "aYX" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/tank/air{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/locker) "aYY" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/storage/tools) @@ -2676,7 +2676,7 @@ "aZx" = (/obj/machinery/portable_atmospherics/hydroponics/soil,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/grass,/area/hydroponics/garden) "aZy" = (/obj/structure/flora/ausbushes/brflowers,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/grass,/area/hydroponics/garden) "aZz" = (/turf/simulated/wall,/area/hallway/primary/starboard) -"aZA" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/button/driver{id = "trash"; pixel_x = -26; pixel_y = -6},/turf/simulated/floor/plating,/area/maintenance/disposal) +"aZA" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access = list(12)},/obj/machinery/button/driver{id = "trash"; pixel_x = -26; pixel_y = -6},/turf/simulated/floor/plating,/area/maintenance/disposal) "aZB" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/carpet,/area/library) "aZC" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/carpet,/area/library) "aZD" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/turf/simulated/floor/wood,/area/library) @@ -2741,9 +2741,9 @@ "baK" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/hallway/primary/central_one) "baL" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/central_one) "baM" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central_one) -"baN" = (/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) +"baN" = (/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access = list(19)},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) "baO" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/chapel/main) -"baP" = (/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) +"baP" = (/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access = list(19)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) "baQ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) "baR" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/bridge) "baS" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bluecorner"},/area/bridge) @@ -2752,16 +2752,16 @@ "baV" = (/obj/machinery/light,/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "baW" = (/obj/machinery/camera{c_tag = "Bridge Center"; dir = 1},/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge RC"; pixel_y = -30},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "baX" = (/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) -"baY" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "19"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) +"baY" = (/obj/machinery/door_control{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = -1; pixel_y = -24; req_access = list(19)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "baZ" = (/obj/machinery/light,/obj/machinery/newscaster{pixel_y = -28},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "bba" = (/obj/machinery/light_switch{pixel_y = -25},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "bbb" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "bbc" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/bridge) "bbd" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/bridge) "bbe" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) -"bbf" = (/obj/machinery/door/airlock/glass_command{id_tag = "sbridgedoor"; name = "Bridge"; req_access_txt = "19"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) +"bbf" = (/obj/machinery/door/airlock/glass_command{id_tag = "sbridgedoor"; name = "Bridge"; req_access = list(19)},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/bridge) "bbg" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge) -"bbh" = (/obj/machinery/door/airlock/glass_command{id_tag = "sbridgedoor"; name = "Bridge"; req_access_txt = "19"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/bridge) +"bbh" = (/obj/machinery/door/airlock/glass_command{id_tag = "sbridgedoor"; name = "Bridge"; req_access = list(19)},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/bridge) "bbi" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central_two) "bbj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/central_two) "bbk" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_two) @@ -2795,10 +2795,10 @@ "bbM" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/hallway/secondary/exit) "bbN" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/exit) "bbO" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"bbP" = (/obj/structure/lattice,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_north_airlock"; name = "exterior access button"; pixel_x = 5; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"},/turf/space,/area/space) -"bbQ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) -"bbR" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "centcom_shuttle_dock_airlock"; pixel_x = 0; pixel_y = 30; req_access_txt = "0"; req_one_access_txt = "13"; tag_airpump = "centcom_shuttle_dock_pump"; tag_chamber_sensor = "centcom_shuttle_dock_sensor"; tag_exterior_door = "centcom_shuttle_dock_outer"; tag_interior_door = "centcom_shuttle_dock_inner"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "centcom_shuttle_dock_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "centcom_shuttle_dock_pump"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) -"bbS" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"bbP" = (/obj/structure/lattice,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_north_airlock"; name = "exterior access button"; pixel_x = 5; pixel_y = 25; req_one_access = list(13)},/turf/space,/area/space) +"bbQ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"bbR" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "centcom_shuttle_dock_airlock"; pixel_x = 0; pixel_y = 30; req_one_access = list(13); tag_airpump = "centcom_shuttle_dock_pump"; tag_chamber_sensor = "centcom_shuttle_dock_sensor"; tag_exterior_door = "centcom_shuttle_dock_outer"; tag_interior_door = "centcom_shuttle_dock_inner"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "centcom_shuttle_dock_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "centcom_shuttle_dock_pump"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"bbS" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "bbT" = (/obj/structure/table,/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/tape_roll,/turf/simulated/floor,/area/crew_quarters/locker) "bbU" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/secondary/entry/aft) "bbV" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/vacantoffice) @@ -2806,7 +2806,7 @@ "bbX" = (/obj/structure/table/rack{dir = 4},/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/locker) "bbY" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/maintenance/locker) "bbZ" = (/turf/simulated/wall,/area/crew_quarters/locker/locker_toilet) -"bca" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) +"bca" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bcb" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/locker) "bcc" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/crew_quarters/locker) "bcd" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "warningcorner"; dir = 2},/area/crew_quarters/locker) @@ -2847,11 +2847,11 @@ "bcM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bcN" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bcO" = (/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/bar) -"bcP" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) +"bcP" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access = list(28)},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bcQ" = (/obj/machinery/light_switch{pixel_x = 16; pixel_y = -23},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bcR" = (/obj/machinery/light,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bcS" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"bcT" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/door_control{id = "kitchen"; name = "Kitchen Shutters Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "28"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) +"bcT" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/door_control{id = "kitchen"; name = "Kitchen Shutters Control"; pixel_x = -1; pixel_y = -24; req_access = list(28)},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bcU" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bcV" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("Research","Toxins Test Area","Robots","Anomaly Isolation","Research Outpost"); pixel_x = 0; pixel_y = 2},/obj/structure/table,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bcW" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics/garden) @@ -2900,7 +2900,7 @@ "bdN" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/disposalpipe/segment,/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/crew_quarters/locker) "bdO" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/locker) "bdP" = (/turf/simulated/wall,/area/quartermaster/storage) -"bdQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Medbay Substation"; req_access_txt = "0"; req_one_access_txt = "11;24;5"},/turf/simulated/floor/plating,/area/maintenance/substation/medical) +"bdQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Medbay Substation"; req_one_access = list(11,24,5)},/turf/simulated/floor/plating,/area/maintenance/substation/medical) "bdR" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office) "bdS" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/turf/simulated/floor/plating,/area/quartermaster/office) "bdT" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/structure/plasticflaps{opacity = 0},/turf/simulated/floor/plating,/area/quartermaster/office) @@ -2910,11 +2910,11 @@ "bdX" = (/obj/machinery/door/firedoor/border_only{name = "\improper Firelock South"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central_one) "bdY" = (/turf/simulated/wall/r_wall,/area/bridge/meeting_room) "bdZ" = (/turf/simulated/wall,/area/bridge/meeting_room) -"bea" = (/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = null; req_access_txt = "19"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/wood,/area/bridge/meeting_room) +"bea" = (/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = list(19)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/wood,/area/bridge/meeting_room) "beb" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai) "bec" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "bed" = (/turf/simulated/wall/r_wall,/area/crew_quarters/captain) -"bee" = (/obj/machinery/door/airlock/command{id_tag = "captaindoor"; name = "Captain's Office"; req_access = null; req_access_txt = "20"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bee" = (/obj/machinery/door/airlock/command{id_tag = "captaindoor"; name = "Captain's Office"; req_access = list(20)},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bef" = (/obj/machinery/computer/arcade,/turf/simulated/floor/wood,/area/crew_quarters/bar) "beg" = (/obj/machinery/vending/cola,/turf/simulated/floor/wood,/area/crew_quarters/bar) "beh" = (/obj/machinery/light,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/wood,/area/crew_quarters/bar) @@ -2948,8 +2948,8 @@ "beJ" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green,/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit) "beK" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 2},/area/hallway/secondary/exit) "beL" = (/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit) -"beM" = (/obj/structure/lattice,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_south_airlock"; name = "exterior access button"; pixel_x = 5; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13"},/turf/space,/area/space) -"beN" = (/obj/structure/lattice,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "centcom_shuttle_dock_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"},/turf/space,/area/space) +"beM" = (/obj/structure/lattice,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_south_airlock"; name = "exterior access button"; pixel_x = 5; pixel_y = -25; req_one_access = list(13)},/turf/space,/area/space) +"beN" = (/obj/structure/lattice,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "centcom_shuttle_dock_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = 25; req_one_access = list(13)},/turf/space,/area/space) "beO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "beP" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/aft) "beQ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry/aft) @@ -2985,8 +2985,8 @@ "bfu" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/wood,/area/bridge/meeting_room) "bfv" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bfw" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/porta_turret,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"bfx" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_tool_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/auxport) -"bfy" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_chapel_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "10;13"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) +"bfx" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_tool_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access = list(13)},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/auxport) +"bfy" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_chapel_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access = list(10,13)},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "bfz" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable/green,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bfA" = (/obj/machinery/porta_turret,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bfB" = (/obj/effect/decal/cleanable/cobweb2,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -3034,7 +3034,7 @@ "bgr" = (/turf/simulated/wall,/area/hallway/secondary/entry/aft) "bgs" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/hallway/secondary/entry/aft) "bgt" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/secondary/entry/aft) -"bgu" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/security/vacantoffice) +"bgu" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_access = list(12)},/turf/simulated/floor/plating,/area/security/vacantoffice) "bgv" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/plating,/area/maintenance/locker) "bgw" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/locker) "bgx" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) @@ -3052,7 +3052,7 @@ "bgJ" = (/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/quartermaster/office) "bgK" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_one) "bgL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_one) -"bgM" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/brigdoor{name = "Visitation Window"; req_access_txt = "63"},/turf/simulated/floor,/area/security/prison) +"bgM" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/brigdoor{name = "Visitation Window"; req_access = list(63)},/turf/simulated/floor,/area/security/prison) "bgN" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bgO" = (/turf/simulated/floor/wood,/area/bridge/meeting_room) "bgP" = (/turf/simulated/floor/carpet,/area/bridge/meeting_room) @@ -3101,16 +3101,16 @@ "bhG" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/exit) "bhH" = (/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/secondary/exit) "bhI" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor,/area/hallway/secondary/exit) -"bhJ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_south_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13"},/turf/simulated/floor,/area/hallway/secondary/exit) -"bhK" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_inner"; locked = 1; name = "Escape Airlock"; req_access_txt = "13"},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_south_mech"; pixel_y = 19},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"bhL" = (/obj/machinery/light/small{dir = 1},/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_south_airlock"; master_tag = "escape_dock"; pixel_y = -30; req_one_access_txt = "13"; tag_airlock_mech_sensor = "escape_dock_south_mech"; tag_airpump = "escape_dock_south_pump"; tag_chamber_sensor = "escape_dock_south_sensor"; tag_exterior_door = "escape_dock_south_outer"; tag_interior_door = "escape_dock_south_inner"; tag_shuttle_mech_sensor = "shuttle_dock_south_mech"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_south_pump"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"bhJ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_south_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = -25; req_one_access = list(13)},/turf/simulated/floor,/area/hallway/secondary/exit) +"bhK" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_south_mech"; pixel_y = 19},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"bhL" = (/obj/machinery/light/small{dir = 1},/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_south_airlock"; master_tag = "escape_dock"; pixel_y = -30; req_one_access = list(13); tag_airlock_mech_sensor = "escape_dock_south_mech"; tag_airpump = "escape_dock_south_pump"; tag_chamber_sensor = "escape_dock_south_sensor"; tag_exterior_door = "escape_dock_south_outer"; tag_interior_door = "escape_dock_south_inner"; tag_shuttle_mech_sensor = "shuttle_dock_south_mech"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_south_pump"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "bhM" = (/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_south_sensor"; pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"bhN" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_outer"; locked = 1; name = "Escape Airlock"; req_access_txt = "13"},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_south_mech"; pixel_y = 19},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"bhN" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_south_mech"; pixel_y = 19},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "bhO" = (/turf/space,/area/shuttle/specops/station) "bhP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "bhQ" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry/aft) "bhR" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/secondary/entry/aft) -"bhS" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"bhS" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "bhT" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/locker) "bhU" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/locker) "bhV" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plating,/area/maintenance/locker) @@ -3186,13 +3186,13 @@ "bjn" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry/aft) "bjo" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/entry/aft) "bjp" = (/turf/simulated/wall,/area/maintenance/disposal) -"bjq" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/disposal) +"bjq" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access = list(12)},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/disposal) "bjr" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/locker) "bjs" = (/obj/machinery/door/airlock{name = "Unit 3"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bjt" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bju" = (/obj/item/latexballon,/turf/simulated/floor/plating,/area/maintenance/locker) "bjv" = (/obj/effect/landmark{name = "blobstart"},/obj/item/latexballon,/turf/simulated/floor/plating,/area/maintenance/locker) -"bjw" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/locker) +"bjw" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/locker) "bjx" = (/obj/structure/disposalpipe/tagger/partial{name = "Sorting Office"; sort_tag = "Sorting Office"},/turf/simulated/floor/plating,/area/maintenance/locker) "bjy" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bjz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) @@ -3210,10 +3210,10 @@ "bjL" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bjM" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bjN" = (/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 20},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = -25; pixel_y = -4},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"bjO" = (/obj/machinery/door/window{dir = 4; name = "AI Core Door"; req_access_txt = "16"},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bjO" = (/obj/machinery/door/window{dir = 4; name = "AI Core Door"; req_access = list(16)},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bjP" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "bjQ" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 32},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = -32; pixel_y = 32},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"bjR" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "AI Core Door"; req_access_txt = "16"},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bjR" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "AI Core Door"; req_access = list(16)},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bjS" = (/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 19},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = 27; pixel_y = -3},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bjT" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bjU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -3255,13 +3255,13 @@ "bkE" = (/obj/machinery/newscaster{pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit) "bkF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit) "bkG" = (/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit) -"bkH" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/embedded_controller/radio/docking_port_multi{child_names_txt = "Airlock One;Airlock Two"; child_tags_txt = "escape_dock_north_airlock;escape_dock_south_airlock"; frequency = 1380; id_tag = "escape_dock"; pixel_x = 0; pixel_y = -25; req_one_access_txt = "13"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit) +"bkH" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/embedded_controller/radio/docking_port_multi{child_names_txt = "Airlock One;Airlock Two"; child_tags_txt = "escape_dock_north_airlock;escape_dock_south_airlock"; frequency = 1380; id_tag = "escape_dock"; pixel_x = 0; pixel_y = -25; req_one_access = list(13)},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit) "bkI" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit) "bkJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"bkK" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) -"bkL" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "specops_dock_airlock"; pixel_x = 0; pixel_y = 30; req_access_txt = "0"; req_one_access_txt = "13"; tag_airpump = "specops_dock_pump"; tag_chamber_sensor = "specops_dock_sensor"; tag_exterior_door = "specops_dock_outer"; tag_interior_door = "specops_dock_inner"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "specops_dock_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "specops_dock_pump"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) -"bkM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) -"bkN" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "specops_dock_airlock"; name = "interior access button"; pixel_x = -30; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor,/area/hallway/secondary/entry/aft) +"bkK" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"bkL" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "specops_dock_airlock"; pixel_x = 0; pixel_y = 30; req_one_access = list(13); tag_airpump = "specops_dock_pump"; tag_chamber_sensor = "specops_dock_sensor"; tag_exterior_door = "specops_dock_outer"; tag_interior_door = "specops_dock_inner"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "specops_dock_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "specops_dock_pump"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"bkM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"bkN" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "specops_dock_airlock"; name = "interior access button"; pixel_x = -30; pixel_y = 25; req_one_access = list(13)},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor,/area/hallway/secondary/entry/aft) "bkO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/power/apc/high{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green,/turf/simulated/floor,/area/hallway/secondary/entry/aft) "bkP" = (/obj/machinery/conveyor{dir = 5; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) "bkQ" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -3301,7 +3301,7 @@ "bly" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/bridge/meeting_room) "blz" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "blA" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"blB" = (/obj/machinery/door/window{dir = 2; name = "AI Core Door"; req_access_txt = "16"},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/flasher{id = "AI"; pixel_x = 22; pixel_y = 24},/obj/machinery/turretid/stun{check_synth = 1; name = "AI Chamber turret control"; pixel_x = 36; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"blB" = (/obj/machinery/door/window{dir = 2; name = "AI Core Door"; req_access = list(16)},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/flasher{id = "AI"; pixel_x = 22; pixel_y = 24},/obj/machinery/turretid/stun{check_synth = 1; name = "AI Chamber turret control"; pixel_x = 36; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "blC" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 1},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc/super{dir = 1; name = "north bump"; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "blD" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "blE" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -3319,7 +3319,7 @@ "blQ" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"},/turf/simulated/wall,/area/hallway/primary/starboard) "blR" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "scanhideside"; name = "Diagnostics Room Privacy Shutters"; opacity = 0},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay4) "blS" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1443; icon_state = "map_injector"; id = "air_in"; use_power = 1},/turf/simulated/floor/engine/vacuum,/area/rnd/mixing) -"blT" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "6"},/turf/simulated/floor,/area/hallway/primary/starboard) +"blT" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Morgue"; req_access = list(6)},/turf/simulated/floor,/area/hallway/primary/starboard) "blU" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/medical/medbay2) "blV" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/hallway/primary/starboard) "blW" = (/turf/simulated/floor{dir = 1; icon_state = "loadingarea"},/area/hallway/primary/starboard) @@ -3329,7 +3329,7 @@ "bma" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "purple"},/area/hallway/primary/starboard) "bmb" = (/turf/simulated/floor{dir = 6; icon_state = "purple"},/area/hallway/primary/starboard) "bmc" = (/turf/simulated/wall/r_wall,/area/hallway/secondary/exit) -"bmd" = (/obj/machinery/door/airlock/maintenance{name = "Maintenance Access"; req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"bmd" = (/obj/machinery/door/airlock/maintenance{name = "Maintenance Access"; req_access = list(12)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/exit) "bme" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/hallway/secondary/exit) "bmf" = (/obj/machinery/light{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/secondary/entry/aft) "bmg" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -3349,17 +3349,17 @@ "bmu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/locker) "bmv" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/locker) "bmw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) -"bmx" = (/obj/machinery/door_control{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "31"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) +"bmx" = (/obj/machinery/door_control{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; pixel_y = -24; req_access = list(31)},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bmy" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bmz" = (/obj/structure/disposalpipe/sortjunction/untagged{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bmA" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/quartermaster/office) "bmB" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office) "bmC" = (/obj/structure/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/office) "bmD" = (/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office) -"bmE" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "Mailing Room"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/central_one) +"bmE" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "Mailing Room"; req_access = list(50)},/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/central_one) "bmF" = (/obj/machinery/camera{c_tag = "Central Hallway West"; dir = 8},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central_one) "bmG" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/command) -"bmH" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = null; req_access_txt = "19"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/maintenance/substation/command) +"bmH" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = list(19)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/maintenance/substation/command) "bmI" = (/obj/machinery/light/small{dir = 8},/obj/machinery/porta_turret{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bmJ" = (/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "bmK" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -3367,7 +3367,7 @@ "bmM" = (/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "bmN" = (/obj/machinery/light/small{dir = 4},/obj/machinery/porta_turret{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bmO" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Captain's Desk"; departmentType = 5; name = "Captain RC"; pixel_x = -30; pixel_y = 0},/obj/structure/filingcabinet,/turf/simulated/floor/wood,/area/crew_quarters/captain) -"bmP" = (/obj/structure/bed/chair/comfy/brown{dir = 4},/obj/effect/landmark/start{name = "Captain"},/obj/machinery/door_control{desc = "A remote control-switch for the office door."; id = "captaindoor"; name = "Office Door Control"; normaldoorcontrol = 1; pixel_x = 15; pixel_y = 30; req_access_txt = "20"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door_control{desc = "A remote control-switch for the starboard bridge doors."; id = "sbridgedoor"; name = "Bridge Door Control"; normaldoorcontrol = 1; pixel_x = 15; pixel_y = 39; req_access_txt = "20"},/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bmP" = (/obj/structure/bed/chair/comfy/brown{dir = 4},/obj/effect/landmark/start{name = "Captain"},/obj/machinery/door_control{desc = "A remote control-switch for the office door."; id = "captaindoor"; name = "Office Door Control"; normaldoorcontrol = 1; pixel_x = 15; pixel_y = 30; req_access = list(20)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door_control{desc = "A remote control-switch for the starboard bridge doors."; id = "sbridgedoor"; name = "Bridge Door Control"; normaldoorcontrol = 1; pixel_x = 15; pixel_y = 39; req_access = list(20)},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bmQ" = (/obj/machinery/computer/communications,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bmR" = (/obj/structure/table/woodentable,/obj/item/device/eftpos{eftpos_name = "Captain EFTPOS scanner"},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bmS" = (/obj/structure/table/woodentable,/obj/item/weapon/melee/chainofcommand,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -3400,7 +3400,7 @@ "bnt" = (/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/morgue) "bnu" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/medical/morgue) "bnv" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) -"bnw" = (/obj/machinery/door/airlock{name = "Medbay Substation"; req_access_txt = "5"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/medical) +"bnw" = (/obj/machinery/door/airlock{name = "Medbay Substation"; req_access = list(5)},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/medical) "bnx" = (/obj/machinery/door/blast/regular{id = "mixvent"; name = "Mixer Room Vent"},/turf/simulated/floor/engine/vacuum,/area/rnd/mixing) "bny" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/cyan,/turf/simulated/floor/plating,/area/turret_protected/ai_upload) "bnz" = (/obj/machinery/computer/rdconsole/robotics,/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) @@ -3417,7 +3417,7 @@ "bnK" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/storage/emergency) "bnL" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/plating,/area/storage/emergency) "bnM" = (/turf/simulated/wall,/area/storage/emergency) -"bnN" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "specops_dock_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"},/turf/space,/area/space) +"bnN" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "specops_dock_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = 25; req_one_access = list(13)},/turf/space,/area/space) "bnO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "bnP" = (/obj/structure/closet/emcloset,/obj/machinery/camera{c_tag = "Arrivals Auxiliary Docking South"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/aft) "bnQ" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/hallway/secondary/entry/aft) @@ -3438,14 +3438,14 @@ "bof" = (/obj/machinery/light,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "whitegreencorner"},/area/rnd/research) "bog" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/quartermaster/storage) "boh" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating,/area/quartermaster/office) -"boi" = (/obj/machinery/door/window/eastleft{name = "Mail"; req_access_txt = "50"},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office) +"boi" = (/obj/machinery/door/window/eastleft{name = "Mail"; req_access = list(50)},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office) "boj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office) "bok" = (/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office) "bol" = (/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central_one) "bom" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/substation/command) "bon" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal{dir = 4},/turf/simulated/floor/plating,/area/maintenance/substation/command) "boo" = (/obj/structure/grille,/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/window/reinforced/polarized{dir = 4},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/heads/hop) -"bop" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/command{name = "Electrical Maintenance"; req_access = null; req_access_txt = "19"},/turf/simulated/floor/plating,/area/maintenance/substation/command) +"bop" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/command{name = "Electrical Maintenance"; req_access = list(19)},/turf/simulated/floor/plating,/area/maintenance/substation/command) "boq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bor" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/plating,/area/maintenance/substation/command) "bos" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/maintenance/substation/command) @@ -3456,7 +3456,7 @@ "box" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "boy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "boz" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"boA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/vault/bolted{req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"boA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/vault/bolted{req_access = list(16)},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "boB" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; listening = 1; name = "Captain's Intercom"; pixel_x = -27; pixel_y = -3},/obj/structure/closet/secure_closet/captains,/turf/simulated/floor/wood,/area/crew_quarters/captain) "boC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/crew_quarters/captain) "boD" = (/obj/machinery/computer/card,/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -3504,7 +3504,7 @@ "bpt" = (/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/assembly/robotics) "bpu" = (/obj/item/weapon/stool,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/assembly/robotics) "bpv" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/structure/cable/green,/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 4},/obj/structure/window/reinforced/polarized{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/heads/hop) -"bpw" = (/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/hallway/primary/starboard) +"bpw" = (/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access = list(47)},/turf/simulated/floor{icon_state = "white"},/area/hallway/primary/starboard) "bpx" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/hallway/primary/starboard) "bpy" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/clothing/glasses/welding,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/rnd/lab) "bpz" = (/obj/item/weapon/stool,/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/rnd/lab) @@ -3526,7 +3526,7 @@ "bpP" = (/turf/simulated/floor/plating,/area/maintenance/disposal) "bpQ" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -29},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/disposal) "bpR" = (/obj/machinery/light_switch{pixel_y = -25},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bpS" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/disposal) +"bpS" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access = list(12)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/disposal) "bpT" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/maintenance/locker) "bpU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/maintenance/locker) "bpV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/maintenance/locker) @@ -3540,7 +3540,7 @@ "bqd" = (/obj/structure/closet/secure_closet/cargotech,/turf/simulated/floor,/area/quartermaster/storage) "bqe" = (/obj/machinery/light{dir = 1},/obj/machinery/alarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/quartermaster/storage) "bqf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/quartermaster/storage) -"bqg" = (/obj/machinery/door_control{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; pixel_y = 24; req_access_txt = "31"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/quartermaster/storage) +"bqg" = (/obj/machinery/door_control{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; pixel_y = 24; req_access = list(31)},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/quartermaster/storage) "bqh" = (/obj/structure/sign/poster{pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/quartermaster/storage) "bqi" = (/obj/machinery/photocopier,/turf/simulated/floor,/area/quartermaster/office) "bqj" = (/obj/structure/disposalpipe/sortjunction{dir = 1; name = "Sorting Office"; sortType = "Sorting Office"},/turf/simulated/floor,/area/quartermaster/office) @@ -3561,7 +3561,7 @@ "bqy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central_three) "bqz" = (/obj/structure/table/rack,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/clothing/mask/gas,/obj/item/clothing/suit/armor/captain,/obj/item/clothing/head/helmet/space/capspace,/obj/machinery/newscaster/security_unit{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bqA" = (/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/turf/simulated/floor/wood,/area/crew_quarters/captain) -"bqB" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Captain's Desk Door"; req_access_txt = "20"},/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bqB" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Captain's Desk Door"; req_access = list(20)},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bqC" = (/obj/machinery/light,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bqD" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bqE" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -3576,7 +3576,7 @@ "bqN" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/reception) "bqO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/reception) "bqP" = (/turf/simulated/floor{dir = 4; icon_state = "whiteblue_ex"; tag = "icon-whiteblue (EAST)"},/area/medical/reception) -"bqQ" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/medical{name = "Examination room"; req_access_txt = "5"},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/exam_room) +"bqQ" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/medical{name = "Examination room"; req_access = list(5)},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/exam_room) "bqR" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) "bqS" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) "bqT" = (/obj/structure/bed,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) @@ -3588,7 +3588,7 @@ "bqZ" = (/turf/simulated/floor/bluegrid,/area/assembly/chargebay) "bra" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor,/area/assembly/chargebay) "brb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/assembly/chargebay) -"brc" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) +"brc" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access = list(29)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "brd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "bre" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "brf" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) @@ -3606,9 +3606,9 @@ "brr" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/storage/emergency) "brs" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "brt" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "admin_shuttle_dock_pump"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/aft) -"bru" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "admin_shuttle_dock_airlock"; pixel_x = 0; pixel_y = 30; req_access_txt = "0"; req_one_access_txt = "13"; tag_airpump = "admin_shuttle_dock_pump"; tag_chamber_sensor = "admin_shuttle_dock_sensor"; tag_exterior_door = "admin_shuttle_dock_outer"; tag_interior_door = "admin_shuttle_dock_inner"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry/aft) -"brv" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) -"brw" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "admin_shuttle_dock_airlock"; name = "interior access button"; pixel_x = -8; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry/aft) +"bru" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "admin_shuttle_dock_airlock"; pixel_x = 0; pixel_y = 30; req_one_access = list(13); tag_airpump = "admin_shuttle_dock_pump"; tag_chamber_sensor = "admin_shuttle_dock_sensor"; tag_exterior_door = "admin_shuttle_dock_outer"; tag_interior_door = "admin_shuttle_dock_inner"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry/aft) +"brv" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"brw" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "admin_shuttle_dock_airlock"; name = "interior access button"; pixel_x = -8; pixel_y = 25; req_one_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry/aft) "brx" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry/aft) "bry" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry/aft) "brz" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor,/area/hallway/secondary/entry/aft) @@ -3620,14 +3620,14 @@ "brF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/locker) "brG" = (/turf/simulated/wall/r_wall,/area/maintenance/locker) "brH" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/locker) -"brI" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Maintenance"; req_access_txt = "31"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/quartermaster/storage) +"brI" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Maintenance"; req_access = list(31)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/quartermaster/storage) "brJ" = (/turf/simulated/floor,/area/quartermaster/storage) "brK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/quartermaster/storage) "brL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/storage) "brM" = (/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/quartermaster/office) "brN" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/office) "brO" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/item/device/radio/intercom{pixel_y = 23},/turf/simulated/floor,/area/quartermaster/office) -"brP" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_mining{name = "Delivery Office"; req_access_txt = "50"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office) +"brP" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_mining{name = "Delivery Office"; req_access = list(50)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office) "brQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office) "brR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/quartermaster/office) "brS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/quartermaster/office) @@ -3645,33 +3645,33 @@ "bse" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor/plating,/area/maintenance/substation/command) "bsf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor/plating,/area/maintenance/substation/medical) "bsg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/obj/machinery/power/sensor{name = "Powernet Sensor - Medbay Subgrid"; name_tag = "Medbay Subgrid"},/turf/simulated/floor/plating,/area/maintenance/substation/medical) -"bsh" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access_txt = "16"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "vault"},/area/hallway/primary/central_three) +"bsh" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access = list(16)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "vault"},/area/hallway/primary/central_three) "bsi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/turret_protected/ai_upload) -"bsj" = (/obj/structure/table,/obj/item/weapon/aiModule/asimov,/obj/item/weapon/aiModule/freeformcore,/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Core Modules"; req_access_txt = "20"},/obj/structure/window/reinforced,/obj/item/weapon/aiModule/corp,/obj/item/weapon/aiModule/paladin,/obj/item/weapon/aiModule/robocop,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"bsj" = (/obj/structure/table,/obj/item/weapon/aiModule/asimov,/obj/item/weapon/aiModule/freeformcore,/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Core Modules"; req_access = list(20)},/obj/structure/window/reinforced,/obj/item/weapon/aiModule/corp,/obj/item/weapon/aiModule/paladin,/obj/item/weapon/aiModule/robocop,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bsk" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bsl" = (/obj/machinery/computer/borgupload,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_x = -5; pixel_y = 22},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bsm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/flasher{id = "AI"; pixel_x = -22; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bsn" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/computer/aiupload,/obj/machinery/light{dir = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) -"bso" = (/obj/structure/table,/obj/item/weapon/aiModule/oxygen,/obj/item/weapon/aiModule/oneHuman,/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "High-Risk Modules"; req_access_txt = "20"},/obj/item/weapon/aiModule/purge,/obj/structure/window/reinforced,/obj/item/weapon/aiModule/antimov,/obj/item/weapon/aiModule/teleporterOffline,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"bso" = (/obj/structure/table,/obj/item/weapon/aiModule/oxygen,/obj/item/weapon/aiModule/oneHuman,/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "High-Risk Modules"; req_access = list(20)},/obj/item/weapon/aiModule/purge,/obj/structure/window/reinforced,/obj/item/weapon/aiModule/antimov,/obj/item/weapon/aiModule/teleporterOffline,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bsp" = (/turf/simulated/wall,/area/crew_quarters/captain) -"bsq" = (/obj/machinery/door/airlock/command{name = "Captain's Quarters"; req_access = null; req_access_txt = "20"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/crew_quarters/captain) -"bsr" = (/obj/machinery/door/airlock/maintenance{name = "Captain's Office Maintenance"; req_access_txt = "20"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/plating,/area/crew_quarters/captain) +"bsq" = (/obj/machinery/door/airlock/command{name = "Captain's Quarters"; req_access = list(20)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/crew_quarters/captain) +"bsr" = (/obj/machinery/door/airlock/maintenance{name = "Captain's Office Maintenance"; req_access = list(20)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/plating,/area/crew_quarters/captain) "bss" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central_two) "bst" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bsu" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bsv" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/syringes,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bsw" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/reception) "bsx" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/storage/box/cups,/obj/item/weapon/storage/box/cups{pixel_x = 2; pixel_y = 5},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/reception) -"bsy" = (/obj/structure/table,/obj/machinery/door/window/northright{name = "Medbay Lobby"; req_access_txt = "5"},/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = -5},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/reception) +"bsy" = (/obj/structure/table,/obj/machinery/door/window/northright{name = "Medbay Lobby"; req_access = list(5)},/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = -5},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/reception) "bsz" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/reception) "bsA" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/reception) -"bsB" = (/obj/structure/table,/obj/machinery/door/window/northright{name = "Medbay Lobby"; req_access_txt = "5"},/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 3},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/reception) +"bsB" = (/obj/structure/table,/obj/machinery/door/window/northright{name = "Medbay Lobby"; req_access = list(5)},/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 3},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/reception) "bsC" = (/obj/structure/filingcabinet/chestdrawer{name = "Medical Forms"},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/medical/reception) "bsD" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/reception) "bsE" = (/obj/structure/table,/obj/structure/closet/secure_closet/medical_wall{name = "Pill Cabinet"; pixel_y = -32},/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/storage/pill_bottle/antitox,/obj/item/weapon/storage/pill_bottle/tramadol,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) "bsF" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) "bsG" = (/obj/structure/table,/obj/item/weapon/cane,/obj/item/weapon/cane{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cane{pixel_x = -6; pixel_y = 4},/obj/item/weapon/storage/box/rxglasses,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) -"bsH" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_y = -10},/obj/item/weapon/folder/white{pixel_y = 0},/obj/item/weapon/pen,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 16; req_access_txt = "0"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) +"bsH" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_y = -10},/obj/item/weapon/folder/white{pixel_y = 0},/obj/item/weapon/pen,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 16},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) "bsI" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/box/bodybags,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/morgue) "bsJ" = (/obj/machinery/mech_bay_recharge_port,/turf/simulated/floor/plating,/area/assembly/chargebay) "bsK" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/assembly/chargebay) @@ -3697,7 +3697,7 @@ "bte" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/oxygen,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/breath,/turf/simulated/floor/plating,/area/storage/emergency) "btf" = (/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "admin_shuttle_dock_sensor"; pixel_x = -30; pixel_y = 8},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry/aft) "btg" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "admin_shuttle_dock_pump"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry/aft) -"bth" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"bth" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "bti" = (/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry/aft) "btj" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry/aft) "btk" = (/obj/machinery/disposal/deliveryChute{dir = 1; name = "disposal inlet"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -3711,20 +3711,20 @@ "bts" = (/obj/machinery/light{dir = 1},/obj/machinery/firealarm{pixel_y = 27},/turf/simulated/floor,/area/quartermaster/storage) "btt" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/quartermaster/storage) "btu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/quartermaster/storage) -"btv" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Bay"; req_access_txt = "31"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/quartermaster/storage) +"btv" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Bay"; req_access = list(31)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/quartermaster/storage) "btw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office) "btx" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/quartermaster/office) "bty" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/quartermaster/office) "btz" = (/obj/machinery/status_display/supply_display,/turf/simulated/wall,/area/quartermaster/office) "btA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/office) -"btB" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_mining{name = "Delivery Office"; req_access_txt = "50"},/turf/simulated/floor,/area/quartermaster/office) +"btB" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_mining{name = "Delivery Office"; req_access = list(50)},/turf/simulated/floor,/area/quartermaster/office) "btC" = (/turf/simulated/wall,/area/hallway/primary/central_three) "btD" = (/obj/machinery/light{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central_three) "btE" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/central_three) "btF" = (/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor,/area/hallway/primary/central_three) "btG" = (/turf/simulated/wall/r_wall,/area/hallway/primary/central_three) "btH" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/emergency_oxygen,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plating,/area/maintenance/substation/command) -"btI" = (/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/maintenance/substation/command) +"btI" = (/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = list(57)},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/maintenance/substation/command) "btJ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/cyan,/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/turret_protected/ai_upload) "btK" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/porta_turret{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "btL" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) @@ -3735,7 +3735,7 @@ "btQ" = (/obj/structure/displaycase,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "btR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/crew_quarters/captain) "btS" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/carpet,/area/crew_quarters/captain) -"btT" = (/obj/machinery/door/airlock{name = "Private Restroom"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain) +"btT" = (/obj/machinery/door/airlock{name = "Private Restroom"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain) "btU" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 28},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain) "btV" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/plating,/area/crew_quarters/captain) "btW" = (/obj/structure/disposalpipe/segment,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/hallway/primary/central_two) @@ -3748,9 +3748,9 @@ "bud" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = -32},/turf/simulated/floor{tag = "icon-whiteblue (SOUTHWEST)"; icon_state = "whiteblue"; dir = 10},/area/medical/reception) "bue" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/reception) "buf" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/computer/crew,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/reception) -"bug" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerPort"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = -16; pixel_y = 28; req_access_txt = null},/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/medical/reception) +"bug" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerPort"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = -16; pixel_y = 28},/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/medical/reception) "buh" = (/obj/structure/table,/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 1; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Reception Emergency Phone"},/turf/simulated/floor,/area/medical/reception) -"bui" = (/obj/structure/table,/obj/machinery/door_control{id = "medbayrecquar"; name = "Medbay Entrance Lockdown Shutters Control"; pixel_x = 6; pixel_y = 8; req_access_txt = "5"},/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 1; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Reception Emergency Phone"; pixel_x = -5},/turf/simulated/floor,/area/medical/reception) +"bui" = (/obj/structure/table,/obj/machinery/door_control{id = "medbayrecquar"; name = "Medbay Entrance Lockdown Shutters Control"; pixel_x = 6; pixel_y = 8; req_access = list(5)},/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 1; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Reception Emergency Phone"; pixel_x = -5},/turf/simulated/floor,/area/medical/reception) "buj" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerStar"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 6; pixel_y = 28},/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/medical/reception) "buk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/filingcabinet/medical{pixel_y = 0},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/reception) "bul" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/reception) @@ -3787,8 +3787,8 @@ "buQ" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/research/station) "buR" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/research/station) "buS" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/research/station) -"buT" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "admin_shuttle_dock_airlock"; name = "exterior access button"; pixel_x = 30; pixel_y = -5; req_access_txt = "0"; req_one_access_txt = "13"},/turf/space,/area/space) -"buU" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"buT" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "admin_shuttle_dock_airlock"; name = "exterior access button"; pixel_x = 30; pixel_y = -5; req_one_access = list(13)},/turf/space,/area/space) +"buU" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "buV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "buW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "buX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) @@ -3803,7 +3803,7 @@ "bvg" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "bvh" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "bvi" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) -"bvj" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Bay"; req_access_txt = "31"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) +"bvj" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Bay"; req_access = list(31)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "bvk" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office) "bvl" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/office) "bvm" = (/obj/structure/disposalpipe/tagger/partial{name = "Sorting Office"; sort_tag = "Sorting Office"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/office) @@ -3845,21 +3845,21 @@ "bvW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/chemistry) "bvX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/chemistry) "bvY" = (/obj/machinery/smartfridge/secure/medbay,/turf/simulated/wall,/area/medical/chemistry) -"bvZ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Chemistry Laboratory"; req_access_txt = "33"},/obj/structure/sign/chemistry{pixel_x = 32},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) +"bvZ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Chemistry Laboratory"; req_access = list(33)},/obj/structure/sign/chemistry{pixel_x = 32},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bwa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "scanhideside"; name = "Diagnostics Room Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay4) -"bwb" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;47"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) -"bwc" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Medical Reception"; req_access_txt = "5"},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/medical/reception) +"bwb" = (/obj/machinery/door/airlock/maintenance{req_one_access = list(12,47)},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) +"bwc" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Medical Reception"; req_access = list(5)},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/medical/reception) "bwd" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/medical/reception) "bwe" = (/turf/simulated/floor,/area/medical/reception) "bwf" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/medical/reception) -"bwg" = (/obj/machinery/door/window/eastright{name = "Medical Reception"; req_access_txt = "5"},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -22},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor,/area/medical/reception) +"bwg" = (/obj/machinery/door/window/eastright{name = "Medical Reception"; req_access = list(5)},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -22},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor,/area/medical/reception) "bwh" = (/obj/machinery/door/blast/regular{id = "toxinsdriver"; name = "Toxins Launcher Bay Door"},/turf/simulated/floor/plating/airless,/area/rnd/mixing) "bwi" = (/obj/machinery/door/blast/regular{id = "toxinsdriver"; name = "Toxins Launcher Bay Door"},/turf/simulated/floor/plating/airless,/area/rnd/test_area) "bwj" = (/obj/structure/table,/obj/item/roller,/obj/item/roller{pixel_y = 8},/obj/item/roller{pixel_y = 16},/turf/simulated/floor,/area/medical/reception) "bwk" = (/turf/simulated/wall,/area/medical/medbay2) -"bwl" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Examination Room"; req_access_txt = "5"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) +"bwl" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Examination Room"; req_access = list(5)},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bwm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/medbay2) -"bwn" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "6;5"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/medical/medbay2) +"bwn" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_access = list(6,5)},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/medical/medbay2) "bwo" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/assembly/chargebay) "bwp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/assembly/chargebay) "bwq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/assembly/robotics) @@ -3869,7 +3869,7 @@ "bwu" = (/obj/machinery/cryopod/robot/right,/turf/simulated/floor,/area/assembly/chargebay) "bwv" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/assembly/robotics) "bww" = (/turf/simulated/wall/r_wall,/area/rnd/research) -"bwx" = (/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) +"bwx" = (/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access = list(47)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bwy" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/rnd/research) "bwz" = (/obj/machinery/newscaster{pixel_x = -27; pixel_y = 1},/turf/simulated/floor{icon_state = "warnwhite"; dir = 1},/area/rnd/lab) "bwA" = (/turf/simulated/floor{icon_state = "warnwhite"; dir = 1},/area/rnd/lab) @@ -3897,7 +3897,7 @@ "bwW" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; sortType = "Cargo Bay"; name = "Cargo Bay"},/turf/simulated/floor,/area/quartermaster/office) "bwX" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/office) "bwY" = (/obj/effect/landmark/start{name = "Cargo Technician"},/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/quartermaster/office) -"bwZ" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/window/westleft{name = "Cargo Desk"; req_access_txt = "50"},/obj/structure/noticeboard{pixel_y = 27},/turf/simulated/floor,/area/quartermaster/office) +"bwZ" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/window/westleft{name = "Cargo Desk"; req_access = list(50)},/obj/structure/noticeboard{pixel_y = 27},/turf/simulated/floor,/area/quartermaster/office) "bxa" = (/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office) "bxb" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/office) "bxc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/primary/central_three) @@ -3905,7 +3905,7 @@ "bxe" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/hallway/primary/central_three) "bxf" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/primary/central_three) "bxg" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "scanhideside"; name = "Diagnostics Room Privacy Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay4) -"bxh" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;47"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) +"bxh" = (/obj/machinery/door/airlock/maintenance{req_one_access = list(12,47)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) "bxi" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) "bxj" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) "bxk" = (/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) @@ -3919,7 +3919,7 @@ "bxs" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/maintenance/substation/command) "bxt" = (/obj/structure/bed/chair/comfy/brown{dir = 4},/obj/machinery/camera{c_tag = "Captain's Quarters"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bxu" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bxv" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Shower"; req_access_txt = "0"},/obj/machinery/shower{icon_state = "shower"; dir = 4},/obj/item/weapon/soap/deluxe,/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain) +"bxv" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Shower"},/obj/machinery/shower{icon_state = "shower"; dir = 4},/obj/item/weapon/soap/deluxe,/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain) "bxw" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central_two) "bxx" = (/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{dir = 1; icon_state = "whiteyellowcorner"},/area/medical/chemistry) "bxy" = (/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"},/area/medical/chemistry) @@ -3927,12 +3927,12 @@ "bxA" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bxB" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bxC" = (/turf/simulated/wall,/area/medical/medbay) -"bxD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/multi_tile/glass{id_tag = "MedbayFoyerPort"; req_access_txt = "5"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/medbay) +"bxD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/multi_tile/glass{id_tag = "MedbayFoyerPort"; req_access = list(5)},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/medbay) "bxE" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/medbay) "bxF" = (/turf/simulated/wall,/area/medical/medbay3) "bxG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/medbay3) -"bxH" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medbay Reception"; req_access_txt = "5"},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay3) -"bxI" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/multi_tile/glass{id_tag = "MedbayFoyerStar"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/medbay2) +"bxH" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medbay Reception"; req_access = list(5)},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay3) +"bxI" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/multi_tile/glass{id_tag = "MedbayFoyerStar"; req_access = list(5)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/medbay2) "bxJ" = (/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/medical/medbay2) "bxK" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-white_ex"; icon_state = "white_ex"; dir = 2},/area/medical/medbay2) "bxL" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) @@ -3943,7 +3943,7 @@ "bxQ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "whitehall_m"; tag = "icon-whitehall_m"},/area/medical/medbay2) "bxR" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/medical/medbay2) "bxS" = (/obj/machinery/vending/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) -"bxT" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "toxin_test_airlock"; name = "exterior access button"; pixel_x = -20; pixel_y = -20; req_access_txt = "13"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/space) +"bxT" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "toxin_test_airlock"; name = "exterior access button"; pixel_x = -20; pixel_y = -20; req_access = list(13)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/space) "bxU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bxV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/research_port) "bxW" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) @@ -3964,7 +3964,7 @@ "byl" = (/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/space,/area/shuttle/research/station) "bym" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/shuttle/research/station) "byn" = (/obj/machinery/computer/shuttle_control/research,/turf/simulated/shuttle/floor,/area/shuttle/research/station) -"byo" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/storage) +"byo" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/quartermaster/storage) "byp" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage) "byq" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage) "byr" = (/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/quartermaster/storage) @@ -3990,13 +3990,13 @@ "byL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "byM" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_x = 0; pixel_y = -27},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "byN" = (/turf/simulated/wall/r_wall,/area/teleporter) -"byO" = (/obj/machinery/door/airlock/maintenance{name = "Teleporter Maintenance"; req_access_txt = "17"},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/plating,/area/teleporter) +"byO" = (/obj/machinery/door/airlock/maintenance{name = "Teleporter Maintenance"; req_access = list(17)},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/plating,/area/teleporter) "byP" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central_two) "byQ" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/item/weapon/reagent_containers/glass/bottle/stoxin{pixel_x = -6; pixel_y = 10},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) "byR" = (/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "byS" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "byT" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/medical/chemistry) -"byU" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerPort"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = -24; pixel_y = 26; req_access_txt = null},/obj/machinery/computer/guestpass{pixel_x = -28},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay) +"byU" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerPort"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = -24; pixel_y = 26},/obj/machinery/computer/guestpass{pixel_x = -28},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay) "byV" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTHEAST)"; icon_state = "whiteblue"; dir = 5},/area/medical/medbay) "byW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/medbay) "byX" = (/obj/structure/table,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay3) @@ -4014,12 +4014,12 @@ "bzj" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bzk" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bzl" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bzm" = (/obj/machinery/door_control{id = "misclab"; name = "Test Chamber Blast Doors"; pixel_x = 6; pixel_y = 30; req_access_txt = "47"},/obj/item/weapon/stool,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) +"bzm" = (/obj/machinery/door_control{id = "misclab"; name = "Test Chamber Blast Doors"; pixel_x = 6; pixel_y = 30; req_access = list(47)},/obj/item/weapon/stool,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bzn" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) "bzo" = (/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -22},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/patient_wing) "bzp" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) "bzq" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-whitebluecorner (WEST)"; icon_state = "whitebluecorner"; dir = 8},/area/medical/patient_wing) -"bzr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock{name = "Starboard Emergency Storage"; req_access_txt = "29"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/assembly/chargebay) +"bzr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock{name = "Starboard Emergency Storage"; req_access = list(29)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/assembly/chargebay) "bzs" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/assembly/chargebay) "bzt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/assembly/chargebay) "bzu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/assembly/chargebay) @@ -4035,15 +4035,15 @@ "bzE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/rnd/research) "bzF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/rnd/research) "bzG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/rnd/research) -"bzH" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_research{name = "Research and Development"; req_access_txt = "7"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) +"bzH" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_research{name = "Research and Development"; req_access = list(7)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bzI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/rnd/research) -"bzJ" = (/obj/machinery/door/airlock{name = "Starboard Emergency Storage"; req_access_txt = "0"; req_one_access_txt = "12;47"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/storage/emergency) +"bzJ" = (/obj/machinery/door/airlock{name = "Starboard Emergency Storage"; req_one_access = list(12,47)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/storage/emergency) "bzK" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/docking) "bzL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/docking) "bzM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/docking) "bzN" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall,/area/rnd/docking) -"bzO" = (/obj/structure/table,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "research_shuttle"; pixel_x = -8; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13;65"; tag_door = "research_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/research/station) -"bzP" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bzO" = (/obj/structure/table,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "research_shuttle"; pixel_x = -8; pixel_y = -25; req_one_access = list(13,65); tag_door = "research_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/research/station) +"bzP" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/quartermaster/storage) "bzQ" = (/turf/simulated/floor/plating,/area/quartermaster/storage) "bzR" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/quartermaster/storage) "bzS" = (/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) @@ -4077,15 +4077,15 @@ "bAu" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire{pixel_x = 5; pixel_y = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/random/firstaid,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bAv" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bAw" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) -"bAx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medicine Storage"; req_access_txt = "5"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) +"bAx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medicine Storage"; req_access = list(5)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bAy" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bAz" = (/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j1s"; sortType = "Medbay"; name = "Medbay"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) -"bAA" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medical Equipment"; req_access_txt = "5"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) +"bAA" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medical Equipment"; req_access = list(5)},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bAB" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3) "bAC" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3) "bAD" = (/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3) "bAE" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3) -"bAF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medical Equipment"; req_access_txt = "5"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) +"bAF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medical Equipment"; req_access = list(5)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bAG" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bAH" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bAI" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) @@ -4122,26 +4122,26 @@ "bBn" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/rnd/research) "bBo" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/rnd/research) "bBp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/rnd/xenobiology/xenoflora) -"bBq" = (/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) +"bBq" = (/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access = list(47)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bBr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bBs" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Research Shuttle Maintainance"; dir = 2},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) -"bBt" = (/obj/machinery/door/airlock/research{name = "Research Shuttle Dock"; req_access_txt = "65"},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) +"bBt" = (/obj/machinery/door/airlock/research{name = "Research Shuttle Dock"; req_access = list(65)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bBu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/rnd/xenobiology/xenoflora_storage) "bBv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) "bBw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) "bBx" = (/obj/structure/closet/emcloset,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) "bBy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/shuttle/plating,/area/rnd/docking) "bBz" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/research/station) -"bBA" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/research/station) +"bBA" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/research/station) "bBB" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/research/station) "bBC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bBD" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bBE" = (/obj/machinery/camera{c_tag = "Cargo Recieving Dock"; dir = 4},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "cargo_bay"; name = "cargo bay hatch controller"; pixel_x = -30; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "13;31"; tag_door = "cargo_bay_door"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage) +"bBE" = (/obj/machinery/camera{c_tag = "Cargo Recieving Dock"; dir = 4},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "cargo_bay"; name = "cargo bay hatch controller"; pixel_x = -30; pixel_y = 0; req_one_access = list(13,31); tag_door = "cargo_bay_door"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage) "bBF" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #2"},/obj/machinery/bot/mulebot{home_destination = "QM #2"; suffix = "#2"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "bBG" = (/obj/structure/table,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/weapon/folder/yellow,/obj/item/device/eftpos{eftpos_name = "Cargo Bay EFTPOS scanner"},/turf/simulated/floor,/area/quartermaster/office) "bBH" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/quartermaster/office) "bBI" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/office) -"bBJ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Office"; req_access_txt = "50"},/turf/simulated/floor,/area/quartermaster/office) +"bBJ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Office"; req_access = list(50)},/turf/simulated/floor,/area/quartermaster/office) "bBK" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor,/area/quartermaster/office) "bBL" = (/obj/structure/closet/secure_closet/hop2,/turf/simulated/floor,/area/crew_quarters/heads/hop) "bBM" = (/turf/simulated/floor,/area/crew_quarters/heads/hop) @@ -4150,7 +4150,7 @@ "bBP" = (/obj/machinery/message_server,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_server_room) "bBQ" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_server_room) "bBR" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) -"bBS" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload"; req_access_txt = "16"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"bBS" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload"; req_access = list(16)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bBT" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_cyborg_station) "bBU" = (/obj/structure/table,/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_cyborg_station) "bBV" = (/obj/machinery/computer/aifixer,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_cyborg_station) @@ -4160,7 +4160,7 @@ "bBZ" = (/obj/item/device/radio/beacon,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/teleporter) "bCa" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/teleporter) "bCb" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/teleporter) -"bCc" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Teleport Access"; req_access_txt = "17"},/turf/simulated/floor,/area/hallway/primary/central_two) +"bCc" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Teleport Access"; req_access = list(17)},/turf/simulated/floor,/area/hallway/primary/central_two) "bCd" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 5; pixel_y = 5},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/random/firstaid,/turf/simulated/floor{dir = 8; icon_state = "whiteyellowcorner"},/area/medical/chemistry) "bCe" = (/turf/simulated/floor{dir = 2; icon_state = "whiteyellow"},/area/medical/chemistry) "bCf" = (/obj/structure/closet/wardrobe/chemistry_white,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "whiteyellowcorner"},/area/medical/chemistry) @@ -4171,11 +4171,11 @@ "bCk" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/storage/box/syringes{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/syringes,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay3) "bCl" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "bCm" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) -"bCn" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Cloning Laboratory"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) -"bCo" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Genetics Laboratory"; req_access_txt = "9"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) +"bCn" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Cloning Laboratory"; req_access = list(5)},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) +"bCo" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Genetics Laboratory"; req_access = list(9)},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bCp" = (/turf/simulated/wall,/area/medical/genetics) "bCq" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bCr" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29; 47"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) +"bCr" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access = list(29, 47)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bCs" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/rnd/research) "bCt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/rnd/research) "bCu" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) @@ -4188,14 +4188,14 @@ "bCB" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Research Division"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{icon_state = "bot"},/area/rnd/research) "bCC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bCD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) -"bCE" = (/obj/machinery/door/airlock/research{name = "Research Shuttle Dock"; req_access_txt = "65"},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) +"bCE" = (/obj/machinery/door/airlock/research{name = "Research Shuttle Dock"; req_access = list(65)},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bCF" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay3) "bCG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bCH" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) -"bCI" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastright{dir = 1; name = "Emergency Kit"; req_access_txt = "5"},/obj/machinery/door/firedoor,/obj/item/weapon/storage/toolbox/emergency,/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/bodybag/cryobag,/obj/item/device/radio{frequency = 1487; name = "Medbay Emergency Radio Link"},/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"},/area/medical/sleeper) +"bCI" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastright{dir = 1; name = "Emergency Kit"; req_access = list(5)},/obj/machinery/door/firedoor,/obj/item/weapon/storage/toolbox/emergency,/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/bodybag/cryobag,/obj/item/device/radio{frequency = 1487; name = "Medbay Emergency Radio Link"},/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"},/area/medical/sleeper) "bCJ" = (/turf/simulated/wall,/area/rnd/docking) -"bCK" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_dock_outer"; locked = 1; name = "Shuttle Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/rnd/docking) -"bCL" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "research_dock_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = 8; req_access_txt = "0"; req_one_access_txt = "13;65"},/turf/space,/area/space) +"bCK" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_dock_outer"; locked = 1; name = "Shuttle Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/rnd/docking) +"bCL" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "research_dock_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = 8; req_one_access = list(13,65)},/turf/space,/area/space) "bCM" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage) "bCN" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "QMLoad"},/turf/simulated/floor,/area/quartermaster/storage) "bCO" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/quartermaster/storage) @@ -4212,11 +4212,11 @@ "bCZ" = (/obj/machinery/computer/message_monitor,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) "bDa" = (/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) "bDb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) -"bDc" = (/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access_txt = "30"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) +"bDc" = (/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access = list(30)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) "bDd" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_x = -12; pixel_y = 20},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/turretid/stun{control_area = "\improper AI Upload Chamber"; name = "AI Upload turret control"; pixel_x = 6; pixel_y = 24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer) "bDe" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/medical/sleeper) -"bDf" = (/obj/machinery/door_control{id = "engineering_cubicle"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 8; req_access_txt = "0"; specialfunctions = 4},/obj/structure/toilet{dir = 1},/obj/machinery/light/small{dir = 4},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) -"bDg" = (/obj/machinery/door/airlock/highsecurity{name = "Cyborg Station"; req_access_txt = "16"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_cyborg_station) +"bDf" = (/obj/machinery/door_control{id = "engineering_cubicle"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 8; specialfunctions = 4},/obj/structure/toilet{dir = 1},/obj/machinery/light/small{dir = 4},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) +"bDg" = (/obj/machinery/door/airlock/highsecurity{name = "Cyborg Station"; req_access = list(16)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_cyborg_station) "bDh" = (/obj/effect/landmark/start{name = "Cyborg"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_cyborg_station) "bDi" = (/obj/effect/landmark/start{name = "Cyborg"},/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_cyborg_station) "bDj" = (/obj/effect/landmark/start{name = "Cyborg"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/turret_protected/ai_cyborg_station) @@ -4232,7 +4232,7 @@ "bDt" = (/turf/simulated/wall,/area/medical/sleeper) "bDu" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/sign/poster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/medical/sleeper) "bDv" = (/obj/structure/closet/secure_closet/medical_wall{name = "Pill Cabinet"},/obj/item/weapon/storage/pill_bottle/antitox,/obj/item/weapon/storage/pill_bottle/tramadol,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/inaprovaline,/turf/simulated/wall,/area/medical/sleeper) -"bDw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medicine Storage"; req_access_txt = "5"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bDw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medicine Storage"; req_access = list(5)},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bDx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/sleeper) "bDy" = (/obj/machinery/status_display,/turf/simulated/wall,/area/medical/medbay) "bDz" = (/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) @@ -4273,18 +4273,18 @@ "bEi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/research) "bEj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/research) "bEk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/research) -"bEl" = (/obj/machinery/door_control{id = "acute1"; name = "EMT Storage Privacy Shutters"; pixel_x = 26; pixel_y = 25; req_access_txt = "5"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bEl" = (/obj/machinery/door_control{id = "acute1"; name = "EMT Storage Privacy Shutters"; pixel_x = 26; pixel_y = 25; req_access = list(5)},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bEm" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) "bEn" = (/turf/simulated/wall,/area/maintenance/research_shuttle) "bEo" = (/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bEp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) "bEq" = (/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/rnd/docking) -"bEr" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "research_dock_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13;65"},/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/rnd/docking) -"bEs" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_dock_inner"; locked = 1; name = "Shuttle Airlock"; req_access_txt = "13"},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) +"bEr" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "research_dock_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = -25; req_one_access = list(13,65)},/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/rnd/docking) +"bEs" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_dock_inner"; locked = 1; name = "Shuttle Airlock"; req_access = list(13)},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bEt" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1380; id_tag = "research_dock_pump"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","Supermatter","Atmospherics")},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/rnd/docking) "bEu" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/rnd/docking) "bEv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/rnd/docking) -"bEw" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bEw" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/quartermaster/storage) "bEx" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage) "bEy" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/status_display/supply_display{pixel_y = -32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage) "bEz" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -35},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage) @@ -4313,7 +4313,7 @@ "bEW" = (/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/camera{c_tag = "Messaging Server"; dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) "bEX" = (/obj/machinery/camera{c_tag = "AI Upload Access"; dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer) "bEY" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer) -"bEZ" = (/obj/structure/window/basic{dir = 4},/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower{color = "#FFA500"; layer = 3.3},/obj/machinery/door/window/northleft{name = "Shower"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) +"bEZ" = (/obj/structure/window/basic{dir = 4},/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower{color = "#FFA500"; layer = 3.3},/obj/machinery/door/window/northleft{name = "Shower"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "bFa" = (/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/camera{c_tag = "Cyborg Station"; dir = 1},/obj/structure/closet/crate{name = "Camera Assembly Crate"},/obj/item/weapon/camera_assembly,/obj/item/weapon/camera_assembly,/obj/item/weapon/camera_assembly,/obj/item/weapon/camera_assembly,/obj/item/weapon/camera_assembly,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_cyborg_station) "bFb" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/recharge_station,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_cyborg_station) "bFc" = (/obj/machinery/recharge_station,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_cyborg_station) @@ -4331,7 +4331,7 @@ "bFo" = (/obj/machinery/camera{c_tag = "Medbay Emergency Entrance"; dir = 2; network = list("SS13")},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bFp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bFq" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay) -"bFr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medical Equipment"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3) +"bFr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medical Equipment"; req_access = list(5)},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3) "bFs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "bFt" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bFu" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/medbay2) @@ -4345,9 +4345,9 @@ "bFC" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plating,/area/medical/genetics) "bFD" = (/turf/simulated/floor/plating,/area/medical/genetics) "bFE" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/medical/genetics) -"bFF" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access_txt = "9"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) +"bFF" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access = list(9)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bFG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; external_pressure_bound_default = 0; icon_state = "map_vent_in"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) -"bFH" = (/obj/structure/table/rack,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/storage/toolbox/mechanical,/obj/machinery/vending/wallmed1{pixel_x = -32; pixel_y = 0; req_access_txt = "0"},/obj/item/roller,/obj/item/roller,/obj/item/roller,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bFH" = (/obj/structure/table/rack,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/storage/toolbox/mechanical,/obj/machinery/vending/wallmed1{pixel_x = -32; pixel_y = 0},/obj/item/roller,/obj/item/roller,/obj/item/roller,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bFI" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay) "bFJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 8; name = "hazard door west"},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/rnd/research) "bFK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) @@ -4376,7 +4376,7 @@ "bGh" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/rnd/docking) "bGi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/shuttle/plating,/area/rnd/docking) "bGj" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "research_dock_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/rnd/docking) -"bGk" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "research_dock_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "research_dock_airlock"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "13;65"; tag_airpump = "research_dock_pump"; tag_chamber_sensor = "research_dock_sensor"; tag_exterior_door = "research_dock_outer"; tag_interior_door = "research_dock_inner"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/rnd/docking) +"bGk" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "research_dock_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "research_dock_airlock"; pixel_x = 25; pixel_y = 0; req_one_access = list(13,65); tag_airpump = "research_dock_pump"; tag_chamber_sensor = "research_dock_sensor"; tag_exterior_door = "research_dock_outer"; tag_interior_door = "research_dock_inner"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/rnd/docking) "bGl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bGm" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bGn" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) @@ -4386,7 +4386,7 @@ "bGr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bGs" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bGt" = (/turf/simulated/wall,/area/quartermaster/miningdock) -"bGu" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/mining{name = "Mining Dock"; req_access_txt = "48"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/miningdock) +"bGu" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/mining{name = "Mining Dock"; req_access = list(48)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/miningdock) "bGv" = (/turf/simulated/wall,/area/quartermaster/qm) "bGw" = (/obj/structure/filingcabinet,/turf/simulated/floor,/area/quartermaster/qm) "bGx" = (/obj/machinery/computer/supplycomp,/turf/simulated/floor,/area/quartermaster/qm) @@ -4394,12 +4394,12 @@ "bGz" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/quartermaster/qm) "bGA" = (/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Cargo Bay Entrance"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central_three) "bGB" = (/obj/machinery/status_display,/turf/simulated/wall,/area/hallway/primary/central_three) -"bGC" = (/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central_three) -"bGD" = (/obj/structure/window/basic{dir = 8},/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower{color = "#FFA500"; layer = 3.3},/obj/machinery/door/window/northright{name = "Shower"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) -"bGE" = (/obj/machinery/door/airlock/multi_tile/glass{autoclose = 1; dir = 2; req_access_txt = "5"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/medical/sleeper) +"bGC" = (/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = list(57)},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central_three) +"bGD" = (/obj/structure/window/basic{dir = 8},/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower{color = "#FFA500"; layer = 3.3},/obj/machinery/door/window/northright{name = "Shower"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) +"bGE" = (/obj/machinery/door/airlock/multi_tile/glass{autoclose = 1; dir = 2; req_access = list(5)},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/medical/sleeper) "bGF" = (/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bGG" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bGH" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 1; name = "EMT Storage"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay) +"bGH" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 1; name = "EMT Storage"; req_access = list(5)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay) "bGI" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bGJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bGK" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; sortType = "Chemistry"; name = "Chemistry"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay) @@ -4414,11 +4414,11 @@ "bGT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whiteredcorner"},/area/medical/cryo) "bGU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/cryo) "bGV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/cryo) -"bGW" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Cloning Laboratory"; req_access_txt = "5"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/cryo) +"bGW" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Cloning Laboratory"; req_access = list(5)},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/cryo) "bGX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) "bGY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) "bGZ" = (/obj/structure/disposalpipe/junction{dir = 8},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) -"bHa" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Genetics Laboratory"; req_access_txt = "9"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) +"bHa" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Genetics Laboratory"; req_access = list(9)},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bHb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/medical/genetics) "bHc" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/medical/genetics) "bHd" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/medical/genetics) @@ -4426,10 +4426,10 @@ "bHf" = (/obj/item/light_fixture_frame,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "floorgrime"},/area/medical/genetics) "bHg" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay2) "bHh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 0; icon_state = "shutter0"; id = "staffroom"; name = "Staff Room Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/cryo) -"bHi" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/command{name = "Server Room"; req_access = null; req_access_txt = "30"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/rnd/research) -"bHj" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/rnd/research) +"bHi" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/command{name = "Server Room"; req_access = list(30)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/rnd/research) +"bHj" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access = list(8)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/rnd/research) "bHk" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) -"bHl" = (/obj/structure/table,/obj/machinery/door_control{id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = 5; pixel_y = 15; req_access_txt = "47"},/obj/machinery/computer/skills{icon_state = "medlaptop"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) +"bHl" = (/obj/structure/table,/obj/machinery/door_control{id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = 5; pixel_y = 15; req_access = list(47)},/obj/machinery/computer/skills{icon_state = "medlaptop"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bHm" = (/obj/structure/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Research Director"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bHn" = (/obj/machinery/computer/robotics,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bHo" = (/turf/simulated/floor{dir = 10; icon_state = "warnwhite"},/area/crew_quarters/heads/hor) @@ -4491,7 +4491,7 @@ "bIs" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/medical/genetics) "bIt" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "floorgrime"},/area/medical/genetics) "bIu" = (/obj/item/weapon/table_parts,/turf/simulated/floor{icon_state = "floorgrime"},/area/medical/genetics) -"bIv" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "9;12;47"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/research_port) +"bIv" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_one_access = list(9,12,47)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/research_port) "bIw" = (/turf/simulated/wall/r_wall,/area/maintenance/research_port) "bIx" = (/turf/simulated/wall/r_wall,/area/server) "bIy" = (/obj/machinery/r_n_d/server/robotics,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) @@ -4551,7 +4551,7 @@ "bJA" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) "bJB" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay) "bJC" = (/obj/structure/closet/secure_closet/medical1,/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -31},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bJD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{id_tag = "cmodoor"; name = "CMO's Office"; req_access_txt = "40"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) +"bJD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{id_tag = "cmodoor"; name = "CMO's Office"; req_access = list(40)},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bJE" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/medical/medbay4) "bJF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay4) "bJG" = (/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) @@ -4569,7 +4569,7 @@ "bJS" = (/obj/machinery/alarm/server{dir = 4; pixel_x = -22; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) "bJT" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) "bJU" = (/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) -"bJV" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window/westleft{dir = 8; name = "Server Room"; opacity = 1; req_access_txt = "30"},/obj/machinery/door/window/westleft{dir = 4; name = "Server Room"; opacity = 1; req_access_txt = "30"},/turf/simulated/floor{icon_state = "dark"},/area/server) +"bJV" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window/westleft{dir = 8; name = "Server Room"; opacity = 1; req_access = list(30)},/obj/machinery/door/window/westleft{dir = 4; name = "Server Room"; opacity = 1; req_access = list(30)},/turf/simulated/floor{icon_state = "dark"},/area/server) "bJW" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor{icon_state = "dark"},/area/server) "bJX" = (/obj/structure/bed/chair/office/light,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor{icon_state = "dark"},/area/server) "bJY" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor{icon_state = "dark"},/area/server) @@ -4579,7 +4579,7 @@ "bKc" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/rnd/research) "bKd" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bKe" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/rnd/research) -"bKf" = (/obj/machinery/door/airlock/glass_command{name = "Research Director"; req_access_txt = "30"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/rnd/research) +"bKf" = (/obj/machinery/door/airlock/glass_command{name = "Research Director"; req_access = list(30)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/rnd/research) "bKg" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bKh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor) "bKi" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hop) @@ -4629,7 +4629,7 @@ "bLa" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 28},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) "bLb" = (/obj/machinery/sleep_console,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bLc" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "scanhide"; name = "Diagnostics Room Separation Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) -"bLd" = (/obj/machinery/camera{c_tag = "EMT Storage"; dir = 1; network = list("SS13")},/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = -25; req_access_txt = "5"},/obj/item/weapon/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Paramedic"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bLd" = (/obj/machinery/camera{c_tag = "EMT Storage"; dir = 1; network = list("SS13")},/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = -25; req_access = list(5)},/obj/item/weapon/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Paramedic"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bLe" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) "bLf" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "scanhide"; name = "Diagnostics Room Separation Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) "bLg" = (/obj/machinery/light{dir = 1},/obj/structure/filingcabinet/chestdrawer{dir = 1},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/crew_quarters/heads/cmo) @@ -4639,7 +4639,7 @@ "bLk" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "scanhide"; name = "Diagnostics Room Separation Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) "bLl" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay4) "bLm" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay4) -"bLn" = (/obj/machinery/door/window/southright{dir = 1; name = "Test Chamber"; req_access_txt = "47"},/obj/machinery/door/window/southright{name = "Test Chamber"; req_access_txt = "47"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) +"bLn" = (/obj/machinery/door/window/southright{dir = 1; name = "Test Chamber"; req_access = list(47)},/obj/machinery/door/window/southright{name = "Test Chamber"; req_access = list(47)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bLo" = (/turf/simulated/wall,/area/medical/genetics_cloning) "bLp" = (/obj/structure/computerframe,/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor{icon_state = "floorgrime"},/area/medical/genetics) "bLq" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/constructable_frame/machine_frame,/turf/simulated/floor/plating,/area/medical/genetics) @@ -4649,7 +4649,7 @@ "bLu" = (/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/research_port) "bLv" = (/obj/structure/reagent_dispensers/watertank,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/research_port) "bLw" = (/obj/machinery/r_n_d/server/core,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) -"bLx" = (/obj/machinery/door/window/southleft{dir = 1; name = "Test Chamber"; req_access_txt = "47"},/obj/machinery/door/window/southleft{name = "Test Chamber"; req_access_txt = "47"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) +"bLx" = (/obj/machinery/door/window/southleft{dir = 1; name = "Test Chamber"; req_access = list(47)},/obj/machinery/door/window/southleft{name = "Test Chamber"; req_access = list(47)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bLy" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) "bLz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/server) "bLA" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor{icon_state = "dark"},/area/server) @@ -4676,7 +4676,7 @@ "bLV" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/mining/station) "bLW" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "bLX" = (/obj/machinery/computer/shuttle_control/mining,/turf/simulated/shuttle/floor,/area/shuttle/mining/station) -"bLY" = (/obj/structure/table,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "mining_shuttle"; pixel_x = 25; pixel_y = -8; req_access_txt = "0"; req_one_access_txt = "13;48"; tag_door = "mining_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/mining/station) +"bLY" = (/obj/structure/table,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "mining_shuttle"; pixel_x = 25; pixel_y = -8; req_one_access = list(13,48); tag_door = "mining_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "bLZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bMa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bMb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) @@ -4685,21 +4685,21 @@ "bMe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/miningdock) "bMf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/miningdock) "bMg" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/miningdock) -"bMh" = (/obj/machinery/door/airlock/glass_mining{name = "Quartermaster"; req_access_txt = "41"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/qm) +"bMh" = (/obj/machinery/door/airlock/glass_mining{name = "Quartermaster"; req_access = list(41)},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/qm) "bMi" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/quartermaster/qm) "bMj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/quartermaster/qm) "bMk" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/quartermaster/qm) -"bMl" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_three) +"bMl" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_three) "bMm" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/central_three) "bMn" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_three) "bMo" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/junction,/turf/simulated/floor,/area/hallway/primary/central_three) -"bMp" = (/obj/machinery/door/airlock{name = "Custodial Closet"; req_access_txt = "26"},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central_three) -"bMq" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_two) +"bMp" = (/obj/machinery/door/airlock{name = "Custodial Closet"; req_access = list(26)},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central_three) +"bMq" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_two) "bMr" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_two) "bMs" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/closet/fireaxecabinet{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bMt" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acutesep"; name = "Acute Separation Shutters"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) "bMu" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/sleeper,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) -"bMv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; name = "Acute Treatment"; req_access_txt = "5"},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay) +"bMv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; name = "Acute Treatment"; req_access = list(5)},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay) "bMw" = (/obj/item/weapon/camera_assembly,/turf/simulated/floor/plating,/area/medical/genetics) "bMx" = (/obj/machinery/button/driver{dir = 2; id = "toxinsdriver"; pixel_y = 24},/turf/simulated/floor,/area/rnd/mixing) "bMy" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "CMO's Office"},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/crew_quarters/heads/cmo) @@ -4733,14 +4733,14 @@ "bNa" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) "bNb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) "bNc" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bNd" = (/obj/machinery/door/airlock/external{name = "Toxins Test Chamber"; req_access_txt = "0"},/turf/simulated/floor/plating/airless,/area/rnd/test_area) +"bNd" = (/obj/machinery/door/airlock/external{name = "Toxins Test Chamber"},/turf/simulated/floor/plating/airless,/area/rnd/test_area) "bNe" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating/airless,/area/rnd/test_area) "bNf" = (/obj/machinery/camera{c_tag = "Toxins Test Chamber North"; network = list("Toxins Test Area")},/obj/machinery/light{dir = 1},/turf/simulated/floor/airless,/area/rnd/test_area) "bNg" = (/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "bNh" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "bNi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bNj" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "mining_dock_pump"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/quartermaster/miningdock) -"bNk" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "mining_dock_airlock"; pixel_x = 25; pixel_y = -5; req_access_txt = "0"; req_one_access_txt = "13;48"; tag_airpump = "mining_dock_pump"; tag_chamber_sensor = "mining_dock_sensor"; tag_exterior_door = "mining_dock_outer"; tag_interior_door = "mining_dock_inner"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "mining_dock_sensor"; pixel_x = 25; pixel_y = 8},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/miningdock) +"bNk" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "mining_dock_airlock"; pixel_x = 25; pixel_y = -5; req_one_access = list(13,48); tag_airpump = "mining_dock_pump"; tag_chamber_sensor = "mining_dock_sensor"; tag_exterior_door = "mining_dock_outer"; tag_interior_door = "mining_dock_inner"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "mining_dock_sensor"; pixel_x = 25; pixel_y = 8},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/miningdock) "bNl" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/wall,/area/quartermaster/miningdock) "bNm" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/miningdock) "bNn" = (/obj/effect/landmark/start{name = "Shaft Miner"},/turf/simulated/floor,/area/quartermaster/miningdock) @@ -4772,7 +4772,7 @@ "bNN" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/janitor) "bNO" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/janitor) "bNP" = (/turf/simulated/floor,/area/janitor) -"bNQ" = (/obj/machinery/door/window/westleft{name = "Janitoral Delivery"; req_access_txt = "26"},/turf/simulated/floor{icon_state = "delivery"},/area/janitor) +"bNQ" = (/obj/machinery/door/window/westleft{name = "Janitoral Delivery"; req_access = list(26)},/turf/simulated/floor{icon_state = "delivery"},/area/janitor) "bNR" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Janitor"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "bot"},/area/janitor) "bNS" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/engineering) "bNT" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/engineering) @@ -4780,17 +4780,17 @@ "bNV" = (/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/structure/closet/secure_closet/medical_wall{name = "O- Blood Locker"},/turf/simulated/wall,/area/medical/sleeper) "bNW" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bNX" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/bed/roller,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = -32},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) -"bNY" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/camera{c_tag = "Medbay Acute"; network = list("SS13")},/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = 25; req_access_txt = "5"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bNY" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/camera{c_tag = "Medbay Acute"; network = list("SS13")},/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = 25; req_access = list(5)},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bNZ" = (/obj/machinery/hologram/holopad,/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bOa" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) -"bOb" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "CMO's Office"; req_access_txt = "40"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) +"bOb" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "CMO's Office"; req_access = list(40)},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bOc" = (/obj/structure/bed/chair,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bOd" = (/obj/structure/bed/chair,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bOe" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) -"bOf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "CMO's Office"; req_access_txt = "40"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) +"bOf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "CMO's Office"; req_access = list(40)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bOg" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bOh" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) -"bOi" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Staff Room"; req_access_txt = "5"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay2) +"bOi" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Staff Room"; req_access = list(5)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay2) "bOj" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bOk" = (/obj/item/weapon/stool,/obj/effect/landmark/start{name = "Medical Doctor"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bOl" = (/obj/item/weapon/stool,/obj/effect/landmark/start{name = "Medical Doctor"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) @@ -4821,14 +4821,14 @@ "bOK" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor{dir = 9; icon_state = "warnwhite"},/area/rnd/mixing) "bOL" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "warnwhite"; dir = 1},/area/rnd/mixing) "bOM" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/rnd/mixing) -"bON" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "8;12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) +"bON" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_one_access = list(8,12)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) "bOO" = (/turf/simulated/wall,/area/rnd/mixing) "bOP" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'BOMB RANGE"; name = "BOMB RANGE"},/turf/simulated/wall,/area/rnd/test_area) -"bOQ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/mining/station) -"bOR" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_dock_outer"; locked = 1; name = "Mining Dock Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/miningdock) +"bOQ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/mining/station) +"bOR" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_dock_outer"; locked = 1; name = "Mining Dock Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bOS" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/quartermaster/miningdock) -"bOT" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_dock_inner"; locked = 1; name = "Mining Dock Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor,/area/quartermaster/miningdock) -"bOU" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "mining_dock_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13;48"},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/miningdock) +"bOT" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_dock_inner"; locked = 1; name = "Mining Dock Airlock"; req_access = list(13)},/turf/simulated/floor,/area/quartermaster/miningdock) +"bOU" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "mining_dock_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = 25; req_one_access = list(13,48)},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/miningdock) "bOV" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Shaft Miner"},/turf/simulated/floor,/area/quartermaster/miningdock) "bOW" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/miningdock) "bOX" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/maintenance/cargo) @@ -4855,12 +4855,12 @@ "bPs" = (/obj/structure/mopbucket,/obj/item/weapon/mop,/turf/simulated/floor,/area/janitor) "bPt" = (/turf/simulated/wall,/area/janitor) "bPu" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/engineering) -"bPv" = (/obj/machinery/door/airlock/maintenance{name = "Firefighting equipment"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/engineering) +"bPv" = (/obj/machinery/door/airlock/maintenance{name = "Firefighting equipment"; req_access = list(12)},/turf/simulated/floor/plating,/area/maintenance/engineering) "bPw" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/engineering) "bPx" = (/turf/simulated/floor/plating,/area/maintenance/engineering) "bPy" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/engineering) "bPz" = (/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Aft Primary Hallway"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) -"bPA" = (/obj/machinery/door_control{id = "scanhide"; name = "Diagnostics Room Separation Shutters"; pixel_x = -6; pixel_y = -25; req_access_txt = "5"},/obj/machinery/door_control{id = "acute2"; name = "Acute Treatment Privacy Shutters"; pixel_x = 6; pixel_y = -25; req_access_txt = "5"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bPA" = (/obj/machinery/door_control{id = "scanhide"; name = "Diagnostics Room Separation Shutters"; pixel_x = -6; pixel_y = -25; req_access = list(5)},/obj/machinery/door_control{id = "acute2"; name = "Acute Treatment Privacy Shutters"; pixel_x = 6; pixel_y = -25; req_access = list(5)},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bPB" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 36},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/button/windowtint{id = "isoA_window_tint"; pixel_y = 26},/turf/simulated/floor{dir = 5; icon_state = "whitered"},/area/medical/patient_a) "bPC" = (/obj/machinery/camera{c_tag = "Medbay Port Corridor"; dir = 8; network = list("SS13")},/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_x = 22; pixel_y = -9},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) "bPD" = (/obj/machinery/camera{c_tag = "Medbay CMO Office"; dir = 4; network = list("SS13")},/obj/machinery/light_switch{pixel_x = -22; pixel_y = -9},/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_x = -34; pixel_y = 2},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/crew_quarters/heads/cmo) @@ -4883,7 +4883,7 @@ "bPU" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/rnd/storage) "bPV" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bPW" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/rnd/research) -"bPX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Toxins Lab"; req_access_txt = "8"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) +"bPX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass_research{name = "Toxins Lab"; req_access = list(8)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bPY" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bPZ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bQa" = (/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) @@ -4906,7 +4906,7 @@ "bQr" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/miningdock) "bQs" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/quartermaster/miningdock) "bQt" = (/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j1s"; sortType = "QM Office"; name = "QM Office"},/turf/simulated/floor,/area/quartermaster/miningdock) -"bQu" = (/obj/machinery/door/airlock/maintenance{name = "Mining Maintenance"; req_access_txt = "48"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/quartermaster/miningdock) +"bQu" = (/obj/machinery/door/airlock/maintenance{name = "Mining Maintenance"; req_access = list(48)},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bQv" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/cargo) "bQw" = (/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j1s"; sortType = "HoP Office"; name = "HoP Office"},/turf/simulated/floor/plating,/area/maintenance/cargo) "bQx" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/cargo) @@ -4939,10 +4939,10 @@ "bQY" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1441; icon_state = "map_injector"; id = "n2_in"; use_power = 1},/turf/simulated/floor/engine,/area/rnd/misc_lab) "bQZ" = (/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/crew_quarters/heads/cmo) "bRa" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) -"bRb" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Chief Medical Officer"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "cmooffice"; name = "CMO Privacy Shutters"; pixel_x = 38; pixel_y = 21},/obj/machinery/door_control{desc = "A remote control switch for the CMO's office."; id = "cmodoor"; name = "CMO Office Door Control"; normaldoorcontrol = 1; pixel_x = 28; pixel_y = 21},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "virologyquar"; name = "Virology Emergency Lockdown Control"; pixel_x = -15; pixel_y = 38; req_access_txt = "5"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "medbayquar"; name = "Medbay Emergency Lockdown Control"; pixel_x = -15; pixel_y = 30; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) +"bRb" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Chief Medical Officer"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "cmooffice"; name = "CMO Privacy Shutters"; pixel_x = 38; pixel_y = 21},/obj/machinery/door_control{desc = "A remote control switch for the CMO's office."; id = "cmodoor"; name = "CMO Office Door Control"; normaldoorcontrol = 1; pixel_x = 28; pixel_y = 21},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "virologyquar"; name = "Virology Emergency Lockdown Control"; pixel_x = -15; pixel_y = 38; req_access = list(5)},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "medbayquar"; name = "Medbay Emergency Lockdown Control"; pixel_x = -15; pixel_y = 30; req_access = list(5)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bRc" = (/obj/structure/table,/obj/item/weapon/folder/white{pixel_y = 10},/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/item/weapon/stamp/cmo,/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/crew_quarters/heads/cmo) -"bRd" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Launch Room"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/rnd/mixing) -"bRe" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Launch Room Access"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bRd" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Launch Room"; req_access = list(8)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/rnd/mixing) +"bRe" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Launch Room Access"; req_access = list(8)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bRf" = (/obj/machinery/computer/crew,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bRg" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor{dir = 9; icon_state = "whitered"},/area/medical/patient_a) "bRh" = (/obj/machinery/light{dir = 1},/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/medical/patient_a) @@ -4959,7 +4959,7 @@ "bRs" = (/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/rnd/research) "bRt" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bRu" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/rnd/research) -"bRv" = (/obj/machinery/door/airlock/glass_research{name = "Toxins Lab"; req_access_txt = "8"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) +"bRv" = (/obj/machinery/door/airlock/glass_research{name = "Toxins Lab"; req_access = list(8)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bRw" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bRx" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bRy" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) @@ -4986,17 +4986,17 @@ "bRT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/storage/tech) "bRU" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/crew{pixel_x = -1; pixel_y = 1},/obj/item/weapon/circuitboard/card{pixel_x = 2; pixel_y = -2},/obj/item/weapon/circuitboard/communications{pixel_x = 5; pixel_y = -5},/obj/machinery/light/small{dir = 8},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/storage/tech) "bRV" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/storage/tech) -"bRW" = (/obj/machinery/door/airlock/highsecurity{name = "Secure Tech Storage"; req_access_txt = "19;23"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/storage/tech) +"bRW" = (/obj/machinery/door/airlock/highsecurity{name = "Secure Tech Storage"; req_access = list(19,23)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/storage/tech) "bRX" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/storage/tech) "bRY" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/storage/tech) "bRZ" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/storage/tech) "bSa" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/storage/tech) "bSb" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/tech) -"bSc" = (/obj/machinery/door/airlock/engineering{name = "Tech Storage"; req_access_txt = "23"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/aft) +"bSc" = (/obj/machinery/door/airlock/engineering{name = "Tech Storage"; req_access = list(23)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/aft) "bSd" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) "bSe" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/aft) "bSf" = (/obj/structure/bed/roller,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) -"bSg" = (/obj/machinery/door/airlock/maintenance{name = "Custodial Maintenance"; req_access_txt = "26"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/janitor) +"bSg" = (/obj/machinery/door/airlock/maintenance{name = "Custodial Maintenance"; req_access = list(26)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/janitor) "bSh" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/engineering) "bSi" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/engineering) "bSj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/engineering) @@ -5010,9 +5010,9 @@ "bSr" = (/obj/structure/table/rack,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/glasses/hud/health,/obj/item/device/flashlight/pen,/obj/item/weapon/storage/belt/medical,/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -38},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/crew_quarters/heads/cmo) "bSs" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bSt" = (/obj/machinery/computer/crew,/obj/machinery/light,/turf/simulated/floor{dir = 6; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/crew_quarters/heads/cmo) -"bSu" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Research Division Delivery"; req_access_txt = "47"},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"},/area/rnd/research) +"bSu" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Research Division Delivery"; req_access = list(47)},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"},/area/rnd/research) "bSv" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) -"bSw" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "5;12;47"},/turf/simulated/floor/plating,/area/maintenance/research_port) +"bSw" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/maintenance{req_one_access = list(5,12,47)},/turf/simulated/floor/plating,/area/maintenance/research_port) "bSx" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bSy" = (/obj/item/weapon/stool,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/landmark/start{name = "Chemist"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bSz" = (/obj/item/weapon/stool,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -30},/obj/effect/landmark/start{name = "Chemist"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) @@ -5020,10 +5020,10 @@ "bSB" = (/obj/machinery/light,/obj/machinery/vending/snack,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bSC" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/structure/bed/chair/office/dark,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/patient_a) "bSD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_a) -"bSE" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"},/obj/machinery/camera{c_tag = "Medbay Patient A"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/patient_a) +"bSE" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0},/obj/machinery/camera{c_tag = "Medbay Patient A"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/patient_a) "bSF" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/structure/bed/chair/office/dark,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/patient_b) "bSG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_b) -"bSH" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"},/obj/machinery/camera{c_tag = "Medbay Patient B"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/patient_b) +"bSH" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0},/obj/machinery/camera{c_tag = "Medbay Patient B"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/patient_b) "bSI" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/rnd/storage) "bSJ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/storage) "bSK" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/rnd/research) @@ -5048,7 +5048,7 @@ "bTd" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/mining/station) "bTe" = (/obj/structure/shuttle/engine/propulsion/burst,/turf/space,/area/shuttle/mining/station) "bTf" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/mining/station) -"bTg" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "mining_dock_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13;48"},/turf/space,/area/space) +"bTg" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "mining_dock_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = 25; req_one_access = list(13,48)},/turf/space,/area/space) "bTh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bTi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bTj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) @@ -5068,7 +5068,7 @@ "bTx" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera/autoname{dir = 8},/turf/simulated/floor,/area/engineering/atmos/monitoring) "bTy" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/aft) "bTz" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) -"bTA" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/aft) +"bTA" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/aft) "bTB" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/engineering) "bTC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/engineering) "bTD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/engineering) @@ -5082,7 +5082,7 @@ "bTL" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay4) "bTM" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/aft) "bTN" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) -"bTO" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "CMO's Office"; req_access_txt = "40"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) +"bTO" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "CMO's Office"; req_access = list(40)},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "bTP" = (/turf/simulated/wall,/area/engineering/break_room) "bTQ" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "bot"},/area/rnd/research) "bTR" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay4) @@ -5095,7 +5095,7 @@ "bTY" = (/obj/machinery/iv_drip,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 6; icon_state = "whitered"},/area/medical/patient_b) "bTZ" = (/obj/machinery/shieldwallgen{anchored = 1; req_access = list(47)},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bUa" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "bot"},/area/rnd/research) -"bUb" = (/obj/structure/table/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/noticeboard{pixel_y = 27},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "hop_office_desk"; name = "HoP Office Privacy Shutters"; opacity = 0},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Reception Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access_txt = "57"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/hop) +"bUb" = (/obj/structure/table/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/noticeboard{pixel_y = 27},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "hop_office_desk"; name = "HoP Office Privacy Shutters"; opacity = 0},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Reception Window"},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access = list(57)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/hop) "bUc" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer_1"; use_power = 1; power_setting = 20; set_temperature = 73},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "dark"},/area/server) "bUd" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; icon_state = "map_vent_out"; use_power = 1},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) "bUe" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 6},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/medical/sleeper) @@ -5108,9 +5108,9 @@ "bUl" = (/obj/machinery/airlock_sensor{id_tag = "tox_airlock_sensor"; master_tag = "tox_airlock_control"; pixel_y = 24},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/engine,/area/rnd/mixing) "bUm" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/rnd/mixing) "bUn" = (/turf/simulated/wall,/area/maintenance/research_starboard) -"bUo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "8;12"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/research_starboard) +"bUo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_one_access = list(8,12)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/research_starboard) "bUp" = (/obj/structure/disposaloutlet,/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating/airless,/area/rnd/mixing) -"bUq" = (/obj/machinery/door/window/southright{name = "Toxins Launcher"; req_access_txt = "8"; req_one_access_txt = "0"},/obj/machinery/door/window/southright{dir = 1; name = "Toxins Launcher"; req_access_txt = "8"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/mixing) +"bUq" = (/obj/machinery/door/window/southright{name = "Toxins Launcher"; req_access = list(8)},/obj/machinery/door/window/southright{dir = 1; name = "Toxins Launcher"; req_access = list(8)},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/mixing) "bUr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/mixing) "bUs" = (/turf/simulated/floor/airless{icon_state = "warning"},/area/rnd/test_area) "bUt" = (/turf/simulated/floor/airless{dir = 6; icon_state = "warning"},/area/rnd/test_area) @@ -5137,7 +5137,7 @@ "bUO" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{dir = 4; id = "isoA_window_tint"},/obj/structure/window/reinforced/polarized{id = "isoA_window_tint"},/obj/structure/window/reinforced/polarized{dir = 1; id = "isoA_window_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "isoA_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_a) "bUP" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{id = "isoB_window_tint"},/obj/structure/window/reinforced/polarized{dir = 4; id = "isoB_window_tint"},/obj/structure/window/reinforced/polarized{dir = 1; id = "isoB_window_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "isoB_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_b) "bUQ" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/medical/sleeper) -"bUR" = (/obj/machinery/door_control{id = "scanhide"; name = "Diagnostics Room Separation Shutters"; pixel_x = -6; pixel_y = 25; req_access_txt = "5"},/obj/machinery/camera{c_tag = "Medbay Scanning"; network = list("SS13")},/obj/machinery/atmospherics/unary/freezer{dir = 8; icon_state = "freezer"},/obj/machinery/door_control{id = "scanhideside"; name = "Diagnostics Room Privacy Shutters"; pixel_x = 6; pixel_y = 25; req_access_txt = "5"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper) +"bUR" = (/obj/machinery/door_control{id = "scanhide"; name = "Diagnostics Room Separation Shutters"; pixel_x = -6; pixel_y = 25; req_access = list(5)},/obj/machinery/camera{c_tag = "Medbay Scanning"; network = list("SS13")},/obj/machinery/atmospherics/unary/freezer{dir = 8; icon_state = "freezer"},/obj/machinery/door_control{id = "scanhideside"; name = "Diagnostics Room Privacy Shutters"; pixel_x = 6; pixel_y = 25; req_access = list(5)},/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper) "bUS" = (/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bUT" = (/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "bUU" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay4) @@ -5156,9 +5156,9 @@ "bVh" = (/obj/machinery/iv_drip,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/patient_wing) "bVi" = (/turf/simulated/wall,/area/medical/patient_wing) "bVj" = (/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Quarantine Shutters"; opacity = 0},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central_two) -"bVk" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Sub-Acute A"; req_access_txt = "0"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) +"bVk" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Sub-Acute A"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) "bVl" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 2; sortType = "RD Office"; name = "RD Office"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) -"bVm" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Sub-Acute B"; req_access_txt = "0"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) +"bVm" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Sub-Acute B"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) "bVn" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 6},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bVo" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bVp" = (/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/crowbar/red,/obj/item/clothing/glasses/science,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) @@ -5167,10 +5167,10 @@ "bVs" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bVt" = (/obj/structure/table/reinforced,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bVu" = (/obj/machinery/computer/security/telescreen{desc = "Used to monitor the proceedings inside the test chamber."; name = "Test Chamber Monitor"; network = list("Miscellaneous Reseach"); pixel_x = 32; pixel_y = 0},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bVv" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/rnd/research) +"bVv" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access = list(8)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/rnd/research) "bVw" = (/obj/machinery/vending/cigarette{pixel_x = 0; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bVx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/research) -"bVy" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) +"bVy" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access = list(47)},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bVz" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine/vacuum,/area/rnd/mixing) "bVA" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/rnd/research) "bVB" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/wall/r_wall,/area/rnd/mixing) @@ -5208,7 +5208,7 @@ "bWh" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/engineering_construction,/obj/item/weapon/book/manual/evaguide{pixel_x = -2; pixel_y = 7},/turf/simulated/floor/carpet,/area/engineering/break_room) "bWi" = (/obj/structure/bookcase/manuals/engineering,/turf/simulated/floor/carpet,/area/engineering/break_room) "bWj" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; location = "Medbay"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor{icon_state = "bot"},/area/medical/sleeper) -"bWk" = (/obj/machinery/door/window/eastleft{name = "Medical Delivery"; req_access_txt = "5"},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper) +"bWk" = (/obj/machinery/door/window/eastleft{name = "Medical Delivery"; req_access = list(5)},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper) "bWl" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/medical/sleeper) "bWm" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/medical/sleeper) "bWn" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor,/area/medical/sleeper) @@ -5236,25 +5236,25 @@ "bWJ" = (/obj/structure/bed/chair/comfy/teal,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/medical/patient_wing) "bWK" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "whitered_b"; tag = "icon-whitered_b (WEST)"},/area/medical/patient_wing) "bWL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/patient_wing) -"bWM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Medbay Patient Wing Maintenance Access"; req_access_txt = "5"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/medical/patient_wing) +"bWM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Medbay Patient Wing Maintenance Access"; req_access = list(5)},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/medical/patient_wing) "bWN" = (/obj/effect/landmark/start{name = "Scientist"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bWO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bWP" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bWQ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) -"bWR" = (/obj/machinery/door/airlock/glass_medical{name = "Hygiene Facilities"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) +"bWR" = (/obj/machinery/door/airlock/glass_medical{name = "Hygiene Facilities"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) "bWS" = (/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bWT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bWU" = (/obj/structure/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Scientist"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bWV" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/research{name = "Miscellaneous Reseach Room"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) +"bWV" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/research{name = "Miscellaneous Reseach Room"; req_access = list(47)},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bWW" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bWX" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bWY" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bWZ" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bXa" = (/turf/simulated/floor/engine/vacuum,/area/rnd/mixing) "bXb" = (/obj/machinery/air_sensor{frequency = 1430; id_tag = "toxins_mixing_exterior"; output = 63},/turf/simulated/floor/engine/vacuum,/area/rnd/mixing) -"bXc" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1379; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_exterior"; locked = 1; name = "Mixing Room Exterior Airlock"; req_access_txt = "8"},/turf/simulated/floor/engine,/area/rnd/mixing) +"bXc" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1379; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_exterior"; locked = 1; name = "Mixing Room Exterior Airlock"; req_access = list(8)},/turf/simulated/floor/engine,/area/rnd/mixing) "bXd" = (/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume{dir = 2; frequency = 1379; id = "tox_airlock_pump"},/obj/machinery/air_sensor{frequency = 1430; id_tag = "toxins_mixing_interior"; output = 63; pixel_x = -8; pixel_y = -18},/turf/simulated/floor/engine,/area/rnd/mixing) -"bXe" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1379; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_interior"; locked = 1; name = "Mixing Room Interior Airlock"; req_access_txt = "8"},/turf/simulated/floor/engine,/area/rnd/mixing) +"bXe" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1379; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_interior"; locked = 1; name = "Mixing Room Interior Airlock"; req_access = list(8)},/turf/simulated/floor/engine,/area/rnd/mixing) "bXf" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/rnd/mixing) "bXg" = (/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/rnd/mixing) "bXh" = (/obj/machinery/computer/general_air_control{frequency = 1430; name = "Mixing Chamber Monitor"; sensors = list("toxins_mixing_exterior" = "Mixing Chamber - Exterior", "toxins_mixing_interior" = "Mixing Chamber - Interior")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/mixing) @@ -5263,10 +5263,10 @@ "bXk" = (/turf/simulated/floor/airless{dir = 5; icon_state = "warning"},/area/rnd/test_area) "bXl" = (/turf/simulated/floor/airless{icon_state = "warningcorner"; dir = 4},/area/rnd/test_area) "bXm" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape_pod5/station) -"bXn" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_5"; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "escape_pod_5_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station) +"bXn" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_5"; pixel_x = 0; pixel_y = -25; tag_door = "escape_pod_5_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station) "bXo" = (/obj/structure/bed/chair{dir = 8},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station) -"bXp" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_5_hatch"; locked = 1; name = "Escape Pod Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station) -"bXq" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_5_berth_hatch"; locked = 1; name = "Escape Pod"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/cargo) +"bXp" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_5_hatch"; locked = 1; name = "Escape Pod Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station) +"bXq" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_5_berth_hatch"; locked = 1; name = "Escape Pod"; req_access = list(13)},/turf/simulated/floor/plating,/area/maintenance/cargo) "bXr" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{frequency = 1380; id_tag = "escape_pod_5_berth"; pixel_x = -25; pixel_y = 25; tag_door = "escape_pod_5_berth_hatch"},/turf/simulated/floor/plating,/area/maintenance/cargo) "bXs" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/cargo) "bXt" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) @@ -5302,11 +5302,11 @@ "bXX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) "bXY" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/research) "bXZ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/substation/research) -"bYa" = (/obj/machinery/door/airlock/maintenance{name = "Miscellaneous Reseach Maintenance"; req_access_txt = "47"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/substation/research) +"bYa" = (/obj/machinery/door/airlock/maintenance{name = "Miscellaneous Reseach Maintenance"; req_access = list(47)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/substation/research) "bYb" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/research_port) "bYc" = (/turf/simulated/wall,/area/maintenance/substation/research) "bYd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/research_port) -"bYe" = (/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/button/ignition{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/rnd/mixing) +"bYe" = (/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access = list(7)},/obj/machinery/button/ignition{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/rnd/mixing) "bYf" = (/turf/simulated/wall,/area/maintenance/research_port) "bYg" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = -32},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/research_port) "bYh" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) @@ -5316,7 +5316,7 @@ "bYl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/research_port) "bYm" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bYn" = (/obj/machinery/light_switch{pixel_x = 7; pixel_y = -23},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bYo" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/research{name = "Miscellaneous Reseach Room"; req_access_txt = "47"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) +"bYo" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/research{name = "Miscellaneous Reseach Room"; req_access = list(47)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bYp" = (/obj/machinery/light,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bYq" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bYr" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) @@ -5324,7 +5324,7 @@ "bYt" = (/obj/machinery/camera{c_tag = "Research Division South"; dir = 1; network = list("SS13","Research"); pixel_x = 0},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bYu" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bYv" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) -"bYw" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/window/eastright{dir = 8; name = "Chemistry Desk"; req_access_txt = "33"},/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "chemcounter"; name = "Pharmacy Counter Shutters"; opacity = 0},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/medical/chemistry) +"bYw" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/window/eastright{dir = 8; name = "Chemistry Desk"; req_access = list(33)},/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "chemcounter"; name = "Pharmacy Counter Shutters"; opacity = 0},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/medical/chemistry) "bYx" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/wall/r_wall,/area/rnd/mixing) "bYy" = (/obj/machinery/atm{pixel_y = 28},/turf/simulated/floor{dir = 4; icon_state = "yellowpatch"},/area/engineering/foyer) "bYz" = (/obj/machinery/atmospherics/valve{dir = 4},/obj/machinery/light,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -29},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/rnd/mixing) @@ -5335,7 +5335,7 @@ "bYE" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/cargo) "bYF" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/wall,/area/maintenance/cargo) "bYG" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/plating,/area/maintenance/cargo) -"bYH" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/cargo) +"bYH" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/cargo) "bYI" = (/turf/simulated/wall/r_wall,/area/crew_quarters/heads/chief) "bYJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) "bYK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) @@ -5354,7 +5354,7 @@ "bYX" = (/obj/structure/bed/chair/comfy/beige{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/carpet,/area/engineering/break_room) "bYY" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor/carpet,/area/engineering/break_room) "bYZ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor/carpet,/area/engineering/break_room) -"bZa" = (/obj/machinery/door/airlock/engineering{name = "Engineering Supplies"; req_one_access_txt = "10;24;5"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/engineering/break_room) +"bZa" = (/obj/machinery/door/airlock/engineering{name = "Engineering Supplies"; req_one_access = list(10,24,5)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/engineering/break_room) "bZb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/carpet,/area/engineering/break_room) "bZc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi_wash) "bZd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = -20; pixel_y = 22},/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/crew_quarters/sleep/engi_wash) @@ -5362,7 +5362,7 @@ "bZf" = (/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi_wash) "bZg" = (/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psych"; name = "Mental Health Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 1},/turf/simulated/floor/plating,/area/medical/medbay4) "bZh" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engineering) -"bZi" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Medbay Diagnostics Maintenance Access"; req_access_txt = "5"},/turf/simulated/floor/plating,/area/medical/sleeper) +"bZi" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Medbay Diagnostics Maintenance Access"; req_access = list(5)},/turf/simulated/floor/plating,/area/medical/sleeper) "bZj" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor,/area/medical/sleeper) "bZk" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/medical/sleeper) "bZl" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/medical/sleeper) @@ -5371,18 +5371,18 @@ "bZo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "bZp" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "bZq" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/medbay4) -"bZr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Patient Ward"; req_access_txt = "0"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) -"bZs" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Mental Health"; req_access_txt = "0"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) +"bZr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Patient Ward"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) +"bZs" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Mental Health"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "bZt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/hallway/primary/starboard) -"bZu" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/folder/white,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Robotics Desk"; req_access_txt = "29"},/turf/simulated/floor/plating,/area/hallway/primary/starboard) +"bZu" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/folder/white,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Robotics Desk"; req_access = list(29)},/turf/simulated/floor/plating,/area/hallway/primary/starboard) "bZv" = (/obj/machinery/camera{c_tag = "Medbay Patient Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) "bZw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/research_port) "bZx" = (/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) "bZy" = (/turf/simulated/wall,/area/medical/biostorage) -"bZz" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Secondary Storage"; req_access_txt = "5"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/medical/medbay2) +"bZz" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Secondary Storage"; req_access = list(5)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/medical/medbay2) "bZA" = (/turf/simulated/wall,/area/medical/patient_c) -"bZB" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/window/southright{name = "Research and Development Desk"; req_access_txt = "7"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/hallway/primary/starboard) -"bZC" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Sub-Acute C"; req_access_txt = "0"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_c) +"bZB" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/window/southright{name = "Research and Development Desk"; req_access = list(7)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/hallway/primary/starboard) +"bZC" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Sub-Acute C"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_c) "bZD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_port) "bZE" = (/obj/machinery/light,/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bZF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_port) @@ -5391,7 +5391,7 @@ "bZI" = (/obj/machinery/disposal,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/camera{c_tag = "Telescience Control Room"; dir = 1; network = list("SS13","Research"); pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bZJ" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/closet/bombcloset,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bZK" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/light,/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bZL" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Mech Bay"; req_access_txt = "29"; req_one_access_txt = "0"},/turf/simulated/floor,/area/hallway/primary/starboard) +"bZL" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Mech Bay"; req_access = list(29)},/turf/simulated/floor,/area/hallway/primary/starboard) "bZM" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/blast/shutters{dir = 2; id = "Skynet_launch"; name = "Mech Bay"},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/primary/starboard) "bZN" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Quarantine Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/hallway/primary/starboard) "bZO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/research_starboard) @@ -5416,7 +5416,7 @@ "cah" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) "cai" = (/obj/machinery/button/driver{id = "enginecore"; name = "Emergency Core Eject"; pixel_x = -20; pixel_y = 0},/obj/structure/window/basic{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/heads/chief) "caj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) -"cak" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_command{name = "Chief Engineer"; req_access_txt = "56"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/crew_quarters/heads/chief) +"cak" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_command{name = "Chief Engineer"; req_access = list(56)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cal" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engineering/foyer) "cam" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) "can" = (/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) @@ -5429,7 +5429,7 @@ "cau" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/structure/bed/roller,/turf/simulated/floor,/area/medical/sleeper) "cav" = (/obj/machinery/atmospherics/pipe/simple/visible/red,/turf/simulated/floor,/area/engineering/atmos) "caw" = (/obj/machinery/power/apc/high{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/turf/simulated/floor,/area/medical/sleeper) -"cax" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; name = "Diagnostics Room"; req_access_txt = "5"},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay4) +"cax" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; name = "Diagnostics Room"; req_access = list(5)},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay4) "cay" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "caz" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "caA" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/structure/bed/chair/comfy/teal{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whitered"},/area/medical/ward) @@ -5454,7 +5454,7 @@ "caT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/meter,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor/plating,/area/maintenance/research_port) "caU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/research_port) "caV" = (/obj/effect/decal/cleanable/cobweb2,/obj/effect/decal/cleanable/spiderling_remains,/turf/simulated/floor/plating,/area/maintenance/research_port) -"caW" = (/obj/machinery/door/firedoor/border_only{name = "hazard door south"},/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) +"caW" = (/obj/machinery/door/firedoor/border_only{name = "hazard door south"},/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access = list(47)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "caX" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/extinguisher,/obj/item/device/flashlight,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "caY" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/research_starboard) "caZ" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/research_starboard) @@ -5470,25 +5470,25 @@ "cbj" = (/obj/machinery/newscaster{pixel_x = 28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/engineering/break_room) "cbk" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/lab) "cbl" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless,/area/maintenance/atmos_control) -"cbm" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_eva_outer"; locked = 1; name = "Engineering EVA External Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/airless{icon_state = "circuit"},/area/maintenance/atmos_control) -"cbn" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eng_eva_airlock"; name = "exterior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor/plating/airless,/area/maintenance/atmos_control) -"cbo" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "eng_eva_pump"; tag_exterior_door = "eng_eva_outer"; frequency = 1379; id_tag = "eng_eva_airlock"; tag_interior_door = "eng_eva_inner"; name = "Engineering Airlock Console"; pixel_y = 25; req_access_txt = "13"; tag_chamber_sensor = "eng_eva_sensor"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor{dir = 5; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) +"cbm" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_eva_outer"; locked = 1; name = "Engineering EVA External Access"; req_access = list(13)},/turf/simulated/floor/airless{icon_state = "circuit"},/area/maintenance/atmos_control) +"cbn" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eng_eva_airlock"; name = "exterior access button"; pixel_x = 0; pixel_y = 25; req_access = list(13)},/turf/simulated/floor/plating/airless,/area/maintenance/atmos_control) +"cbo" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "eng_eva_pump"; tag_exterior_door = "eng_eva_outer"; frequency = 1379; id_tag = "eng_eva_airlock"; tag_interior_door = "eng_eva_inner"; name = "Engineering Airlock Console"; pixel_y = 25; req_access = list(13); tag_chamber_sensor = "eng_eva_sensor"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor{dir = 5; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) "cbp" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eng_eva_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "eng_eva_pump"},/turf/simulated/floor{dir = 9; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) -"cbq" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eng_eva_airlock"; name = "interior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor{dir = 8; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) -"cbr" = (/obj/structure/closet/secure_closet/engineering_chief{req_access_txt = "0"},/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor,/area/crew_quarters/heads/chief) +"cbq" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eng_eva_airlock"; name = "interior access button"; pixel_x = 0; pixel_y = 25; req_access = list(13)},/turf/simulated/floor{dir = 8; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) +"cbr" = (/obj/structure/closet/secure_closet/engineering_chief,/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor,/area/crew_quarters/heads/chief) "cbs" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/heads/chief) -"cbt" = (/obj/machinery/keycard_auth{pixel_x = -24; pixel_y = 0},/obj/machinery/door_control{desc = "A remote control-switch for engine core."; id = "EngineVent"; name = "Engine Ventillatory Control"; pixel_x = -24; pixel_y = 10; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door_control{desc = "A remote control-switch for the engine core airlock hatch bolts."; id = "engine_access_hatch"; name = "Engine Hatch Bolt Control"; normaldoorcontrol = 1; pixel_x = -24; pixel_y = -10; req_access_txt = "10"; specialfunctions = 4},/turf/simulated/floor,/area/crew_quarters/heads/chief) +"cbt" = (/obj/machinery/keycard_auth{pixel_x = -24; pixel_y = 0},/obj/machinery/door_control{desc = "A remote control-switch for engine core."; id = "EngineVent"; name = "Engine Ventillatory Control"; pixel_x = -24; pixel_y = 10; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door_control{desc = "A remote control-switch for the engine core airlock hatch bolts."; id = "engine_access_hatch"; name = "Engine Hatch Bolt Control"; normaldoorcontrol = 1; pixel_x = -24; pixel_y = -10; req_access = list(10); specialfunctions = 4},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cbu" = (/obj/structure/table/reinforced,/obj/machinery/photocopier/faxmachine{department = "Chief Engineer's Office"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cbv" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/clothing/glasses/meson{pixel_y = 4},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/clothing/glasses/welding/superior,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/crew_quarters/heads/chief) "cbw" = (/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cbx" = (/obj/structure/disposalpipe/segment,/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/turf/simulated/floor,/area/crew_quarters/heads/chief) -"cby" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_eva_inner"; locked = 1; name = "Engineering EVA Internal Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/atmos_control) +"cby" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_eva_inner"; locked = 1; name = "Engineering EVA Internal Access"; req_access = list(13)},/turf/simulated/floor/plating,/area/maintenance/atmos_control) "cbz" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) "cbA" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) "cbB" = (/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) "cbC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) "cbD" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) -"cbE" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Break Room"; req_one_access_txt = "10;24;5"},/turf/simulated/floor,/area/engineering/break_room) +"cbE" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Break Room"; req_one_access = list(10,24,5)},/turf/simulated/floor,/area/engineering/break_room) "cbF" = (/obj/structure/mirror{pixel_y = 32},/obj/structure/sink{pixel_y = 16},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "cbG" = (/obj/structure/mirror{pixel_y = 32},/obj/structure/sink{pixel_y = 16},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "cbH" = (/obj/structure/urinal{pixel_y = 32},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) @@ -5498,7 +5498,7 @@ "cbL" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{pixel_x = -26},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/ward) "cbM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/ward) "cbN" = (/turf/simulated/floor{icon_state = "white"},/area/medical/ward) -"cbO" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/ward) +"cbO" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/ward) "cbP" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/wood,/area/medical/psych) "cbQ" = (/obj/structure/bed/chair/comfy/beige{tag = "icon-comfychair (NORTH)"; icon_state = "comfychair"; dir = 1},/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor/carpet,/area/engineering/break_room) "cbR" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/medical/psych) @@ -5506,13 +5506,13 @@ "cbT" = (/obj/structure/closet/crate{icon_state = "crateopen"; name = "Grenade Crate"; opened = 1},/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "cbU" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/structure/bed/chair/office/dark{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/patient_c) "cbV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_c) -"cbW" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"},/obj/machinery/camera{c_tag = "Medbay Patient C"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/patient_c) +"cbW" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0},/obj/machinery/camera{c_tag = "Medbay Patient C"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/patient_c) "cbX" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/substation/research) "cbY" = (/obj/structure/cable/green,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/substation/research) "cbZ" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/substation/research) "cca" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_port) "ccb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) -"ccc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Science Substation"; req_access_txt = "0"; req_one_access_txt = "11;24;47"},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/substation/research) +"ccc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Science Substation"; req_one_access = list(11,24,47)},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/substation/research) "ccd" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/substation/research) "cce" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating,/area/maintenance/research_port) "ccf" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/medical/patient_wing) @@ -5523,11 +5523,11 @@ "cck" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/research_port) "ccl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_port) "ccm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating,/area/maintenance/research_port) -"ccn" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access_txt = "39"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/medical/virologyaccess) +"ccn" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access = list(39)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/medical/virologyaccess) "cco" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/research_port) "ccp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/research_port) "ccq" = (/obj/machinery/atmospherics/tvalve{dir = 4; name = "siphon switching valve"},/turf/simulated/floor/plating,/area/maintenance/research_starboard) -"ccr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;47"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/rnd/xenobiology) +"ccr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_one_access = list(12,47)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/rnd/xenobiology) "ccs" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "cct" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "ccu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/research_starboard) @@ -5545,7 +5545,7 @@ "ccG" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/weapon/rig/ce,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/crew_quarters/heads/chief) "ccH" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "ccI" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) -"ccJ" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_command{name = "Chief Engineer"; req_access_txt = "56"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) +"ccJ" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_command{name = "Chief Engineer"; req_access = list(56)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "ccK" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "ccL" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Engineer's Desk"; departmentType = 6; name = "Chief Engineer RC"; pixel_x = 0; pixel_y = -34},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "ccM" = (/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 1; network = list("SS13")},/obj/item/device/radio/intercom{layer = 4; name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) @@ -5562,7 +5562,7 @@ "ccX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) "ccY" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 2; name = "Engineering Break Room"; sortType = "Engineering Break Room"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) "ccZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/engineering/break_room) -"cda" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Break Room"; req_one_access_txt = "10;24;5"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/break_room) +"cda" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Break Room"; req_one_access = list(10,24,5)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/break_room) "cdb" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/engineering/break_room) "cdc" = (/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = -20; pixel_y = -21},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "cdd" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) @@ -5574,10 +5574,10 @@ "cdj" = (/obj/machinery/camera{c_tag = "Medbay Surgery Observation"; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/surgeryobs) "cdk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/surgeryobs) "cdl" = (/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 22},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/medical/surgeryobs) -"cdm" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Observation Room"; req_access_txt = "0"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) +"cdm" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Observation Room"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "cdn" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor{icon_state = "white_halfo"},/area/medical/medbay4) "cdo" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white_halfp"},/area/medical/medbay4) -"cdp" = (/obj/machinery/door/airlock/glass_medical{name = "Patient Ward"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) +"cdp" = (/obj/machinery/door/airlock/glass_medical{name = "Patient Ward"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "cdq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/ward) "cdr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/ward) "cds" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/ward) @@ -5612,21 +5612,21 @@ "cdV" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "medbayrecquar"; name = "Medbay Emergency Quarantine Shutters"; opacity = 0},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/medical/reception) "cdW" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "medbayrecquar"; name = "Medbay Emergency Quarantine Shutters"; opacity = 0},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/medical/reception) "cdX" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 6},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/research_starboard) -"cdY" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "toxin_test_airlock"; name = "interior access button"; pixel_x = 20; pixel_y = 20; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/research_starboard) -"cdZ" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "toxin_test_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/research_starboard) +"cdY" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "toxin_test_airlock"; name = "interior access button"; pixel_x = 20; pixel_y = 20; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/research_starboard) +"cdZ" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "toxin_test_inner"; locked = 1; name = "Engineering External Access"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "cea" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "toxin_test_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "toxin_test_sensor"; pixel_x = 0; pixel_y = 16},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/research_starboard) -"ceb" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "toxin_test_pump"; tag_exterior_door = "toxin_test_outer"; frequency = 1379; id_tag = "toxin_test_airlock"; tag_interior_door = "toxin_test_inner"; pixel_x = 0; pixel_y = 25; req_access_txt = "13"; tag_chamber_sensor = "toxin_test_sensor"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/research_starboard) -"cec" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "toxin_test_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/research_starboard) +"ceb" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "toxin_test_pump"; tag_exterior_door = "toxin_test_outer"; frequency = 1379; id_tag = "toxin_test_airlock"; tag_interior_door = "toxin_test_inner"; pixel_x = 0; pixel_y = 25; req_access = list(13); tag_chamber_sensor = "toxin_test_sensor"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/research_starboard) +"cec" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "toxin_test_outer"; locked = 1; name = "Engineering External Access"; req_access = list(10,13)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "ced" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/machinery/door/blast/regular{density = 1; icon_state = "pdoor1"; id = "Disposal Exit"; name = "Disposal Exit Vent"; opacity = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) "cee" = (/obj/machinery/camera{c_tag = "Engineering Washroom"; dir = 1; network = list("SS13")},/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) -"cef" = (/obj/machinery/door/airlock/external{name = "Toxins Test Chamber"; req_access_txt = "0"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/rnd/test_area) +"cef" = (/obj/machinery/door/airlock/external{name = "Toxins Test Chamber"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/rnd/test_area) "ceg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/rnd/test_area) "ceh" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/rnd/test_area) "cei" = (/obj/machinery/camera{c_tag = "Toxins Test Chamber South"; dir = 1; network = list("Toxins Test Area")},/obj/machinery/light,/turf/simulated/floor/airless,/area/rnd/test_area) "cej" = (/turf/simulated/wall,/area/construction) "cek" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/engineering/break_room) "cel" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/engineering/break_room) -"cem" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering Washroom"; req_one_access_txt = "10;24;5"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/break_room) +"cem" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering Washroom"; req_one_access = list(10,24,5)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/break_room) "cen" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/carpet,/area/engineering/break_room) "ceo" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -36},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/button/windowtint{id = "isoC_window_tint"; pixel_y = -26},/turf/simulated/floor{dir = 6; icon_state = "whitered"},/area/medical/patient_c) "cep" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/disposalpipe/segment,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/atmos_control) @@ -5642,15 +5642,15 @@ "cez" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "ceA" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) "ceB" = (/obj/machinery/door/airlock/medical{autoclose = 0; icon_state = "door_open"; id_tag = "engineering_cubicle"; name = "Restroom"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) -"ceC" = (/obj/machinery/door/airlock/engineering{name = "Engineering Substation"; req_access_txt = "0"; req_one_access_txt = "11;24"},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) +"ceC" = (/obj/machinery/door/airlock/engineering{name = "Engineering Substation"; req_one_access = list(11,24)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) "ceD" = (/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/surgeryobs) "ceE" = (/obj/structure/bed/chair,/turf/simulated/floor,/area/medical/surgeryobs) "ceF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "bluecorner"},/area/medical/surgeryobs) "ceG" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/medical/surgeryobs) -"ceH" = (/obj/machinery/door/firedoor,/obj/machinery/holosign/surgery,/obj/machinery/door/airlock/glass_medical{id_tag = "Surgery"; name = "Pre-Op Prep Room"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) -"ceI" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/holosign/surgery,/obj/machinery/door/airlock/glass_medical{id_tag = "Surgery"; name = "Pre-Op Prep Room"; req_access_txt = "5"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) +"ceH" = (/obj/machinery/door/firedoor,/obj/machinery/holosign/surgery,/obj/machinery/door/airlock/glass_medical{id_tag = "Surgery"; name = "Pre-Op Prep Room"; req_access = list(5)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) +"ceI" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/holosign/surgery,/obj/machinery/door/airlock/glass_medical{id_tag = "Surgery"; name = "Pre-Op Prep Room"; req_access = list(5)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "ceJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/ward) -"ceK" = (/obj/structure/closet/secure_closet{name = "Psychiatrist's Locker"; req_access = null; req_access_txt = "64"},/obj/item/clothing/suit/straight_jacket{layer = 3},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/pill/methylphenidate,/obj/item/weapon/reagent_containers/pill/citalopram,/obj/item/weapon/reagent_containers/pill/citalopram,/obj/item/weapon/reagent_containers/pill/methylphenidate,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/floor{icon_state = "bcarpet04"},/area/medical/psych) +"ceK" = (/obj/structure/closet/secure_closet{name = "Psychiatrist's Locker"; req_access = list(64)},/obj/item/clothing/suit/straight_jacket{layer = 3},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/pill/methylphenidate,/obj/item/weapon/reagent_containers/pill/citalopram,/obj/item/weapon/reagent_containers/pill/citalopram,/obj/item/weapon/reagent_containers/pill/methylphenidate,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/floor{icon_state = "bcarpet04"},/area/medical/psych) "ceL" = (/turf/simulated/floor{icon_state = "bcarpet05"},/area/medical/psych) "ceM" = (/obj/structure/bookcase,/turf/simulated/floor{icon_state = "bcarpet06"},/area/medical/psych) "ceN" = (/obj/machinery/vending/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) @@ -5668,7 +5668,7 @@ "ceZ" = (/obj/structure/table,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/weapon/hand_labeler,/turf/simulated/floor{tag = "icon-whitegreen (NORTHWEST)"; icon_state = "whitegreen"; dir = 9},/area/rnd/xenobiology/xenoflora_storage) "cfa" = (/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "cfb" = (/obj/structure/closet/secure_closet/hydroponics{req_access = list(47)},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) -"cfc" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;47"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor/plating,/area/rnd/xenobiology) +"cfc" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_one_access = list(12,47)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor/plating,/area/rnd/xenobiology) "cfd" = (/obj/structure/sign/biohazard,/turf/simulated/wall,/area/rnd/xenobiology) "cfe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 9},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "cff" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/rnd/xenobiology) @@ -5694,9 +5694,9 @@ "cfz" = (/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/construction) "cfA" = (/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/construction) "cfB" = (/obj/structure/sign/pods,/turf/simulated/wall/r_wall,/area/engineering/engine_eva) -"cfC" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/obj/machinery/light{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/southleft{name = "Engineering Hardsuits"; req_access_txt = "11"},/obj/item/clothing/suit/space/void/engineering,/turf/simulated/floor,/area/engineering/engine_eva) +"cfC" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/obj/machinery/light{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/southleft{name = "Engineering Hardsuits"; req_access = list(11)},/obj/item/clothing/suit/space/void/engineering,/turf/simulated/floor,/area/engineering/engine_eva) "cfD" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/engineering/engine_eva) -"cfE" = (/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/obj/machinery/door/window/southleft{name = "Engineering Hardsuits"; req_access_txt = "11"},/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/clothing/suit/space/void/engineering,/turf/simulated/floor,/area/engineering/engine_eva) +"cfE" = (/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/obj/machinery/door/window/southleft{name = "Engineering Hardsuits"; req_access = list(11)},/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/clothing/suit/space/void/engineering,/turf/simulated/floor,/area/engineering/engine_eva) "cfF" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/engineering/foyer) "cfG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/engine_eva) "cfH" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engineering/foyer) @@ -5732,7 +5732,7 @@ "cgl" = (/obj/structure/table/rack,/obj/item/clothing/suit/radiation,/obj/item/clothing/head/radiation,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "cgm" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/cleanable/blood/oil{amount = 0},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/research_port) "cgn" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) -"cgo" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering EVA Storage"; req_access_txt = "12"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/engineering/engine_eva) +"cgo" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering EVA Storage"; req_access = list(12); req_one_access = list(11,24)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/engineering/engine_eva) "cgp" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/engine_eva) "cgq" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) "cgr" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/engine_eva) @@ -5746,19 +5746,19 @@ "cgz" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) "cgA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/rnd/xenobiology) "cgB" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) -"cgC" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering EVA Storage"; req_one_access_txt = "11;24"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_eva) +"cgC" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering EVA Storage"; req_one_access = list(11,24)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_eva) "cgD" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology) "cgE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/plating,/area/rnd/xenobiology/xenoflora) "cgF" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/smartfridge/drying_rack,/turf/simulated/floor{tag = "icon-whitegreen_v (NORTHEAST)"; icon_state = "whitegreen_v"; dir = 5},/area/rnd/xenobiology/xenoflora_storage) "cgG" = (/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) -"cgH" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) +"cgH" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access = list(47)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cgI" = (/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cgJ" = (/turf/simulated/floor{tag = "icon-whitegreen_v (SOUTHWEST)"; icon_state = "whitegreen_v"; dir = 10},/area/rnd/xenobiology/xenoflora) "cgK" = (/obj/item/weapon/stool,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cgL" = (/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cgM" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cgN" = (/turf/simulated/wall/r_wall,/area/maintenance/starboardsolar) -"cgO" = (/obj/machinery/door/airlock/engineering{name = "Aft Starboard Solar Access"; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) +"cgO" = (/obj/machinery/door/airlock/engineering{name = "Aft Starboard Solar Access"; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cgP" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/starboardsolar) "cgQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/rnd/test_area) "cgR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) @@ -5818,13 +5818,13 @@ "chT" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "chU" = (/obj/machinery/atmospherics/pipe/manifold/visible,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "chV" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) -"chW" = (/obj/machinery/door/airlock/research{name = "Xenoflora Storage"; req_access_txt = "55"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) +"chW" = (/obj/machinery/door/airlock/research{name = "Xenoflora Storage"; req_access = list(55)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "chX" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"chY" = (/obj/machinery/door/airlock/research{name = "Xenoflora Research"; req_access_txt = "55"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora) +"chY" = (/obj/machinery/door/airlock/research{name = "Xenoflora Research"; req_access = list(55)},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora) "chZ" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cia" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cib" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Engineering Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) -"cic" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering EVA Storage"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/engineering/engine_eva) +"cic" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering EVA Storage"; req_one_access = list(11,24)},/turf/simulated/floor,/area/engineering/engine_eva) "cid" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor,/area/engineering/foyer) "cie" = (/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/foyer) "cif" = (/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) @@ -5846,7 +5846,7 @@ "civ" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 6},/obj/item/weapon/storage/briefcase/inflatable{pixel_y = 3},/obj/structure/table/reinforced{icon_state = "table"},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = -3; pixel_y = 0},/turf/simulated/floor,/area/engineering/engine_eva) "ciw" = (/obj/machinery/camera{c_tag = "Engineering EVA Storage"; dir = 1; network = list("SS13")},/obj/machinery/suit_cycler/engineering,/turf/simulated/floor,/area/engineering/engine_eva) "cix" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor,/area/engineering/engine_eva) -"ciy" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/atmos,/obj/machinery/door/window/northright{name = "Atmospherics Hardsuits"; req_access_txt = "24"},/turf/simulated/floor,/area/engineering/engine_eva) +"ciy" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/atmos,/obj/machinery/door/window/northright{name = "Atmospherics Hardsuits"; req_access = list(24)},/turf/simulated/floor,/area/engineering/engine_eva) "ciz" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/maintenance/engineering) "ciA" = (/turf/simulated/wall,/area/maintenance/substation/engineering) "ciB" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/extinguisher,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/medbay) @@ -5859,18 +5859,18 @@ "ciI" = (/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "ciJ" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "ciK" = (/obj/machinery/door_control{id = "surgeryobs"; name = "Privacy Shutters"; pixel_y = 25},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/surgery) -"ciL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 1"; req_access_txt = "45"},/turf/simulated/floor,/area/medical/surgeryprep) +"ciL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 1"; req_access = list(45)},/turf/simulated/floor,/area/medical/surgeryprep) "ciM" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/surgeryprep) "ciN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/medical/surgeryprep) "ciO" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/surgeryprep) -"ciP" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 2"; req_access_txt = "45"},/turf/simulated/floor,/area/medical/surgeryprep) +"ciP" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 2"; req_access = list(45)},/turf/simulated/floor,/area/medical/surgeryprep) "ciQ" = (/obj/machinery/door_control{id = "surgeryobs2"; name = "Privacy Shutters"; pixel_y = 25},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/surgery2) "ciR" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "ciS" = (/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "ciT" = (/obj/structure/closet/secure_closet/medical2,/obj/machinery/light_switch{pixel_x = 22; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "ciU" = (/turf/simulated/wall,/area/medical/surgery2) "ciV" = (/obj/machinery/camera{c_tag = "Virology Access Fore"; dir = 4; network = list("SS13","Research")},/turf/simulated/floor,/area/medical/virologyaccess) -"ciW" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/atmos,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northleft{name = "Atmospherics Hardsuits"; req_access_txt = "24"},/turf/simulated/floor,/area/engineering/engine_eva) +"ciW" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/atmos,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northleft{name = "Atmospherics Hardsuits"; req_access = list(24)},/turf/simulated/floor,/area/engineering/engine_eva) "ciX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/medical/surgeryprep) "ciY" = (/obj/structure/toilet{dir = 1},/obj/machinery/light/small{dir = 4},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) "ciZ" = (/obj/machinery/shower{dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) @@ -5900,9 +5900,9 @@ "cjx" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cjy" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) "cjz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/locker_room) -"cjA" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Locker Room"; req_one_access_txt = "11;24"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/locker_room) +"cjA" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Locker Room"; req_one_access = list(11,24)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/locker_room) "cjB" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/construction) -"cjC" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/engineering{name = "Construction Area"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/construction) +"cjC" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/engineering{name = "Construction Area"; req_access = list(32)},/turf/simulated/floor/plating,/area/construction) "cjD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/locker_room) "cjE" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/locker_room) "cjF" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/engineering/locker_room) @@ -5919,7 +5919,7 @@ "cjQ" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2_sensor"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) "cjR" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plating,/area/maintenance/atmos_control) "cjS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/atmos_control) -"cjT" = (/obj/machinery/door/airlock/maintenance{name = "Engineering EVA Storage Maintainance"; req_access_txt = "12"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/engineering/engine_eva) +"cjT" = (/obj/machinery/door/airlock/maintenance{name = "Engineering EVA Storage Maintainance"; req_access = list(12); req_one_access = list(11,24)},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/engineering/engine_eva) "cjU" = (/obj/machinery/computer/station_alert,/turf/simulated/floor,/area/engineering/foyer) "cjV" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/solar/port) "cjW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/solar/port) @@ -5946,7 +5946,7 @@ "ckr" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) "cks" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/engineering/locker_room) "ckt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_port) -"cku" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Locker Room"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/locker_room) +"cku" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Locker Room"; req_one_access = list(11,24)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/locker_room) "ckv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/solar/starboard) "ckw" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area/solar/starboard) "ckx" = (/turf/simulated/floor/plating/airless,/area/solar/starboard) @@ -5954,10 +5954,10 @@ "ckz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering/locker_room) "ckA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/locker_room) "ckB" = (/turf/simulated/floor,/area/engineering/locker_room) -"ckC" = (/obj/machinery/door/window/northright{name = "Xenoflora Containment"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora_storage) +"ckC" = (/obj/machinery/door/window/northright{name = "Xenoflora Containment"; req_access = list(47)},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora_storage) "ckD" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer"},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) "ckE" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/rnd/xenobiology) -"ckF" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -24; pixel_y = 0; req_access_txt = "55"},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xeno_airlock_exterior"; locked = 1; name = "Xenobiology External Airlock"; req_access_txt = "55"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) +"ckF" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -24; pixel_y = 0; req_access = list(55)},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xeno_airlock_exterior"; locked = 1; name = "Xenobiology External Airlock"; req_access = list(55)},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "ckG" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/rnd/xenobiology/xenoflora) "ckH" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{tag = "icon-whitegreen (NORTHWEST)"; icon_state = "whitegreen"; dir = 9},/area/rnd/xenobiology/xenoflora) "ckI" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) @@ -5968,7 +5968,7 @@ "ckN" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 10},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "ckO" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{tag = "icon-whitegreen_v (NORTHEAST)"; icon_state = "whitegreen_v"; dir = 5},/area/rnd/xenobiology/xenoflora) "ckP" = (/obj/machinery/power/solar_control{id = "starboardsolar"; name = "Aft Starboard Solar Control"; track = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/maintenance/starboardsolar) -"ckQ" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "solar_xeno_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "10;13"},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboardsolar) +"ckQ" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "solar_xeno_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access = list(10,13)},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboardsolar) "ckR" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/starboardsolar) "ckS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/starboard) "ckT" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor,/area/engineering/locker_room) @@ -5983,22 +5983,22 @@ "clc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/atmos) "cld" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/wall/r_wall,/area/engineering/atmos) "cle" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/wall/r_wall,/area/engineering/atmos) -"clf" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) +"clf" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "clg" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/atmos_control) "clh" = (/obj/structure/sign/securearea{pixel_x = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/atmos_control) "cli" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) -"clj" = (/obj/machinery/door/window/eastright{name = "Engineering Delivery"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/turf/simulated/floor{icon_state = "delivery"},/area/engineering/foyer) +"clj" = (/obj/machinery/door/window/eastright{name = "Engineering Delivery"; req_one_access = list(11,24)},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/turf/simulated/floor{icon_state = "delivery"},/area/engineering/foyer) "clk" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; location = "Engineering"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{icon_state = "bot"},/area/engineering/foyer) "cll" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/light,/turf/simulated/floor,/area/engineering/foyer) "clm" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/engineering/foyer) "cln" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor,/area/engineering/foyer) "clo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio6"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/disposalpipe/segment,/obj/structure/cable/green,/turf/simulated/floor/plating,/area/rnd/xenobiology) -"clp" = (/obj/machinery/door/window/southright{name = "Containment Pen"; req_access_txt = "47"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio5"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/engine,/area/rnd/xenobiology) +"clp" = (/obj/machinery/door/window/southright{name = "Containment Pen"; req_access = list(47)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio5"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/engine,/area/rnd/xenobiology) "clq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio5"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/rnd/xenobiology) "clr" = (/obj/structure/table,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/storage/art) "cls" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio5"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/disposalpipe/segment,/obj/structure/cable/green,/turf/simulated/floor/plating,/area/rnd/xenobiology) "clt" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/engineering/foyer) -"clu" = (/obj/machinery/door/window/southright{name = "Containment Pen"; req_access_txt = "47"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio4"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/engine,/area/rnd/xenobiology) +"clu" = (/obj/machinery/door/window/southright{name = "Containment Pen"; req_access = list(47)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio4"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/engine,/area/rnd/xenobiology) "clv" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/computer/guestpass{pixel_y = -28},/turf/simulated/floor,/area/engineering/foyer) "clw" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/substation/engineering) "clx" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/engineering) @@ -6006,11 +6006,11 @@ "clz" = (/obj/machinery/optable,/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "clA" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "clB" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/surgery) -"clC" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 1"; req_access_txt = "45"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/medical/surgeryprep) +"clC" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 1"; req_access = list(45)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/medical/surgeryprep) "clD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/surgeryprep) "clE" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor,/area/medical/surgeryprep) "clF" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/surgeryprep) -"clG" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 2"; req_access_txt = "45"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/medical/surgeryprep) +"clG" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 2"; req_access = list(45)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/medical/surgeryprep) "clH" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/surgery2) "clI" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "clJ" = (/obj/machinery/optable,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) @@ -6025,7 +6025,7 @@ "clS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/research_port) "clT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/research_port) "clU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio4"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/rnd/xenobiology) -"clV" = (/obj/machinery/door/window/southright{name = "Containment Pen"; req_access_txt = "47"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio6"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/engine,/area/rnd/xenobiology) +"clV" = (/obj/machinery/door/window/southright{name = "Containment Pen"; req_access = list(47)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio6"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/engine,/area/rnd/xenobiology) "clW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio6"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/rnd/xenobiology) "clX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/medical/virologyaccess) "clY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; icon_state = "map_vent_in"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) @@ -6045,11 +6045,11 @@ "cmm" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora_storage) "cmn" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cmo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cmp" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_xeno_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) +"cmp" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_xeno_inner"; locked = 1; name = "Engineering External Access"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cmq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cmr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cms" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor,/area/engineering/foyer) -"cmt" = (/obj/machinery/door/window/eastright{name = "Engineering Reception Desk"; req_one_access_txt = "10;24"},/obj/machinery/light,/turf/simulated/floor,/area/engineering/foyer) +"cmt" = (/obj/machinery/door/window/eastright{name = "Engineering Reception Desk"; req_one_access = list(10,24)},/obj/machinery/light,/turf/simulated/floor,/area/engineering/foyer) "cmu" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/foyer) "cmv" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) "cmw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) @@ -6061,20 +6061,20 @@ "cmC" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/engineering/locker_room) "cmD" = (/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/engineering/locker_room) "cmE" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table,/obj/machinery/camera{c_tag = "Engineering Locker Room"; dir = 1; network = list("SS13")},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/engineering/locker_room) -"cmF" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) +"cmF" = (/obj/machinery/door/airlock/maintenance{req_one_access = list(10,24)},/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) "cmG" = (/obj/machinery/camera{c_tag = "Medbay Operating Theatre 1"; dir = 8; network = list("SS13")},/obj/machinery/button/holosign{pixel_x = 24; pixel_y = 2},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/medical/surgery) "cmH" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/surgeryprep) "cmI" = (/obj/machinery/button/holosign{pixel_x = -24; pixel_y = 2},/obj/machinery/camera{c_tag = "Medbay Operating Theatre 2"; dir = 4; network = list("SS13")},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/surgery2) -"cmJ" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/turf/simulated/floor,/area/maintenance/atmos_control) -"cmK" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor,/area/maintenance/atmos_control) +"cmJ" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access = list(12,24)},/obj/machinery/atmospherics/pipe/simple/visible/supply,/turf/simulated/floor,/area/maintenance/atmos_control) +"cmK" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access = list(12,24)},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor,/area/maintenance/atmos_control) "cmL" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/wall/r_wall,/area/engineering/atmos) "cmM" = (/turf/simulated/wall/r_wall,/area/engineering/atmos) "cmN" = (/turf/simulated/wall/r_wall,/area/engineering/atmos/monitoring) -"cmO" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance Access"; req_access_txt = "12;24"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor,/area/engineering/atmos) -"cmP" = (/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics Monitoring Room"; req_access_txt = "24"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/engineering/atmos/monitoring) +"cmO" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance Access"; req_access = list(12,24)},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor,/area/engineering/atmos) +"cmP" = (/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics Monitoring Room"; req_access = list(24)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/engineering/atmos/monitoring) "cmQ" = (/turf/simulated/wall/r_wall,/area/engineering/engineering_monitoring) "cmR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/engineering_monitoring) -"cmS" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Monitoring Room"; req_access_txt = "11"},/turf/simulated/floor,/area/engineering/engineering_monitoring) +"cmS" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Monitoring Room"; req_access = list(11)},/turf/simulated/floor,/area/engineering/engineering_monitoring) "cmT" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cmU" = (/obj/machinery/door/blast/regular{dir = 4; id = "disvent"; name = "Incinerator Vent"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "cmV" = (/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry/port) @@ -6086,9 +6086,9 @@ "cnb" = (/obj/structure/table,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/stack/medical/advanced/bruise_pack,/obj/item/weapon/retractor,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cnc" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cnd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) -"cne" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering) +"cne" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access = list(10,24)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering) "cnf" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/surgeryprep) -"cng" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/turf/simulated/floor,/area/engineering) +"cng" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access = list(10,24)},/turf/simulated/floor,/area/engineering) "cnh" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/engineering/workshop) "cni" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "cnj" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) @@ -6104,16 +6104,16 @@ "cnt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/xenobiology/xenoflora) "cnu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/xenobiology/xenoflora) "cnv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cnw" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "solar_xeno_pump"; tag_exterior_door = "solar_xeno_outer"; frequency = 1379; id_tag = "solar_xeno_airlock"; tag_interior_door = "solar_xeno_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "solar_xeno_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_xeno_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "solar_xeno_pump"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) +"cnw" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "solar_xeno_pump"; tag_exterior_door = "solar_xeno_outer"; frequency = 1379; id_tag = "solar_xeno_airlock"; tag_interior_door = "solar_xeno_inner"; pixel_x = 25; req_access = list(13); tag_chamber_sensor = "solar_xeno_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_xeno_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "solar_xeno_pump"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cnx" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/structure/lattice,/turf/space,/area/space) -"cny" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/turf/simulated/floor,/area/engineering) +"cny" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access = list(10,24)},/turf/simulated/floor,/area/engineering) "cnz" = (/turf/simulated/wall/r_wall,/area/engineering/workshop) "cnA" = (/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/construction) "cnB" = (/obj/item/device/flashlight,/turf/simulated/floor,/area/construction) "cnC" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/construction) "cnD" = (/turf/simulated/wall/r_wall,/area/construction) -"cnE" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Workshop"; req_access_txt = "0"; req_one_access_txt = "11;24"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) -"cnF" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Workshop"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/engineering/workshop) +"cnE" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Workshop"; req_one_access = list(11,24)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) +"cnF" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Workshop"; req_one_access = list(11,24)},/turf/simulated/floor,/area/engineering/workshop) "cnG" = (/turf/simulated/wall/r_wall,/area/engineering/locker_room) "cnH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/engineering/atmos) "cnI" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) @@ -6147,13 +6147,13 @@ "cok" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "col" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/sign/deathsposal{pixel_x = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "com" = (/turf/simulated/wall,/area/rnd/xenobiology) -"con" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = 8; pixel_y = -28; req_access_txt = "55"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"},/area/rnd/xenobiology) +"con" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = 8; pixel_y = -28; req_access = list(55)},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"},/area/rnd/xenobiology) "coo" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{tag = "icon-whitegreen_v (NORTHEAST)"; icon_state = "whitegreen_v"; dir = 5},/area/rnd/xenobiology/xenoflora) "cop" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "coq" = (/turf/simulated/floor{tag = "icon-whitegreen (NORTHWEST)"; icon_state = "whitegreen"; dir = 9},/area/rnd/xenobiology/xenoflora) -"cor" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio2"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/engine,/area/rnd/xenobiology) +"cor" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio2"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access = list(55)},/turf/simulated/floor/engine,/area/rnd/xenobiology) "cos" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cot" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_xeno_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) +"cot" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_xeno_outer"; locked = 1; name = "Engineering External Access"; req_access = list(10,13)},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cou" = (/obj/machinery/meter{frequency = 1443; id = "dloop_atm_meter"; name = "Distribution Loop"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/visible/supply{dir = 8},/turf/simulated/floor,/area/engineering/atmos) "cov" = (/obj/machinery/meter{frequency = 1443; id = "wloop_atm_meter"; name = "Waste Loop"},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor,/area/engineering/atmos) "cow" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/meter,/obj/machinery/firealarm{pixel_y = 24},/turf/simulated/floor,/area/engineering/atmos) @@ -6189,10 +6189,10 @@ "cpa" = (/obj/machinery/atmospherics/valve/digital/open{name = "Oxygen Outlet Valve"},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/engineering/atmos) "cpb" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "o2_in"; name = "Oxygen Supply Control"; output_tag = "o2_out"; sensors = list("o2_sensor" = "Tank")},/obj/machinery/camera{c_tag = "Atmospherics North West"; dir = 2},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engineering/atmos) "cpc" = (/obj/machinery/status_display,/turf/simulated/wall,/area/medical/surgery) -"cpd" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 1 Storage"; req_access_txt = "45"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) +"cpd" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 1 Storage"; req_access = list(45)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cpe" = (/obj/machinery/light{dir = 8},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/structure/closet/wardrobe/medic_white,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/surgeryprep) "cpf" = (/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/structure/table,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/camera{c_tag = "Medbay Surgery Prep"; dir = 8; network = list("SS13")},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/surgeryprep) -"cpg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 2 Storage"; req_access_txt = "45"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) +"cpg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 2 Storage"; req_access = list(45)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "cph" = (/obj/machinery/status_display,/turf/simulated/wall,/area/medical/surgery2) "cpi" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/medbay) "cpj" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/engineering/atmos) @@ -6200,10 +6200,10 @@ "cpl" = (/turf/simulated/floor/engine,/area/rnd/xenobiology) "cpm" = (/mob/living/carbon/slime,/turf/simulated/floor/engine,/area/rnd/xenobiology) "cpn" = (/obj/machinery/atmospherics/valve/digital/open{name = "Nitrogen Outlet Valve"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/engineering/atmos) -"cpo" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) +"cpo" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access = list(55)},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) "cpp" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cpq" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"cpr" = (/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xeno_airlock_interior"; locked = 1; name = "Xenobiology Internal Airlock"; req_access_txt = "55"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) +"cpr" = (/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xeno_airlock_interior"; locked = 1; name = "Xenobiology Internal Airlock"; req_access = list(55)},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cps" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2_in"; name = "Nitrogen Supply Control"; output_tag = "n2_out"; sensors = list("n2_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/engineering/atmos) "cpt" = (/turf/simulated/floor,/area/engineering/atmos) "cpu" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor,/area/engineering/atmos) @@ -6256,7 +6256,7 @@ "cqp" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery2) "cqq" = (/obj/structure/closet/crate/freezer,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery2) "cqr" = (/obj/effect/decal/cleanable/blood/oil{amount = 0},/turf/simulated/floor/plating,/area/maintenance/medbay) -"cqs" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light,/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "virologyquar"; name = "Virology Emergency Lockdown Control"; pixel_x = 0; pixel_y = -28; req_access_txt = "5"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/medical/virologyaccess) +"cqs" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light,/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "virologyquar"; name = "Virology Emergency Lockdown Control"; pixel_x = 0; pixel_y = -28; req_access = list(5)},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/medical/virologyaccess) "cqt" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cqu" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "greencorner"},/area/medical/virologyaccess) "cqv" = (/turf/simulated/wall/r_wall,/area/medical/virology) @@ -6264,7 +6264,7 @@ "cqx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) "cqy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) "cqz" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor,/area/engineering/atmos) -"cqA" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio3"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/rnd/xenobiology) +"cqA" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio3"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/rnd/xenobiology) "cqB" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cqC" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cqD" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/camera{c_tag = "Xenobiology Module North"; dir = 2; network = list("SS13","Research"); pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) @@ -6278,7 +6278,7 @@ "cqL" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/structure/lattice,/turf/space,/area/space) "cqM" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor,/area/engineering/atmos) "cqN" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/space,/area/space) -"cqO" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "centcom_shuttle_dock_airlock"; name = "interior access button"; pixel_x = -30; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor,/area/hallway/secondary/entry/aft) +"cqO" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "centcom_shuttle_dock_airlock"; name = "interior access button"; pixel_x = -30; pixel_y = 25; req_one_access = list(13)},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor,/area/hallway/secondary/entry/aft) "cqP" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor,/area/engineering/atmos) "cqQ" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Atmospheric Technician"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor,/area/engineering/atmos/monitoring) "cqR" = (/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("n2_sensor" = "Nitrogen", "o2_sensor" = "Oxygen", "co2_sensor" = "Carbon Dioxide", "tox_sensor" = "Toxins", "n2o_sensor" = "Nitrous Oxide", "waste_sensor" = "Gas Mix Tank")},/turf/simulated/floor,/area/engineering/atmos/monitoring) @@ -6311,11 +6311,11 @@ "crs" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) "crt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) "cru" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) -"crv" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre 1 Storage"; req_access_txt = "45"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgeryprep) +"crv" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre 1 Storage"; req_access = list(45)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgeryprep) "crw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/medical/surgeryprep) "crx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/surgeryprep) "cry" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/medical/surgeryprep) -"crz" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre 2 Storage"; req_access_txt = "45"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgeryprep) +"crz" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre 2 Storage"; req_access = list(45)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgeryprep) "crA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery2) "crB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery2) "crC" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery2) @@ -6371,7 +6371,7 @@ "csA" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) "csB" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) "csC" = (/obj/structure/closet/secure_closet/medical2,/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) -"csD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Pre-Op Prep Room Maintenance Access"; req_access_txt = "45"},/turf/simulated/floor/plating,/area/medical/surgeryprep) +"csD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Pre-Op Prep Room Maintenance Access"; req_access = list(45)},/turf/simulated/floor/plating,/area/medical/surgeryprep) "csE" = (/obj/structure/closet/secure_closet/medical2,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery2) "csF" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery2) "csG" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery2) @@ -6381,21 +6381,21 @@ "csK" = (/obj/machinery/light,/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "csL" = (/obj/structure/closet/wardrobe/virology_white,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/camera/xray{c_tag = "Virology Access Aft"; dir = 2; network = list("SS13","Medical")},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/medical/virology) "csM" = (/obj/machinery/computer/security/engineering{network = list("Engineering","Engineering Outpost","Power Alarms","Atmosphere Alarms","Fire Alarms","Atmospherics")},/turf/simulated/floor,/area/engineering/atmos/monitoring) -"csN" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access_txt = "39"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/medical/virologyaccess) +"csN" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access = list(39)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/medical/virologyaccess) "csO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/plating,/area/rnd/xenobiology/xenoflora) "csP" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "csQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/atmos/monitoring) "csR" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) "csS" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "csT" = (/obj/structure/disposalpipe/segment,/obj/machinery/pipedispenser/disposal,/obj/structure/window/reinforced,/turf/simulated/floor,/area/engineering/atmos) -"csU" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics Monitoring Room"; req_access_txt = "24"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/atmos/monitoring) +"csU" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics Monitoring Room"; req_access = list(24)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/atmos/monitoring) "csV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/atmos/monitoring) -"csW" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Monitoring Room"; req_access_txt = "11"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engineering_monitoring) +"csW" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Monitoring Room"; req_access = list(11)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engineering_monitoring) "csX" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering) "csY" = (/obj/machinery/camera{c_tag = "Engineering Hallway North"; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/engineering) "csZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/workshop) "cta" = (/obj/structure/window/reinforced{dir = 1},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/workshop) -"ctb" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio1"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/engine,/area/rnd/xenobiology) +"ctb" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio1"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access = list(55)},/turf/simulated/floor/engine,/area/rnd/xenobiology) "ctc" = (/obj/structure/window/reinforced{dir = 1},/obj/item/stack/rods{amount = 50},/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/cell/high,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/workshop) "ctd" = (/obj/structure/window/reinforced{dir = 1},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/workshop) "cte" = (/obj/structure/window/reinforced{dir = 1},/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/sheet/mineral/plastic{amount = 10},/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/workshop) @@ -6413,15 +6413,15 @@ "ctq" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "surgeryobs"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgeryobs) "ctr" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "surgeryobs"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgeryobs) "cts" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"ctt" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics"; req_access_txt = "24"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/atmos) +"ctt" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics"; req_access = list(24)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/atmos) "ctu" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering) "ctv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/engineering) "ctw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/engineering) -"ctx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Operating Theatre 1 Maintenance Access"; req_access_txt = "45"},/turf/simulated/floor/plating,/area/medical/surgery) +"ctx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Operating Theatre 1 Maintenance Access"; req_access = list(45)},/turf/simulated/floor/plating,/area/medical/surgery) "cty" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/virologyaccess) "ctz" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/medbay) "ctA" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/cigbutt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/medbay) -"ctB" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Operating Theatre 2 Maintenance Access"; req_access_txt = "45"},/turf/simulated/floor/plating,/area/medical/surgery2) +"ctB" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Operating Theatre 2 Maintenance Access"; req_access = list(45)},/turf/simulated/floor/plating,/area/medical/surgery2) "ctC" = (/obj/machinery/shower{icon_state = "shower"; dir = 4},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/medical/virology) "ctD" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "ctE" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/closet/l3closet/virology,/obj/item/clothing/mask/gas,/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/medical/virology) @@ -6450,14 +6450,14 @@ "cub" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "surgeryobs"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgery) "cuc" = (/obj/machinery/newscaster{pixel_y = 30},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering) "cud" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering) -"cue" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Workshop"; req_access_txt = "0"; req_one_access_txt = "11;24"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/workshop) +"cue" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Workshop"; req_one_access = list(11,24)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/workshop) "cuf" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 2; sortType = "Engineering"; name = "Engineering"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering) "cug" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/workshop) "cuh" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engineering/workshop) "cui" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/engineering/workshop) "cuj" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engineering/workshop) "cuk" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/storage) -"cul" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering Hard Storage"; req_access_txt = "11"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/storage) +"cul" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering Hard Storage"; req_access = list(11)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/storage) "cum" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/engineering/storage) "cun" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/storage) "cuo" = (/obj/machinery/power/emitter,/turf/simulated/floor/plating,/area/engineering/storage) @@ -6469,21 +6469,21 @@ "cuu" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/engineering/atmos) "cuv" = (/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/sortjunction/flipped{dir = 8; sortType = "Drone Fabrication"; name = "Drone Fabrication"},/turf/simulated/floor,/area/engineering/atmos) "cuw" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engineering) -"cux" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics"; req_access_txt = "24"},/turf/simulated/floor,/area/engineering/atmos) +"cux" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics"; req_access = list(24)},/turf/simulated/floor,/area/engineering/atmos) "cuy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/turf/simulated/floor,/area/engineering) "cuz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor,/area/engineering) "cuA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor,/area/engineering) "cuB" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering) "cuC" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/maintenance/engineering) "cuD" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engineering) -"cuE" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 0; pixel_y = 32},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Engineering\\Medbay Maintenance"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering) +"cuE" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 0; pixel_y = 32},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Engineering\\Medbay Maintenance"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering) "cuF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/medbay) "cuG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/sign/fire{pixel_y = -32},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/maintenance/medbay) "cuH" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/medbay) "cuI" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/medbay) "cuJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/medbay) "cuK" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/medbay) -"cuL" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = 8; pixel_y = -28; req_access_txt = "39"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"},/area/medical/virology) +"cuL" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = 8; pixel_y = -28; req_access = list(39)},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"},/area/medical/virology) "cuM" = (/obj/machinery/atmospherics/pipe/manifold/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cuN" = (/obj/structure/closet/l3closet/virology,/obj/item/clothing/mask/gas,/turf/simulated/floor{dir = 6; icon_state = "warnwhite"},/area/medical/virology) "cuO" = (/obj/structure/table,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/weapon/folder/white,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -6492,11 +6492,11 @@ "cuR" = (/obj/structure/bed/chair/office/dark{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cuS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/virology) "cuT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/medical/virology) -"cuU" = (/obj/machinery/door/window/southright{dir = 1; name = "Virology Isolation Room One"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) +"cuU" = (/obj/machinery/door/window/southright{dir = 1; name = "Virology Isolation Room One"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "cuV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/virology) "cuW" = (/obj/structure/extinguisher_cabinet,/turf/simulated/wall/r_wall,/area/medical/virology) "cuX" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cuY" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio2"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) +"cuY" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio2"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) "cuZ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cva" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cvb" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/item/clothing/gloves/latex,/obj/item/device/slime_scanner,/obj/item/device/slime_scanner,/obj/item/weapon/hand_labeler,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) @@ -6509,15 +6509,15 @@ "cvi" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engineering/workshop) "cvj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/workshop) "cvk" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/engineering/workshop) -"cvl" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio3"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/engine,/area/rnd/xenobiology) +"cvl" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio3"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access = list(55)},/turf/simulated/floor/engine,/area/rnd/xenobiology) "cvm" = (/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "virologyquar"; name = "Virology Emergency Quarantine Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"},/area/medical/virologyaccess) "cvn" = (/obj/structure/closet/l3closet/scientist,/turf/simulated/floor{dir = 6; icon_state = "warnwhite"},/area/rnd/xenobiology) -"cvo" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering Hard Storage"; req_access_txt = "11"},/turf/simulated/floor,/area/engineering/storage) +"cvo" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering Hard Storage"; req_access = list(11)},/turf/simulated/floor,/area/engineering/storage) "cvp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/storage) "cvq" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor,/area/engineering/atmos) "cvr" = (/obj/machinery/atmospherics/pipe/cap/visible{color = "#ffcc00"},/turf/simulated/floor,/area/engineering/atmos) "cvs" = (/obj/machinery/power/apc/super{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/atmos) -"cvt" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_xeno_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/starboard) +"cvt" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_xeno_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access = list(10,13)},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cvu" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/atmos) "cvv" = (/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) "cvw" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/engineering) @@ -6531,14 +6531,14 @@ "cvE" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plating,/area/engineering/storage) "cvF" = (/obj/machinery/shieldgen,/turf/simulated/floor/plating,/area/engineering/storage) "cvG" = (/obj/machinery/shieldwallgen,/turf/simulated/floor/plating,/area/engineering/storage) -"cvH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -7; pixel_y = -32; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 7; pixel_y = -32},/turf/simulated/floor,/area/rnd/xenobiology) +"cvH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -7; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 7; pixel_y = -32},/turf/simulated/floor,/area/rnd/xenobiology) "cvI" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) "cvJ" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/turf/simulated/floor,/area/engineering/atmos) "cvK" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/engineering/atmos) "cvL" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow,/turf/simulated/floor,/area/engineering/atmos) "cvM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/engineering) "cvN" = (/turf/simulated/wall,/area/maintenance/incinerator) -"cvO" = (/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; req_access_txt = null; req_one_access_txt = "5;12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"cvO" = (/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; ; req_one_access = list(5,12)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/incinerator) "cvP" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/turf/simulated/floor/plating,/area/maintenance/medbay) "cvQ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cvR" = (/obj/structure/table,/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Virology Port"; dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/masks,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -6549,8 +6549,8 @@ "cvW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/plating/airless,/area/space) "cvX" = (/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "virologyquar"; name = "Virology Emergency Quarantine Blast Doors"; opacity = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "delivery"},/area/medical/virologyaccess) "cvY" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "green"},/area/medical/virologyaccess) -"cvZ" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virology_airlock_exterior"; locked = 1; name = "Virology Exterior Airlock"; req_access_txt = "39"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = -24; pixel_y = 0; req_access_txt = "39"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cwa" = (/obj/machinery/door/window/southright{dir = 4; name = "Primate Pen"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) +"cvZ" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virology_airlock_exterior"; locked = 1; name = "Virology Exterior Airlock"; req_access = list(39)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = -24; pixel_y = 0; req_access = list(39)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cwa" = (/obj/machinery/door/window/southright{dir = 4; name = "Primate Pen"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "cwb" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cwc" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cwd" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) @@ -6569,7 +6569,7 @@ "cwq" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/engineering/atmos) "cwr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless,/area/solar/port) "cws" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/engineering/atmos/storage) -"cwt" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/turf/simulated/floor,/area/engineering/atmos/storage) +"cwt" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access = list(12,24)},/turf/simulated/floor,/area/engineering/atmos/storage) "cwu" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor,/area/engineering/atmos/storage) "cwv" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/portable_atmospherics/powered/pump,/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/engineering/atmos/storage) "cww" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold4w/hidden/yellow,/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) @@ -6601,7 +6601,7 @@ "cwW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cwX" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cwY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cwZ" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virology_airlock_interior"; locked = 1; name = "Virology Interior Airlock"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cwZ" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virology_airlock_interior"; locked = 1; name = "Virology Interior Airlock"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cxa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/purple{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cxb" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/purple{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/medical/virology) "cxc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warnwhitecorner"},/area/medical/virology) @@ -6629,7 +6629,7 @@ "cxy" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/port) "cxz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/solar/port) "cxA" = (/turf/simulated/floor,/area/engineering/atmos/storage) -"cxB" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/turf/simulated/floor,/area/engineering/atmos/storage) +"cxB" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access = list(12,24)},/turf/simulated/floor,/area/engineering/atmos/storage) "cxC" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor,/area/engineering/atmos/storage) "cxD" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/engineering) "cxE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{tag = "icon-map (WEST)"; icon_state = "map"; dir = 8},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) @@ -6645,16 +6645,16 @@ "cxO" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cxP" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cxQ" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/maintenance/medbay) -"cxR" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "virology_airlock"; name = "interior access button"; pixel_x = -20; pixel_y = -20; req_access_txt = "10;13"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/medbay) +"cxR" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "virology_airlock"; name = "interior access button"; pixel_x = -20; pixel_y = -20; req_access = list(10,13)},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/medbay) "cxS" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/medical/virology) "cxT" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "green"},/area/medical/virology) "cxU" = (/obj/machinery/embedded_controller/radio/airlock/access_controller{id_tag = "virologyq_airlock_control"; name = "Virology Quarantine Access Console"; pixel_x = -8; pixel_y = -22; tag_exterior_door = "virologyq_airlock_exterior"; tag_interior_door = "virologyq_airlock_interior"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/medical/virology) -"cxV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Virology Laboratory"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/virology) +"cxV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Virology Laboratory"; req_access = list(39)},/turf/simulated/floor{icon_state = "delivery"},/area/medical/virology) "cxW" = (/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/virology) "cxX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cxY" = (/obj/structure/table,/obj/machinery/computer/med_data/laptop,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cxZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/virology) -"cya" = (/obj/machinery/door/window/southright{name = "Virology Isolation Room Two"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"cya" = (/obj/machinery/door/window/southright{name = "Virology Isolation Room Two"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "cyb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/purple,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"},/area/medical/virology) "cyc" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/purple,/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{dir = 1; icon_state = "green"},/area/medical/virology) "cyd" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area/solar/port) @@ -6666,10 +6666,10 @@ "cyj" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/engineering/atmos) "cyk" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 9},/turf/simulated/floor,/area/engineering/atmos) "cyl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/atmos) -"cym" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance Access"; req_access_txt = "12;24"},/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/atmos/storage) +"cym" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance Access"; req_access = list(12,24)},/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/atmos/storage) "cyn" = (/obj/machinery/space_heater,/turf/simulated/floor,/area/engineering/atmos/storage) "cyo" = (/obj/machinery/space_heater,/obj/machinery/light/small,/turf/simulated/floor,/area/engineering/atmos/storage) -"cyp" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; layer = 3.3; master_tag = "robotics_solar_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/solar/port) +"cyp" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; layer = 3.3; master_tag = "robotics_solar_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access = list(13)},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/solar/port) "cyq" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) "cyr" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/weapon/storage/toolbox/electrical,/turf/simulated/floor,/area/engineering/workshop) "cys" = (/obj/structure/table,/obj/item/device/floor_painter,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/t_scanner,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor,/area/engineering/workshop) @@ -6697,21 +6697,21 @@ "cyO" = (/mob/living/simple_animal/mouse,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cyP" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/structure/sign/deathsposal{pixel_x = 32},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cyQ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/maintenance/medbay) -"cyR" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "virology_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/medbay) -"cyS" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virologyq_airlock_interior"; locked = 1; name = "Virology Quarantine Airlock"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cyR" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "virology_inner"; locked = 1; name = "Engineering External Access"; req_access = list(13)},/turf/simulated/floor/plating,/area/maintenance/medbay) +"cyS" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virologyq_airlock_interior"; locked = 1; name = "Virology Quarantine Airlock"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cyT" = (/obj/structure/table,/obj/item/device/antibody_scanner,/obj/machinery/requests_console{department = "Virology"; name = "Virology Requests Console"; pixel_x = -32},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cyU" = (/obj/structure/bed/chair/office/dark,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cyV" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 8},/obj/structure/disposalpipe/segment,/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 7; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Virology Emergency Phone"; pixel_x = -6; pixel_y = 8},/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cyW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/virology) -"cyX" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Virology Laboratory"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/medical/virology) +"cyX" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Virology Laboratory"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/medical/virology) "cyY" = (/obj/item/roller,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cyZ" = (/obj/machinery/camera{c_tag = "Xenobiology Module South"; dir = 4; network = list("SS13","Research"); pixel_x = 0},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio1"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) +"cyZ" = (/obj/machinery/camera{c_tag = "Xenobiology Module South"; dir = 4; network = list("SS13","Research"); pixel_x = 0},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio1"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) "cza" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "czb" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "czc" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "czd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/xenobiology) -"cze" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering) -"czf" = (/obj/machinery/embedded_controller/radio/airlock/access_controller{tag_exterior_door = "incinerator_airlock_exterior"; id_tag = "incinerator_access_control"; tag_interior_door = "incinerator_airlock_interior"; name = "Incinerator Access Console"; pixel_x = -6; pixel_y = -26; req_access_txt = "12"},/obj/machinery/button/ignition{id = "Incinerator"; pixel_x = 6; pixel_y = -24},/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (WEST)"},/area/maintenance/incinerator) +"cze" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access = list(10,24)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering) +"czf" = (/obj/machinery/embedded_controller/radio/airlock/access_controller{tag_exterior_door = "incinerator_airlock_exterior"; id_tag = "incinerator_access_control"; tag_interior_door = "incinerator_airlock_interior"; name = "Incinerator Access Console"; pixel_x = -6; pixel_y = -26; req_access = list(12)},/obj/machinery/button/ignition{id = "Incinerator"; pixel_x = 6; pixel_y = -24},/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (WEST)"},/area/maintenance/incinerator) "czg" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/atmos) "czh" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/engineering/atmos) "czi" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area/solar/port) @@ -6725,7 +6725,7 @@ "czq" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/atmos/storage) "czr" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Atmospherics Substation"; dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/atmos/storage) "czs" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering) -"czt" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering) +"czt" = (/obj/machinery/door/airlock/maintenance{req_one_access = list(10,24)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering) "czu" = (/obj/machinery/light{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/engineering) "czv" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 25},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering) "czw" = (/obj/machinery/alarm{pixel_y = 22},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering) @@ -6736,7 +6736,7 @@ "czB" = (/obj/machinery/light{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/engineering) "czC" = (/obj/structure/cable/yellow,/turf/simulated/floor/plating/airless,/area/solar/port) "czD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/engineering) -"czE" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "10;24"},/turf/simulated/floor/plating,/area/engineering) +"czE" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_one_access = list(10,24)},/turf/simulated/floor/plating,/area/engineering) "czF" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 10; icon_state = "yellow"},/area/engineering/atmos) "czG" = (/obj/machinery/light,/turf/simulated/floor,/area/engineering/atmos) "czH" = (/obj/machinery/atmospherics/valve/digital{name = "CO2 Outlet Valve"},/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/engineering/atmos) @@ -6744,7 +6744,7 @@ "czJ" = (/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "czK" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "czL" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/camera/autoname,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) -"czM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) +"czM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_one_access = list(10,24)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "czN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/engineering) "czO" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/engineering) "czP" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) @@ -6753,9 +6753,9 @@ "czS" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/incinerator) "czT" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/incinerator) "czU" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/medbay) -"czV" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "virology_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "virology_pump"; tag_exterior_door = "virology_outer"; frequency = 1379; id_tag = "virology_airlock"; tag_interior_door = "virology_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "virology_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "virology_pump"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/maintenance/medbay) +"czV" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "virology_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "virology_pump"; tag_exterior_door = "virology_outer"; frequency = 1379; id_tag = "virology_airlock"; tag_interior_door = "virology_inner"; pixel_x = 25; req_access = list(13); tag_chamber_sensor = "virology_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "virology_pump"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/maintenance/medbay) "czW" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"czX" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "virologyq_airlock_control"; name = "Virology Quarantine Access Button"; pixel_x = -8; pixel_y = 28; req_access_txt = "39"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"czX" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "virologyq_airlock_control"; name = "Virology Quarantine Access Button"; pixel_x = -8; pixel_y = 28; req_access = list(39)},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "czY" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "czZ" = (/obj/machinery/computer/diseasesplicer,/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cAa" = (/obj/machinery/disease2/diseaseanalyser,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -6791,7 +6791,7 @@ "cAE" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/atmos) "cAF" = (/turf/simulated/wall/r_wall,/area/engineering/drone_fabrication) "cAG" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; layer = 3.1; master_tag = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = 10; pixel_y = -22},/obj/structure/sign/fire{pixel_x = -32; pixel_y = 0},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor/plating,/area/maintenance/incinerator) -"cAH" = (/obj/machinery/door/airlock/maintenance{name = "Drone Fabrication"; req_one_access_txt = "10;24"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cAH" = (/obj/machinery/door/airlock/maintenance{name = "Drone Fabrication"; req_one_access = list(10,24)},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "cAI" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/engineering) "cAJ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering) "cAK" = (/obj/machinery/camera{c_tag = "Engineering Hallway South West"; dir = 1; pixel_x = 22},/turf/simulated/floor,/area/engineering) @@ -6804,7 +6804,7 @@ "cAR" = (/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cAS" = (/obj/machinery/camera{c_tag = "Engineering Hallway South East"; dir = 1},/turf/simulated/floor,/area/engineering) "cAT" = (/turf/simulated/floor{dir = 2; icon_state = "floorgrimecaution"},/area/maintenance/incinerator) -"cAU" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/meter,/obj/machinery/door_control{id = "disvent"; name = "Incinerator Vent Control"; pixel_x = 0; pixel_y = -24; req_access_txt = null; req_one_access_txt = "12;5"},/turf/simulated/floor{dir = 1; icon_state = "warningcorner"; tag = "icon-warningcorner (WEST)"},/area/maintenance/incinerator) +"cAU" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/meter,/obj/machinery/door_control{id = "disvent"; name = "Incinerator Vent Control"; pixel_x = 0; pixel_y = -24; ; req_one_access = list(12,5)},/turf/simulated/floor{dir = 1; icon_state = "warningcorner"; tag = "icon-warningcorner (WEST)"},/area/maintenance/incinerator) "cAV" = (/turf/simulated/floor/plating,/area/maintenance/incinerator) "cAW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/incinerator) "cAX" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "virology_pump"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/maintenance/medbay) @@ -6820,15 +6820,15 @@ "cBh" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/virology) "cBi" = (/obj/structure/table,/obj/item/weapon/storage/lockbox/vials,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cBj" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{dir = 3; icon_state = "whitered"},/area/medical/virology) -"cBk" = (/obj/structure/table/reinforced,/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; pixel_x = 0; pixel_y = -3; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Reactor Blast Doors"; pixel_x = -6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine emitter."; id = "EngineEmitter"; name = "Engine Emitter"; normaldoorcontrol = 2; pixel_x = 6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_monitoring) +"cBk" = (/obj/structure/table/reinforced,/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; pixel_x = 0; pixel_y = -3; req_access = list(10)},/obj/machinery/door_control{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Reactor Blast Doors"; pixel_x = -6; pixel_y = 7; req_access = list(10)},/obj/machinery/door_control{desc = "A remote control-switch for the engine emitter."; id = "EngineEmitter"; name = "Engine Emitter"; normaldoorcontrol = 2; pixel_x = 6; pixel_y = 7; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_monitoring) "cBl" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology) -"cBm" = (/obj/machinery/door/window/southright{dir = 1; name = "Containment Pen"; req_access_txt = "47"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology) -"cBn" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio4"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology) +"cBm" = (/obj/machinery/door/window/southright{dir = 1; name = "Containment Pen"; req_access = list(47)},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology) +"cBn" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio4"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology) "cBo" = (/obj/machinery/light,/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology) "cBp" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology) -"cBq" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio5"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology) +"cBq" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio5"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology) "cBr" = (/obj/machinery/light,/obj/structure/closet,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology) -"cBs" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio6"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/machinery/door_control{desc = "A remote control-switch for a door to space."; id = "xenobioout6"; name = "Containment Release Switch"; pixel_x = 24; pixel_y = 4; req_access = "55"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/rnd/xenobiology) +"cBs" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio6"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/machinery/door_control{desc = "A remote control-switch for a door to space."; id = "xenobioout6"; name = "Containment Release Switch"; pixel_x = 24; pixel_y = 4; req_access = list(55)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/rnd/xenobiology) "cBt" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering) "cBu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/engineering) "cBv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/engineering) @@ -6856,7 +6856,7 @@ "cBR" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "cBS" = (/turf/simulated/wall/r_wall,/area/engineering/engine_smes) "cBT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_smes) -"cBU" = (/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access_txt = "11"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_smes) +"cBU" = (/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access = list(11)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_smes) "cBV" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cBW" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cBX" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) @@ -6864,10 +6864,10 @@ "cBZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/engineering) "cCa" = (/turf/simulated/wall/r_wall,/area/maintenance/incinerator) "cCb" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall/r_wall,/area/maintenance/incinerator) -"cCc" = (/obj/machinery/door/airlock/glass{autoclose = 0; frequency = 1379; heat_proof = 1; icon_state = "door_locked"; id_tag = "incinerator_airlock_interior"; locked = 1; name = "Mixing Room Interior Airlock"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"cCc" = (/obj/machinery/door/airlock/glass{autoclose = 0; frequency = 1379; heat_proof = 1; icon_state = "door_locked"; id_tag = "incinerator_airlock_interior"; locked = 1; name = "Mixing Room Interior Airlock"; req_access = list(12)},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cCd" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/incinerator) -"cCe" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "virology_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/maintenance/medbay) -"cCf" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virologyq_airlock_exterior"; locked = 1; name = "Virology Quarantine Airlock"; req_access_txt = "39"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "virologyq_airlock_control"; name = "Virology Quarantine Access Button"; pixel_x = -24; pixel_y = 0; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cCe" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "virology_outer"; locked = 1; name = "Engineering External Access"; req_access = list(10,13)},/turf/simulated/floor/plating,/area/maintenance/medbay) +"cCf" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virologyq_airlock_exterior"; locked = 1; name = "Virology Quarantine Airlock"; req_access = list(39)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "virologyq_airlock_control"; name = "Virology Quarantine Access Button"; pixel_x = -24; pixel_y = 0; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cCg" = (/obj/structure/table,/obj/item/weapon/storage/box/cups,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cCh" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cCj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) @@ -6879,11 +6879,11 @@ "cCp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/engine_monitoring) "cCq" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/computer/reconstitutor/animal,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology) "cCr" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_monitoring) -"cCs" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engine Monitoring Room"; req_access_txt = "11"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_monitoring) +"cCs" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engine Monitoring Room"; req_access = list(11)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_monitoring) "cCt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/engine_monitoring) "cCu" = (/turf/simulated/wall/r_wall,/area/engineering/engine_airlock) "cCv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_airlock) -"cCw" = (/obj/machinery/door/airlock/maintenance_hatch{icon_state = "door_closed"; locked = 0; name = "Engine Access"; req_access_txt = "0"; req_one_access_txt = "11;24"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_airlock) +"cCw" = (/obj/machinery/door/airlock/maintenance_hatch{icon_state = "door_closed"; locked = 0; name = "Engine Access"; req_one_access = list(11,24)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_airlock) "cCx" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "cCy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "cCz" = (/obj/machinery/computer/drone_control,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) @@ -6911,7 +6911,7 @@ "cCV" = (/obj/structure/closet/radiation,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/machinery/camera{c_tag = "Engine Room Airlock"; dir = 2; network = list("SS13","Supermatter")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/engineering/engine_airlock) "cCW" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/space,/area/space) "cCX" = (/turf/simulated/floor/plating/airless,/area/maintenance/medbay) -"cCY" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "virology_airlock"; name = "exterior access button"; pixel_x = 20; pixel_y = 20; req_access_txt = "13"},/turf/simulated/floor/plating/airless,/area/maintenance/medbay) +"cCY" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "virology_airlock"; name = "exterior access button"; pixel_x = 20; pixel_y = 20; req_access = list(13)},/turf/simulated/floor/plating/airless,/area/maintenance/medbay) "cCZ" = (/obj/structure/bed,/obj/item/weapon/bedsheet/green,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cDa" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Virology Break/Access"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cDb" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -6939,7 +6939,7 @@ "cDx" = (/turf/simulated/floor,/area/engineering/engine_monitoring) "cDy" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/engine_monitoring) "cDz" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/engine_monitoring) -"cDA" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/obj/machinery/airlock_sensor/airlock_exterior{id_tag = "eng_al_ext_snsr"; layer = 3.3; master_tag = "engine_room_airlock"; pixel_y = -22; req_access_txt = "10"},/obj/structure/table,/obj/item/weapon/book/manual/supermatter_engine,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engineering/engine_airlock) +"cDA" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/obj/machinery/airlock_sensor/airlock_exterior{id_tag = "eng_al_ext_snsr"; layer = 3.3; master_tag = "engine_room_airlock"; pixel_y = -22; req_access = list(10)},/obj/structure/table,/obj/item/weapon/book/manual/supermatter_engine,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engineering/engine_airlock) "cDB" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering/engine_airlock) "cDC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/engineering/engine_airlock) "cDD" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "co2_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) @@ -6953,13 +6953,13 @@ "cDL" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2o_sensor"},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) "cDM" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "waste_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) "cDN" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) -"cDO" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_dock_inner"; locked = 1; name = "Engineering Dock Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) +"cDO" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_dock_inner"; locked = 1; name = "Engineering Dock Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cDP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cDQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cDR" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating,/area/maintenance/engineering) "cDS" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/hidden/cyan,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/maintenance/engineering) "cDT" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/engineering) -"cDU" = (/obj/machinery/door/airlock/glass{autoclose = 0; frequency = 1379; heat_proof = 1; icon_state = "door_locked"; id_tag = "incinerator_airlock_exterior"; locked = 1; name = "Mixing Room Exterior Airlock"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"cDU" = (/obj/machinery/door/airlock/glass{autoclose = 0; frequency = 1379; heat_proof = 1; icon_state = "door_locked"; id_tag = "incinerator_airlock_exterior"; locked = 1; name = "Mixing Room Exterior Airlock"; req_access = list(12)},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cDV" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cDW" = (/obj/item/weapon/stool,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cDX" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -6977,7 +6977,7 @@ "cEj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/engineering/engine_smes) "cEk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/engine_smes) "cEl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/engineering/engine_monitoring) -"cEm" = (/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access_txt = "11"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cEm" = (/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access = list(11)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/engineering/engine_monitoring) "cEn" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engineering/engine_monitoring) "cEo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering/engine_monitoring) "cEp" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/newscaster{pixel_x = 28; pixel_y = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/engineering/engine_monitoring) @@ -6985,7 +6985,7 @@ "cEr" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/engineering/engine_airlock) "cEs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_monitoring) "cEt" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/engineering/engine_airlock) -"cEu" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1379; icon_state = "door_closed"; id_tag = "engine_airlock_exterior"; locked = 0; name = "Engine Airlock Exterior"; req_access_txt = "10"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/engineering/engine_airlock) +"cEu" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1379; icon_state = "door_closed"; id_tag = "engine_airlock_exterior"; locked = 0; name = "Engine Airlock Exterior"; req_access = list(10)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/engineering/engine_airlock) "cEv" = (/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) "cEw" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) "cEx" = (/turf/simulated/floor/engine{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos) @@ -7023,7 +7023,7 @@ "cFd" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/light,/obj/machinery/mecha_part_fabricator{output_dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engineering/drone_fabrication) "cFe" = (/obj/machinery/light,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/sensor{name = "Powernet Sensor - Master Grid"; name_tag = "Master"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/drone_fabrication) "cFf" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/drone_fabrication) -"cFg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "engineering_dock_airlock"; name = "interior access button"; pixel_x = -30; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13;11;24"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/maintenance/engi_shuttle) +"cFg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "engineering_dock_airlock"; name = "interior access button"; pixel_x = -30; pixel_y = -25; req_one_access = list(13,11,24)},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/maintenance/engi_shuttle) "cFh" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/engi_shuttle) "cFi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cFj" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) @@ -7033,7 +7033,7 @@ "cFn" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cFo" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/closet/secure_closet/personal/patient,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cFp" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_smes) -"cFq" = (/obj/machinery/power/terminal{dir = 8},/obj/machinery/light,/obj/machinery/door_control{id = "engine_electrical_maintenance"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 5; pixel_y = -25; req_access_txt = "10"; specialfunctions = 4},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engineering/engine_smes) +"cFq" = (/obj/machinery/power/terminal{dir = 8},/obj/machinery/light,/obj/machinery/door_control{id = "engine_electrical_maintenance"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 5; pixel_y = -25; req_access = list(10); specialfunctions = 4},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engineering/engine_smes) "cFr" = (/obj/machinery/computer/general_air_control/supermatter_core{frequency = 1438; input_tag = "cooling_in"; name = "Engine Cooling Control"; output_tag = "cooling_out"; pressure_setting = 100; sensors = list("engine_sensor" = "Engine Core")},/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) "cFs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/computer/power_monitor,/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) "cFt" = (/obj/machinery/computer/rcon,/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) @@ -7044,17 +7044,17 @@ "cFy" = (/turf/simulated/floor/plating,/area/engineering/engine_airlock) "cFz" = (/obj/structure/grille,/obj/structure/grille,/turf/simulated/wall/r_wall,/area/engineering/atmos) "cFA" = (/turf/simulated/wall/r_wall,/area/engineering/engine_room) -"cFB" = (/obj/machinery/door/airlock/maintenance{name = "Drone Fabrication/Engine Waste Handling"; req_one_access_txt = "10;24"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"cFC" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_electrical_maintenance"; locked = 1; name = "Electrical Maintenance"; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cFB" = (/obj/machinery/door/airlock/maintenance{name = "Drone Fabrication/Engine Waste Handling"; req_one_access = list(10,24)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cFC" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_electrical_maintenance"; locked = 1; name = "Electrical Maintenance"; req_access = list(10)},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cFD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/engine_room) "cFE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/engineering/engine_room) "cFF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/engine_room) "cFG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cFH" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1379; icon_state = "door_closed"; id_tag = "engine_airlock_interior"; locked = 0; name = "Engine Airlock Interior"; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cFH" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1379; icon_state = "door_closed"; id_tag = "engine_airlock_interior"; locked = 0; name = "Engine Airlock Interior"; req_access = list(10)},/turf/simulated/floor/plating,/area/engineering/engine_room) "cFI" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/wall/r_wall,/area/engineering/engine_waste) "cFJ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/engi_shuttle) -"cFK" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_dock_outer"; locked = 1; name = "Engineering Dock Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) -"cFL" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "engineering_dock_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -8; req_access_txt = "0"; req_one_access_txt = "13;11;24"},/turf/space,/area/space) +"cFK" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_dock_outer"; locked = 1; name = "Engineering Dock Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) +"cFL" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "engineering_dock_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -8; req_one_access = list(13,11,24)},/turf/space,/area/space) "cFM" = (/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plating,/area/maintenance/engineering) "cFN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/engineering) "cFO" = (/obj/structure/sign/fire{pixel_y = 32},/obj/structure/lattice,/turf/space,/area/space) @@ -7068,14 +7068,14 @@ "cFW" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_room) "cFX" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_waste) "cFY" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cFZ" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineEmitterPortWest"; name = "Engine Room Blast Doors"; pixel_x = 0; pixel_y = 25; req_access_txt = "10"},/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_room) +"cFZ" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineEmitterPortWest"; name = "Engine Room Blast Doors"; pixel_x = 0; pixel_y = 25; req_access = list(10)},/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_room) "cGa" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable/yellow,/obj/machinery/power/sensor{name = "Powernet Sensor - Engine Output"; name_tag = "Engine Output"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) "cGb" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGc" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) "cGd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGe" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGf" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cGg" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_dock_inner"; locked = 1; name = "Engineering Dock Airlock"; req_access = null; req_access_txt = "13"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) +"cGg" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_dock_inner"; locked = 1; name = "Engineering Dock Airlock"; req_access = list(13)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cGh" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGi" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/engineering) @@ -7083,14 +7083,14 @@ "cGl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) "cGm" = (/turf/simulated/floor/plating,/area/engineering/engine_room) "cGn" = (/obj/machinery/light_switch{pixel_x = 12; pixel_y = 25},/obj/machinery/power/apc/super{dir = 1; name = "north bump"; pixel_y = 24},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/obj/machinery/power/sensor{name = "Powernet Sensor - Engine Power"; name_tag = "Engine Power"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cGo" = (/obj/machinery/airlock_sensor/airlock_interior{id_tag = "eng_al_int_snsr"; master_tag = "engine_room_airlock"; pixel_y = 22; req_access_txt = "10"},/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGo" = (/obj/machinery/airlock_sensor/airlock_interior{id_tag = "eng_al_int_snsr"; master_tag = "engine_room_airlock"; pixel_y = 22; req_access = list(10)},/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGp" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/plating{icon_state = "platebotc"},/area/engineering/engine_room) "cGq" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_waste) "cGr" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/purple,/turf/simulated/floor/plating,/area/engineering/engine_waste) "cGs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_waste) "cGt" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_waste) "cGu" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineEmitterPortWest"; layer = 3.3; name = "Engine Waste Handling Access"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cGv" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_access = null; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) +"cGv" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_one_access = list(10,24)},/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) "cGw" = (/obj/machinery/atmospherics/omni/filter{use_power = 0; tag_east = 1; tag_north = 0; tag_south = 4; tag_west = 2},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGx" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) "cGy" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) @@ -7105,7 +7105,7 @@ "cGH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering) "cGI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_waste) "cGJ" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/engineering/engine_waste) -"cGK" = (/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_access = null; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) +"cGK" = (/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_one_access = list(10,24)},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) "cGL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) "cGM" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) "cGN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/engine_room) @@ -7123,7 +7123,7 @@ "cGZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/visible/purple,/obj/machinery/meter{id = "wloop_atm_meter"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_waste) "cHa" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/engine_waste) "cHb" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineEmitterPortWest"; layer = 3.3; name = "Engine Waste Handling Access"},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHc" = (/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_access = null; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/structure/window/reinforced,/obj/machinery/atmospherics/binary/pump{dir = 8; name = "waste pump"},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) +"cHc" = (/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_one_access = list(10,24)},/obj/structure/window/reinforced,/obj/machinery/atmospherics/binary/pump{dir = 8; name = "waste pump"},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) "cHd" = (/obj/machinery/atmospherics/omni/filter{use_power = 0; tag_east = 1; tag_north = 4; tag_south = 0; tag_west = 2},/turf/simulated/floor/plating,/area/engineering/engine_room) "cHe" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) "cHf" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_room) @@ -7164,8 +7164,8 @@ "cHO" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/space,/area/space) "cHP" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless,/area/space) "cHQ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless,/area/maintenance/medbay) -"cHR" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_access_hatch"; locked = 1; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHS" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_access_hatch"; locked = 1; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHR" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_access_hatch"; locked = 1; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHS" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_access_hatch"; locked = 1; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) "cHT" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HOT EXHAUST'."; name = "\improper HOT EXHAUST"; pixel_x = -32},/turf/simulated/floor/plating/airless,/area/space) "cHU" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/turf/space,/area/space) "cHV" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Aft Port"},/turf/simulated/floor/plating,/area/maintenance/portsolar) @@ -7206,15 +7206,15 @@ "cIE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cIF" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1438; icon_state = "map_injector"; id = "cooling_in"; name = "Coolant Injector"; pixel_y = 1; power_rating = 30000; use_power = 1; volume_rate = 700},/turf/simulated/floor/engine/nitrogen{icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) "cIG" = (/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cIH" = (/obj/machinery/door_control{id = "EngineVent"; name = "Reactor Ventillatory Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "10"},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIH" = (/obj/machinery/door_control{id = "EngineVent"; name = "Reactor Ventillatory Control"; pixel_x = -25; pixel_y = 0; req_access = list(10)},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) "cII" = (/obj/machinery/camera{c_tag = "Engineering Core West"; dir = 8; network = list("SS13","Supermatter")},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) "cIJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) "cIK" = (/turf/simulated/wall/r_wall,/area/maintenance/portsolar) "cIL" = (/turf/simulated/wall/r_wall,/area/maintenance/engi_engine) -"cIM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{name = "Engine Waste Handling"; req_one_access_txt = "10;24"},/turf/simulated/floor/plating,/area/maintenance/engi_engine) +"cIM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{name = "Engine Waste Handling"; req_one_access = list(10,24)},/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cIN" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/floor/plating,/area/engineering/engine_room) "cIO" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cIP" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine radiator viewport shutters."; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutters"; pixel_x = 25; pixel_y = 0; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIP" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine radiator viewport shutters."; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutters"; pixel_x = 25; pixel_y = 0; req_access = list(10)},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room) "cIQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{dir = 8; icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cIR" = (/obj/machinery/camera{c_tag = "Engineering Core East"; dir = 4; network = list("SS13","Supermatter")},/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) "cIS" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) @@ -7234,7 +7234,7 @@ "cJg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cJh" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/plating,/area/engineering/engine_room) "cJi" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engineering/engine_room) -"cJj" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; pixel_x = 5; pixel_y = -25; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Reactor Blast Doors"; pixel_x = -5; pixel_y = -25; req_access_txt = "10"},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) +"cJj" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; pixel_x = 5; pixel_y = -25; req_access = list(10)},/obj/machinery/door_control{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Reactor Blast Doors"; pixel_x = -5; pixel_y = -25; req_access = list(10)},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) "cJk" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/engine_room) "cJl" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) "cJm" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/generator{anchored = 1; dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room) @@ -7250,13 +7250,13 @@ "cJw" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/tvalve/bypass,/obj/structure/sign/securearea{desc = "A warning sign which reads 'SIPHON VALVE'."; name = "\improper SIPHON VALVE"; pixel_y = -32},/turf/simulated/floor/plating,/area/medical/virology) "cJx" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/medical/virology) "cJy" = (/obj/machinery/camera{c_tag = "Virology Starboard"; dir = 8; network = list("RD"); pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cJz" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) -"cJA" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "robotics_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "robotics_solar_pump"; tag_exterior_door = "robotics_solar_outer"; frequency = 1379; id_tag = "robotics_solar_airlock"; tag_interior_door = "robotics_solar_inner"; layer = 3.3; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_chamber_sensor = "robotics_solar_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "robotics_solar_sensor"; layer = 3.3; pixel_x = 12; pixel_y = -25},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/portsolar) -"cJB" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) -"cJC" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; layer = 3.3; master_tag = "robotics_solar_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/portsolar) +"cJz" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_outer"; locked = 1; name = "Engineering External Access"; req_access = list(10,13)},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) +"cJA" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "robotics_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "robotics_solar_pump"; tag_exterior_door = "robotics_solar_outer"; frequency = 1379; id_tag = "robotics_solar_airlock"; tag_interior_door = "robotics_solar_inner"; layer = 3.3; pixel_x = 0; pixel_y = -25; req_access = list(13); tag_chamber_sensor = "robotics_solar_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "robotics_solar_sensor"; layer = 3.3; pixel_x = 12; pixel_y = -25},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/portsolar) +"cJB" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_inner"; locked = 1; name = "Engineering External Access"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) +"cJC" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; layer = 3.3; master_tag = "robotics_solar_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/portsolar) "cJD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "cJE" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/portsolar) -"cJF" = (/obj/machinery/door/airlock/engineering{name = "Aft Port Solar Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/portsolar) +"cJF" = (/obj/machinery/door/airlock/engineering{name = "Aft Port Solar Access"; req_access = list(10)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/portsolar) "cJG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/engi_engine) "cJH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cJI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/engi_engine) @@ -7264,7 +7264,7 @@ "cJK" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cJL" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/medical/virology) "cJM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/plating,/area/medical/virology) -"cJN" = (/obj/machinery/door/window/southright{name = "Virology Isolation Room Three"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) +"cJN" = (/obj/machinery/door/window/southright{name = "Virology Isolation Room Three"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "cJO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/plating,/area/medical/virology) "cJP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cJQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating,/area/medical/virology) @@ -7289,18 +7289,18 @@ "cKj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cKk" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/plating/airless,/area/maintenance/incinerator) "cKl" = (/turf/space,/area/syndicate_station/southeast) -"cKm" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "engineering_dock_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "engineering_dock_airlock"; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "13;11;24"; tag_airpump = "engineering_dock_pump"; tag_chamber_sensor = "engineering_dock_sensor"; tag_exterior_door = "engineering_dock_outer"; tag_interior_door = "engineering_dock_inner"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/engi_shuttle) +"cKm" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "engineering_dock_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "engineering_dock_airlock"; pixel_x = -25; pixel_y = 0; req_one_access = list(13,11,24); tag_airpump = "engineering_dock_pump"; tag_chamber_sensor = "engineering_dock_sensor"; tag_exterior_door = "engineering_dock_outer"; tag_interior_door = "engineering_dock_inner"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/engi_shuttle) "cKn" = (/turf/space,/area/syndicate_station/south) "cKo" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/lattice,/turf/space,/area/space) "cKp" = (/obj/item/weapon/wrench,/turf/space,/area/space) "cKq" = (/turf/space,/area/vox_station/southwest_solars) "cKr" = (/obj/machinery/power/solar{id = "auxsolarnorth"; name = "Fore Solar Array"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/fore) "cKs" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "engineering_dock_pump"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "engineering_dock_sensor"; pixel_x = -25; pixel_y = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/maintenance/engi_shuttle) -"cKt" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_dock_outer"; locked = 1; name = "Engineering Dock Airlock"; req_access = null; req_access_txt = "13"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) +"cKt" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_dock_outer"; locked = 1; name = "Engineering Dock Airlock"; req_access = list(13)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cKu" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/constructionsite/station) "cKv" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/constructionsite/station) -"cKw" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/shuttle/constructionsite/station) -"cKx" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/shuttle/constructionsite/station) +"cKw" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/shuttle/constructionsite/station) +"cKx" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/shuttle/constructionsite/station) "cKy" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/constructionsite/station) "cKz" = (/turf/simulated/shuttle/wall,/area/shuttle/constructionsite/station) "cKA" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/space,/area/space) @@ -7309,7 +7309,7 @@ "cKD" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/shuttle/constructionsite/station) "cKE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/shuttle/constructionsite/station) "cKF" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/constructionsite/station) -"cKG" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "engineering_shuttle"; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13;11;24"; tag_door = "engineering_shuttle_hatch"},/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/constructionsite/station) +"cKG" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "engineering_shuttle"; pixel_x = 0; pixel_y = 25; req_one_access = list(13,11,24); tag_door = "engineering_shuttle_hatch"},/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/constructionsite/station) "cKH" = (/turf/simulated/shuttle/wall{icon_state = "swall1"; dir = 2},/area/shuttle/constructionsite/station) "cKI" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/shuttle/constructionsite/station) "cKJ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/shuttle/constructionsite/station) @@ -7322,7 +7322,7 @@ "cKQ" = (/turf/simulated/shuttle/wall{tag = "icon-swall2"; icon_state = "swall2"; dir = 2},/area/shuttle/constructionsite/station) "cKR" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/constructionsite/station) "cKS" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/constructionsite/station) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index 443ae9f66f..20743e88ad 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -360,7 +360,7 @@ "gV" = (/turf/space/transit/north/shuttlespace_ns8,/area/vox_station/transit) "gW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_mothership) "gX" = (/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad) -"gY" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad) +"gY" = (/obj/machinery/door/airlock/external{req_access = list(150)},/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad) "gZ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area/space) "ha" = (/turf/space/transit/north/shuttlespace_ns7,/area/vox_station/transit) "hb" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area/space) @@ -381,7 +381,7 @@ "hq" = (/turf/space/transit/north/shuttlespace_ns10,/area/vox_station/transit) "hr" = (/turf/space/transit/north/shuttlespace_ns1,/area/vox_station/transit) "hs" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/syndicate_elite/mothership) -"ht" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access_txt = "150"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "syndicate_elite"; name = "Side Hull Door"; opacity = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) +"ht" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "syndicate_elite"; name = "Side Hull Door"; opacity = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) "hu" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/syndicate_elite/mothership) "hv" = (/turf/space/transit/north/shuttlespace_ns15,/area/vox_station/transit) "hw" = (/turf/simulated/floor/plating/airless,/area/shuttle/syndicate_elite/mothership) @@ -396,19 +396,19 @@ "hF" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 1},/turf/simulated/floor/plating/airless,/area/centcom/evac) "hG" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/centcom/evac) "hH" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/centcom/evac) -"hI" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_1_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock"; req_access_txt = "13"},/turf/unsimulated/floor,/area/centcom/evac) -"hJ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_2_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock"; req_access_txt = "13"},/turf/unsimulated/floor,/area/centcom/evac) +"hI" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_1_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock"; req_access = list(13)},/turf/unsimulated/floor,/area/centcom/evac) +"hJ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_2_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock"; req_access = list(13)},/turf/unsimulated/floor,/area/centcom/evac) "hK" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/centcom/evac) "hL" = (/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/shuttle/plating,/area/centcom/evac) "hM" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/plating,/area/centcom/evac) "hN" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/centcom/evac) "hO" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "swall_floor_f9"},/area/centcom/evac) "hP" = (/obj/structure/closet/emcloset,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"hQ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_1_recovery"; pixel_x = 25; pixel_y = 30; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "escape_pod_1_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"hQ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_1_recovery"; pixel_x = 25; pixel_y = 30; req_one_access = list(13); tag_door = "escape_pod_1_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) "hR" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) "hS" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) "hT" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 0},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"hU" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_2_recovery"; pixel_x = -25; pixel_y = 30; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "escape_pod_2_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"hU" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_2_recovery"; pixel_x = -25; pixel_y = 30; req_one_access = list(13); tag_door = "escape_pod_2_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) "hV" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "swall_floor_f5"},/area/centcom/evac) "hW" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{dir = 3; icon_state = "swall_f10"; layer = 2},/area/centcom/evac) "hX" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/shuttle/plating,/area/centcom/evac) @@ -424,11 +424,11 @@ "ih" = (/turf/unsimulated/wall,/area/syndicate_mothership) "ii" = (/turf/simulated/shuttle/plating,/area/centcom/evac) "ij" = (/turf/simulated/shuttle/wall{icon_state = "swall1"; dir = 2},/area/centcom/evac) -"ik" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -30; pixel_y = 0; req_access_txt = "0"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"ik" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -30; pixel_y = 0},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) "il" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) "im" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) "in" = (/obj/item/weapon/stool,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"io" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 30; pixel_y = 0; req_access_txt = "0"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"io" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 30; pixel_y = 0},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) "ip" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area/space) "iq" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod1/transit) "ir" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape_pod1/transit) @@ -445,7 +445,7 @@ "iC" = (/obj/structure/flora/tree/pine,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) "iD" = (/obj/structure/flora/grass/both,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) "iE" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/centcom/evac) -"iF" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "101"},/turf/simulated/shuttle/plating,/area/centcom/evac) +"iF" = (/obj/machinery/door/airlock/maintenance_hatch{req_access = list(101)},/turf/simulated/shuttle/plating,/area/centcom/evac) "iG" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/centcom/evac) "iH" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod1/transit) "iI" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/escape_pod1/transit) @@ -478,16 +478,16 @@ "jj" = (/turf/space,/area/shuttle/escape_pod5/centcom) "jk" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) "jl" = (/turf/space,/area/shuttle/escape_pod3/centcom) -"jm" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_5_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock"; req_access_txt = "13"},/turf/unsimulated/floor,/area/centcom/evac) -"jn" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_5_recovery"; pixel_x = -25; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "escape_pod_5_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"jm" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_5_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock"; req_access = list(13)},/turf/unsimulated/floor,/area/centcom/evac) +"jn" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_5_recovery"; pixel_x = -25; pixel_y = 25; req_one_access = list(13); tag_door = "escape_pod_5_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) "jo" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"jp" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_3_recovery"; pixel_x = 25; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "escape_pod_3_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"jq" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_3_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock"; req_access_txt = "13"},/turf/unsimulated/floor,/area/centcom/evac) +"jp" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_3_recovery"; pixel_x = 25; pixel_y = -25; req_one_access = list(13); tag_door = "escape_pod_3_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"jq" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_3_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock"; req_access = list(13)},/turf/unsimulated/floor,/area/centcom/evac) "jr" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) "js" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) "jt" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_mothership) -"ju" = (/obj/machinery/door/airlock/glass_security{name = "Airlock"; req_access_txt = "150"},/obj/machinery/door/blast/regular{id = "syndicate_elite_mech_room"; name = "Mech Room Door"},/turf/unsimulated/floor{icon_state = "floor4"},/area/syndicate_mothership/elite_squad) -"jv" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access_txt = "150"},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "syndicate_elite"; name = "Front Hull Door"; opacity = 1},/turf/simulated/shuttle/plating,/area/shuttle/syndicate_elite/mothership) +"ju" = (/obj/machinery/door/airlock/glass_security{name = "Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{id = "syndicate_elite_mech_room"; name = "Mech Room Door"},/turf/unsimulated/floor{icon_state = "floor4"},/area/syndicate_mothership/elite_squad) +"jv" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "syndicate_elite"; name = "Front Hull Door"; opacity = 1},/turf/simulated/shuttle/plating,/area/shuttle/syndicate_elite/mothership) "jw" = (/obj/machinery/door/blast/regular{id = "smindicate"; name = "Outer Airlock"},/turf/simulated/shuttle/plating,/area/syndicate_mothership) "jx" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_mothership) "jy" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "swallc1"},/area/centcom/evac) @@ -495,8 +495,8 @@ "jA" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) "jB" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) "jC" = (/obj/machinery/computer/security/nuclear,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) -"jD" = (/obj/machinery/computer/shuttle_control/multi/syndicate{req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) -"jE" = (/obj/structure/table,/obj/machinery/door_control{id = "syndieshutters"; name = "remote shutter control"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) +"jD" = (/obj/machinery/computer/shuttle_control/multi/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) +"jE" = (/obj/structure/table,/obj/machinery/door_control{id = "syndieshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) "jF" = (/obj/structure/computerframe,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) "jG" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) "jH" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/grass/both,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) @@ -528,20 +528,20 @@ "kh" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/syndicate_mothership) "ki" = (/obj/machinery/sleeper,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) "kj" = (/obj/machinery/sleep_console,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"kk" = (/obj/machinery/door/airlock/hatch{name = "Infirmary"; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/centcom/evac) +"kk" = (/obj/machinery/door/airlock/hatch{name = "Infirmary"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/centcom/evac) "kl" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/stamp,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) "km" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) "kn" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) "ko" = (/obj/machinery/computer/card,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) "kp" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/syndicate_mothership) -"kq" = (/obj/machinery/door/window{dir = 1; name = "Cockpit"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) +"kq" = (/obj/machinery/door/window{dir = 1; name = "Cockpit"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) "kr" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/syndicate_mothership) "ks" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/grass/brown,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 4},/area/syndicate_mothership) "kt" = (/obj/structure/bed/chair/comfy/black,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"ku" = (/obj/machinery/door/airlock/centcom{name = "Kitchen"; opacity = 1; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"ku" = (/obj/machinery/door/airlock/centcom{name = "Kitchen"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "kv" = (/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/syndicate_mothership) "kw" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/syndicate_mothership) -"kx" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -30; pixel_y = 0; req_access_txt = "0"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"kx" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -30; pixel_y = 0},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) "ky" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) "kz" = (/obj/machinery/computer/secure_data,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) "kA" = (/obj/structure/closet,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) @@ -552,17 +552,17 @@ "kF" = (/obj/structure/table,/obj/item/weapon/folder,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "kG" = (/obj/structure/bed/chair/comfy/black{dir = 8},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "kH" = (/obj/structure/closet/crate/freezer,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/syndicate_mothership) -"kI" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 4; icon_state = "right"; name = "Security Desk"; req_access_txt = "103"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) +"kI" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 4; icon_state = "right"; name = "Security Desk"; req_access = list(103)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) "kJ" = (/obj/structure/table,/obj/item/weapon/storage/box/handcuffs,/obj/item/device/flash,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) "kK" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) "kL" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) "kM" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "kN" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/centcom/evac) "kO" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area/centcom/evac) -"kP" = (/obj/machinery/door/airlock/hatch{name = "Cockpit"; req_access_txt = "109"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"kP" = (/obj/machinery/door/airlock/hatch{name = "Cockpit"; req_access = list(109)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) "kQ" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"kR" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"kS" = (/obj/machinery/door/airlock/centcom{name = "Restroom"; opacity = 1; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"kR" = (/obj/machinery/door/airlock/external{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"kS" = (/obj/machinery/door/airlock/centcom{name = "Restroom"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "kT" = (/obj/structure/urinal{pixel_y = 32},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) "kU" = (/obj/structure/urinal{pixel_y = 32},/obj/effect/decal/cleanable/vomit,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) "kV" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) @@ -588,7 +588,7 @@ "lp" = (/obj/structure/table,/obj/item/weapon/paper_bin,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) "lq" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'FOURTH WALL'."; name = "\improper FOURTH WALL"; pixel_x = -32},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) "lr" = (/obj/structure/table,/obj/item/device/aicard,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) -"ls" = (/obj/machinery/door/window{dir = 2; name = "Seating"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) +"ls" = (/obj/machinery/door/window{dir = 2; name = "Seating"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) "lt" = (/obj/structure/table,/obj/machinery/computer/pod/old/syndicate{id = "smindicate"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) "lu" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/grass/brown,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) "lv" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{dir = 1; icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) @@ -598,11 +598,11 @@ "lz" = (/obj/structure/window/shuttle{icon_state = "window4"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) "lA" = (/obj/structure/window/shuttle{icon_state = "window12"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) "lB" = (/obj/structure/window/shuttle{icon_state = "window8"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) -"lC" = (/obj/machinery/door/window{dir = 4; name = "Brig"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) -"lD" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "synd_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) +"lC" = (/obj/machinery/door/window{dir = 4; name = "Brig"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) +"lD" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "synd_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) "lE" = (/turf/unsimulated/wall/fakeglass{dir = 1; icon_state = "fakewindows"},/area/syndicate_mothership) "lF" = (/obj/structure/bed,/obj/item/weapon/bedsheet/red,/turf/simulated/floor/wood{icon_state = "wood-broken4"},/area/syndicate_mothership) -"lG" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Equipment Room"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) +"lG" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Equipment Room"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) "lH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership) "lI" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 10},/area/syndicate_mothership) "lJ" = (/turf/simulated/floor/wood{icon_state = "wood-broken"},/area/syndicate_mothership) @@ -620,14 +620,14 @@ "lV" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) "lW" = (/turf/simulated/floor/wood{icon_state = "wood-broken3"},/area/syndicate_mothership) "lX" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_mothership) -"lY" = (/obj/machinery/door/window{dir = 4; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_mothership) -"lZ" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) +"lY" = (/obj/machinery/door/window{dir = 4; name = "Infirmary"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_mothership) +"lZ" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) "ma" = (/obj/structure/table,/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/toolbox/syndicate{pixel_x = -3; pixel_y = -3},/obj/effect/spawner/newbomb/timer/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) -"mb" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_mothership) -"mc" = (/obj/machinery/door/window{dir = 8; name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) +"mb" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_mothership) +"mc" = (/obj/machinery/door/window{dir = 8; name = "Tool Storage"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) "md" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/o2,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/adv,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_mothership) "me" = (/obj/item/weapon/weldingtool,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_mothership) -"mf" = (/obj/machinery/door/window{dir = 1; name = "Secure Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_mothership) +"mf" = (/obj/machinery/door/window{dir = 1; name = "Secure Storage"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_mothership) "mg" = (/obj/item/weapon/crowbar,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_mothership) "mh" = (/obj/structure/table,/obj/effect/spawner/newbomb/timer/syndicate,/turf/unsimulated/floor{icon_state = "floor4"},/area/syndicate_mothership) "mi" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "syndieshutters_workshop"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) @@ -676,7 +676,7 @@ "mZ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "floor5"},/area/syndicate_mothership) "na" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "floor5"},/area/syndicate_mothership) "nb" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "floor5"},/area/syndicate_mothership) -"nc" = (/obj/machinery/door/airlock/centcom{name = "Barracks"; opacity = 1; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) +"nc" = (/obj/machinery/door/airlock/centcom{name = "Barracks"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) "nd" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "floor5"},/area/syndicate_mothership) "ne" = (/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "nf" = (/obj/structure/sign/double/map/left{pixel_y = 32},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) @@ -687,7 +687,7 @@ "nk" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "nl" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "nm" = (/obj/structure/bed/chair/comfy/black,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"nn" = (/obj/machinery/door/airlock/centcom{name = "Kitchen"; opacity = 1; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) +"nn" = (/obj/machinery/door/airlock/centcom{name = "Kitchen"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "no" = (/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "np" = (/obj/structure/table/reinforced,/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "nq" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) @@ -702,7 +702,7 @@ "nz" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_station/start) "nA" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "nB" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "syndieshutters_workshop"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"nC" = (/obj/structure/closet/secure_closet/freezer/kitchen{req_access = null; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) +"nC" = (/obj/structure/closet/secure_closet/freezer/kitchen{req_access = list(150)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "nD" = (/obj/structure/table/reinforced,/obj/item/weapon/tray{pixel_y = 5},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "nE" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka{pixel_x = 3; pixel_y = 12},/obj/item/weapon/reagent_containers/food/drinks/bottle/wine{pixel_x = -1; pixel_y = 8},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "nF" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/ammo_magazine/mc9mm/flash,/obj/item/weapon/gun/projectile/pistol/flash,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) @@ -710,9 +710,9 @@ "nH" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) "nI" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "nJ" = (/obj/machinery/computer/security/nuclear,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"nK" = (/obj/machinery/computer/shuttle_control/multi/syndicate{req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"nK" = (/obj/machinery/computer/shuttle_control/multi/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "nL" = (/obj/structure/computerframe,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"nM" = (/obj/structure/table,/obj/machinery/door_control{id = "syndieshutters"; name = "remote shutter control"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"nM" = (/obj/structure/table,/obj/machinery/door_control{id = "syndieshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "nN" = (/obj/machinery/door/blast/regular{id = "syndieshutters_telebay"; name = "Outer Airlock"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "nO" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/ionrifle,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = 32},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "nP" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a12mm,/obj/item/ammo_magazine/a12mm,/obj/item/ammo_magazine/a12mm,/obj/item/ammo_magazine/a12mm,/obj/item/ammo_magazine/a12mm,/obj/item/ammo_magazine/a12mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) @@ -739,7 +739,7 @@ "ok" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/floor{icon_state = "floor5"},/area/syndicate_mothership) "ol" = (/obj/machinery/door/airlock/centcom{name = "Suit Storage"; opacity = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "om" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/syndicate_station/start) -"on" = (/obj/machinery/door/window/northright{name = "Flight Deck"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"on" = (/obj/machinery/door/window/northright{name = "Flight Deck"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "oo" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/syndicate_station/start) "op" = (/obj/structure/table/rack,/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "oq" = (/obj/structure/table/rack,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) @@ -754,11 +754,11 @@ "oz" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = -32},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "oA" = (/obj/structure/bed/chair{dir = 8},/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "oB" = (/obj/machinery/recharger/wallcharger{pixel_x = -25},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"oC" = (/obj/machinery/door/airlock/vault{name = "Armory"; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"oC" = (/obj/machinery/door/airlock/vault{name = "Armory"; req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "oD" = (/obj/effect/landmark{name = "Syndicate-Uplink"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "oE" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/mask/gas/syndicate,/obj/item/clothing/head/helmet/space/void/merc,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "oF" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/lattice,/turf/space,/area/space) -"oG" = (/obj/structure/closet/secure_closet/medical_wall{pixel_x = -32; pixel_y = 0; req_access = null; req_access_txt = "150"},/obj/item/stack/medical/splint,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"oG" = (/obj/structure/closet/secure_closet/medical_wall{pixel_x = -32; pixel_y = 0; req_access = list(150)},/obj/item/stack/medical/splint,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "oH" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 0; pixel_y = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "oI" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/space,/area/space) "oJ" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) @@ -779,16 +779,16 @@ "oY" = (/obj/item/device/radio/electropack,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/syndicate_station/start) "oZ" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "synd_pump"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "pa" = (/obj/machinery/vending/cola{name = "hacked Robust Softdrinks"; prices = list()},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"pb" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "synd_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1331; id_tag = "synd_airlock"; pixel_x = -8; pixel_y = 25; req_access_txt = "0"; tag_airpump = "synd_pump"; tag_chamber_sensor = "synd_sensor"; tag_exterior_door = "synd_outer"; tag_interior_door = "synd_inner"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"pb" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "synd_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1331; id_tag = "synd_airlock"; pixel_x = -8; pixel_y = 25; tag_airpump = "synd_pump"; tag_chamber_sensor = "synd_sensor"; tag_exterior_door = "synd_outer"; tag_interior_door = "synd_inner"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "pc" = (/obj/machinery/door/airlock/centcom{name = "Hardsuit Storage"; opacity = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "pd" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom) "pe" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration/centcom) -"pf" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) +"pf" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) "pg" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom) "ph" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/floor{icon_state = "floor5"},/area/syndicate_station/start) "pi" = (/obj/structure/toilet{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/syndicate_station/start) "pj" = (/obj/item/weapon/cigbutt,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/syndicate_station/start) -"pk" = (/obj/machinery/door/window{dir = 2; name = "Seating"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"pk" = (/obj/machinery/door/window{dir = 2; name = "Seating"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "pl" = (/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "pm" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "synd_pump"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "pn" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) @@ -797,23 +797,23 @@ "pq" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "pr" = (/obj/machinery/vending/cigarette,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "ps" = (/obj/machinery/microwave,/obj/structure/table/reinforced{icon_state = "table"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"pt" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "admin_shuttle"; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "101"; tag_door = "admin_shuttle_hatch"},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) +"pt" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "admin_shuttle"; pixel_x = -25; pixel_y = 0; req_one_access = list(101); tag_door = "admin_shuttle_hatch"},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) "pu" = (/turf/simulated/floor/plating,/area/shuttle/administration/centcom) "pv" = (/obj/item/device/multitool,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/structure/table/reinforced{icon_state = "table"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "pw" = (/obj/item/weapon/storage/toolbox/mechanical,/obj/structure/table/reinforced{icon_state = "table"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"px" = (/obj/machinery/door/window{dir = 1; name = "Cell"; req_access_txt = "150"},/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"px" = (/obj/machinery/door/window{dir = 1; name = "Cell"; req_access = list(150)},/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "py" = (/obj/machinery/vending/assist{contraband = null; name = "AntagCorpVent"; products = list(/obj/item/device/assembly/prox_sensor = 5, /obj/item/device/assembly/signaler = 4, /obj/item/device/assembly/infra = 4, /obj/item/device/assembly/prox_sensor = 4, /obj/item/weapon/handcuffs = 8, /obj/item/device/flash = 4, /obj/item/weapon/cartridge/signal = 4)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "pz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"pA" = (/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_closed"; id_tag = "synd_inner"; locked = 0; name = "Ship External Access"; req_access = null; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"pA" = (/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_closed"; id_tag = "synd_inner"; locked = 0; name = "Ship External Access"},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "pB" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"pC" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access_txt = "101"},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) +"pC" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) "pD" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "pE" = (/obj/machinery/cell_charger,/obj/structure/table/reinforced{icon_state = "table"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "pF" = (/turf/unsimulated/wall,/area/centcom/living) "pG" = (/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor{icon_state = "carpet15-15"; dir = 4},/area/holodeck/source_courtroom) "pH" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/button/flasher{id = "syndieflash"; name = "Flasher"; pixel_x = 27; pixel_y = 0; tag = "permflash"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "pI" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"pJ" = (/obj/structure/table,/obj/machinery/computer/pod/old/syndicate{id = "smindicate"},/obj/machinery/door/window{dir = 4; name = "Blast Door Control"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"pJ" = (/obj/structure/table,/obj/machinery/computer/pod/old/syndicate{id = "smindicate"},/obj/machinery/door/window{dir = 4; name = "Blast Door Control"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "pK" = (/obj/structure/table/rack,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/weapon/gun/projectile/automatic/sts35,/obj/item/weapon/gun/projectile/automatic/sts35,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "pL" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "pM" = (/obj/machinery/door/window/northright,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) @@ -831,8 +831,8 @@ "pY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor,/area/centcom/living) "pZ" = (/turf/unsimulated/wall,/area/centcom/suppy) "qa" = (/obj/structure/table,/obj/item/weapon/kitchen/utensil/knife{pixel_x = -6},/obj/item/weapon/reagent_containers/syringe/drugs{pixel_x = 3; pixel_y = -1},/obj/item/weapon/reagent_containers/syringe/drugs{pixel_x = 3; pixel_y = 4},/obj/item/weapon/reagent_containers/syringe/drugs{pixel_x = 3; pixel_y = 9},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"qb" = (/obj/machinery/door/window{dir = 4; name = "Brig"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"qc" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "Preparation"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"qb" = (/obj/machinery/door/window{dir = 4; name = "Brig"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"qc" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "Preparation"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "qd" = (/obj/structure/closet/syndicate/suit{name = "suit closet"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "qe" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 4},/turf/space,/area/shuttle/administration/centcom) "qf" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration/centcom) @@ -845,7 +845,7 @@ "qm" = (/obj/machinery/autolathe{desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; hacked = 1; name = "Thunderdome Autolathe"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "qn" = (/obj/structure/dispenser,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "qo" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/living) -"qp" = (/obj/machinery/door/airlock/centcom{name = "Living Quarters"; opacity = 1; req_access_txt = "105"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/living) +"qp" = (/obj/machinery/door/airlock/centcom{name = "Living Quarters"; opacity = 1; req_access = list(105)},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/living) "qq" = (/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) "qr" = (/obj/machinery/atm{pixel_y = 24},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/living) "qs" = (/obj/item/weapon/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/living) @@ -859,12 +859,12 @@ "qA" = (/turf/unsimulated/floor{icon_state = "warnplate"; dir = 4},/area/centcom/suppy) "qB" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/suppy) "qC" = (/obj/structure/closet{name = "custodial"},/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/mop,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"qD" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Brig"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"qE" = (/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "Preparation"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"qD" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Brig"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"qE" = (/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "Preparation"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "qF" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate{pixel_x = -1; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "qG" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 4},/turf/space,/area/shuttle/administration/centcom) "qH" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom) -"qI" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "admin_shuttle_bay"; name = "shuttle bay controller"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "admin_shuttle_bay_door"},/turf/unsimulated/floor{name = "plating"},/area/centcom) +"qI" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "admin_shuttle_bay"; name = "shuttle bay controller"; pixel_x = 25; pixel_y = 0; tag_door = "admin_shuttle_bay_door"},/turf/unsimulated/floor{name = "plating"},/area/centcom) "qJ" = (/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/structure/table,/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) "qK" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "qL" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{name = "plating"},/area/centcom/living) @@ -885,7 +885,7 @@ "ra" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "rb" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 4; start_pressure = 740.5},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "rc" = (/obj/structure/table,/obj/item/roller{pixel_y = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"rd" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "synd_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"rd" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "synd_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "re" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "rf" = (/obj/structure/table,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/signaler{pixel_y = 2},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "rg" = (/obj/structure/table,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) @@ -898,22 +898,22 @@ "rn" = (/obj/machinery/computer/cloning,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "ro" = (/obj/machinery/clonepod,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "rp" = (/obj/machinery/computer/scan_consolenew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"rq" = (/obj/machinery/computer/shuttle_control{req_access = null; req_access_txt = "101"; shuttle_tag = "Administration"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"rq" = (/obj/machinery/computer/shuttle_control{req_access = list(101); shuttle_tag = "Administration"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "rr" = (/obj/structure/device/piano{dir = 4},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) "rs" = (/obj/item/weapon/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) -"rt" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living) +"rt" = (/obj/structure/closet/secure_closet/bar{req_access = list(25)},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living) "ru" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living) "rv" = (/obj/machinery/vending/boozeomat,/turf/unsimulated/wall,/area/centcom/living) "rw" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living) "rx" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living) "ry" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living) "rz" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/shuttle/floor,/area/supply/dock) -"rA" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/plating,/area/supply/dock) +"rA" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/plating,/area/supply/dock) "rB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "rC" = (/obj/machinery/bodyscanner,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "rD" = (/obj/machinery/body_scanconsole,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"rE" = (/obj/machinery/door/window{dir = 4; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"rF" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"rE" = (/obj/machinery/door/window{dir = 4; name = "Infirmary"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"rF" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "rG" = (/obj/item/weapon/stool{pixel_y = 8},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "rH" = (/obj/structure/table,/obj/effect/spawner/newbomb/timer/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "rI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) @@ -922,40 +922,40 @@ "rL" = (/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living) "rM" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living) "rN" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living) -"rO" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/supply/dock) +"rO" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/supply/dock) "rP" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"rQ" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"rR" = (/obj/machinery/door/window{dir = 8; name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"rQ" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"rR" = (/obj/machinery/door/window{dir = 8; name = "Tool Storage"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "rS" = (/obj/structure/table,/obj/item/device/aicard,/obj/effect/spawner/newbomb/timer/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"rT" = (/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_closed"; id_tag = "synd_outer"; locked = 0; name = "Ship External Access"; req_access = null; req_access_txt = "150"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "smindicate"; name = "Outer Airlock"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"rT" = (/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_closed"; id_tag = "synd_outer"; locked = 0; name = "Ship External Access"; req_access = list(150)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "smindicate"; name = "Outer Airlock"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "rU" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "rV" = (/obj/structure/table/reinforced,/obj/machinery/librarycomp,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/shuttle/administration/centcom) "rW" = (/obj/structure/bookcase,/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/shuttle/administration/centcom) "rX" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living) "rY" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living) -"rZ" = (/obj/machinery/door/airlock/centcom{name = "Living Quarters"; opacity = 1; req_access_txt = "105"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living) -"sa" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "supply_shuttle"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "13;31"; tag_door = "supply_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/supply/dock) -"sb" = (/obj/machinery/door_control{id = "syndieshutters_infirmary"; name = "remote shutter control"; pixel_x = -25; req_access_txt = "0"},/obj/structure/mopbucket,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"rZ" = (/obj/machinery/door/airlock/centcom{name = "Living Quarters"; opacity = 1; req_access = list(105)},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living) +"sa" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "supply_shuttle"; pixel_x = 25; pixel_y = 0; req_one_access = list(13,31); tag_door = "supply_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/supply/dock) +"sb" = (/obj/machinery/door_control{id = "syndieshutters_infirmary"; name = "remote shutter control"; pixel_x = -25},/obj/structure/mopbucket,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "sc" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"sd" = (/obj/machinery/door/window{dir = 1; name = "Secure Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"sd" = (/obj/machinery/door/window{dir = 1; name = "Secure Storage"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "se" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/structure/sign/nosmoking_1{pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"sf" = (/obj/machinery/door_control{id = "syndieshutters_workshop"; name = "remote shutter control"; pixel_x = 25; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"sf" = (/obj/machinery/door_control{id = "syndieshutters_workshop"; name = "remote shutter control"; pixel_x = 25},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "sg" = (/obj/machinery/door/window/northright{icon_state = "right"; dir = 2},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "sh" = (/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "si" = (/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "sj" = (/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/shuttle/administration/centcom) "sk" = (/turf/simulated/floor{icon_state = "chapel"},/area/shuttle/administration/centcom) -"sl" = (/obj/machinery/door/airlock/centcom{name = "Commander Quarters"; opacity = 1; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/living) +"sl" = (/obj/machinery/door/airlock/centcom{name = "Commander Quarters"; opacity = 1; req_access = list(109)},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/living) "sm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/living) "sn" = (/obj/item/weapon/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living) "so" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "sp" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"sq" = (/obj/machinery/door/window{dir = 1; name = "Surgery"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"sq" = (/obj/machinery/door/window{dir = 1; name = "Surgery"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "sr" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "ss" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/storage/firstaid/toxin{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "st" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/fire{pixel_x = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "su" = (/obj/item/weapon/weldingtool,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"sv" = (/obj/structure/table,/obj/structure/closet/secure_closet/medical_wall{pixel_y = 32; req_access = null; req_access_txt = "150"},/obj/item/bodybag,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = 8},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 4; pixel_y = 7},/obj/item/weapon/reagent_containers/syringe,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"sv" = (/obj/structure/table,/obj/structure/closet/secure_closet/medical_wall{pixel_y = 32; req_access = list(150)},/obj/item/bodybag,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = 8},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 4; pixel_y = 7},/obj/item/weapon/reagent_containers/syringe,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "sw" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/ionrifle,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "sx" = (/obj/structure/table,/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/centcom/living) "sy" = (/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/centcom/living) @@ -965,10 +965,10 @@ "sC" = (/obj/machinery/computer/card/centcom,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/living) "sD" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/kitchen/rollingpin,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living) "sE" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/shuttle/floor,/area/supply/dock) -"sF" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/plating,/area/supply/dock) +"sF" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/plating,/area/supply/dock) "sG" = (/obj/structure/table,/obj/item/weapon/scalpel,/obj/item/weapon/circular_saw{pixel_y = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "sH" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"sI" = (/obj/machinery/door_control{id = "syndieshutters_telebay"; name = "remote shutter control"; pixel_x = 0; pixel_y = -25; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"sI" = (/obj/machinery/door_control{id = "syndieshutters_telebay"; name = "remote shutter control"; pixel_x = 0; pixel_y = -25; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "sJ" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "sK" = (/obj/item/weapon/crowbar,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "sL" = (/obj/machinery/vending/medical,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) @@ -1002,7 +1002,7 @@ "tn" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/syndicate_station/start) "to" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"},/turf/space,/area/syndicate_station/start) "tp" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/living) -"tq" = (/obj/machinery/door/airlock/centcom{name = "Living Quarters"; opacity = 1; req_access_txt = "105"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/living) +"tq" = (/obj/machinery/door/airlock/centcom{name = "Living Quarters"; opacity = 1; req_access = list(105)},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/living) "tr" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/supply/dock) "ts" = (/turf/simulated/shuttle/wall{icon_state = "swall15"; dir = 2},/area/supply/dock) "tt" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater,/turf/simulated/floor/plating/airless,/area/supply/dock) @@ -1100,12 +1100,12 @@ "vh" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/wall,/area/prison/solitary) "vi" = (/turf/unsimulated/floor{icon_state = "platingdmg1"},/area/prison/solitary) "vj" = (/turf/unsimulated/floor{icon_state = "floorscorched2"},/area/prison/solitary) -"vk" = (/obj/machinery/door/airlock/centcom{name = "Maintenance Access"; opacity = 1; req_access_txt = "106"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control) +"vk" = (/obj/machinery/door/airlock/centcom{name = "Maintenance Access"; opacity = 1; req_access = list(106)},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control) "vl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) "vm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) "vn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) "vo" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) -"vp" = (/obj/machinery/door/airlock/centcom{name = "Teleporter Bay"; opacity = 1; req_access_txt = "107"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control) +"vp" = (/obj/machinery/door/airlock/centcom{name = "Teleporter Bay"; opacity = 1; req_access = list(107)},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control) "vq" = (/turf/unsimulated/floor{icon_state = "white"},/area/centcom/test) "vr" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/test) "vs" = (/obj/machinery/door/window/northleft,/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) @@ -1120,7 +1120,7 @@ "vB" = (/turf/unsimulated/floor{icon_state = "greencorner"},/area/centcom/control) "vC" = (/turf/unsimulated/floor{icon_state = "green"},/area/centcom/control) "vD" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/control) -"vE" = (/obj/machinery/door/airlock/centcom{name = "Research Facility"; opacity = 1; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/test) +"vE" = (/obj/machinery/door/airlock/centcom{name = "Research Facility"; opacity = 1; req_access = list(104)},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/test) "vF" = (/obj/structure/closet/secure_closet/courtroom,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control) "vG" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control) "vH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/obj/machinery/camera{c_tag = "Court"; invisibility = 1; network = list("thunder"); pixel_x = 10},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control) @@ -1156,7 +1156,7 @@ "wl" = (/obj/machinery/vending/engivend,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "wm" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "wn" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 9},/area/centcom) -"wo" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access_txt = "103"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) +"wo" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "wp" = (/obj/effect/landmark{name = "Response Team"},/obj/effect/landmark{name = "Commando"},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "wq" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "wr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) @@ -1183,7 +1183,7 @@ "wM" = (/obj/machinery/computer/ordercomp,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "wN" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "wO" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1443; listening = 0; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"wP" = (/obj/machinery/door/window{dir = 2; name = "AI Core Door"; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"wP" = (/obj/machinery/door/window{dir = 2; name = "AI Core Door"; req_access = list(109)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "wQ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "wR" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "wS" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) @@ -1196,12 +1196,12 @@ "wZ" = (/obj/structure/table/reinforced,/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,/obj/item/mecha_parts/mecha_equipment/tool/cable_layer,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "xa" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/device/flash,/obj/item/device/flash,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "xb" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/hand_tele,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) -"xc" = (/obj/machinery/door/airlock/centcom{name = "Armory Special Operations"; opacity = 1; req_access_txt = "103"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) -"xd" = (/obj/machinery/door/airlock/centcom{name = "Engineering Special Operations"; opacity = 1; req_access_txt = "103"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) -"xe" = (/obj/machinery/porta_turret{anchored = 0; check_records = 0; enabled = 0; req_one_access = list(103); req_one_access_txt = "103"; use_power = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) +"xc" = (/obj/machinery/door/airlock/centcom{name = "Armory Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) +"xd" = (/obj/machinery/door/airlock/centcom{name = "Engineering Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) +"xe" = (/obj/machinery/porta_turret{anchored = 0; check_records = 0; enabled = 0; req_one_access = list(103); req_one_access = list(103); use_power = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "xf" = (/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops) -"xg" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access_txt = "103"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/specops) -"xh" = (/obj/machinery/door/airlock/centcom{name = "Bridge"; opacity = 1; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"xg" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/specops) +"xh" = (/obj/machinery/door/airlock/centcom{name = "Bridge"; opacity = 1; req_access = list(109)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "xi" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "xj" = (/obj/machinery/door/airlock/centcom{name = "Courthouse"; opacity = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) "xk" = (/turf/space,/area/centcom) @@ -1218,7 +1218,7 @@ "xv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) "xw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) "xx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) -"xy" = (/obj/machinery/door/airlock/centcom{name = "Creed's Office"; opacity = 1; req_access_txt = "108"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) +"xy" = (/obj/machinery/door/airlock/centcom{name = "Creed's Office"; opacity = 1; req_access = list(108)},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) "xz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) "xA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) "xB" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) @@ -1230,8 +1230,8 @@ "xH" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT0"; name = "Launch Bay #0"; p_open = 0},/turf/unsimulated/floor{name = "plating"},/area/centcom) "xI" = (/obj/machinery/mass_driver{dir = 8; id = "ASSAULT0"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom) "xJ" = (/obj/machinery/camera{c_tag = "Assault Armor South"; dir = 1; network = list("ERT")},/turf/unsimulated/floor{icon_state = "loadingarea"; dir = 8},/area/centcom) -"xK" = (/obj/machinery/door/airlock/centcom{name = "Special Operations Mechbay "; opacity = 1; req_access_txt = "103"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) -"xL" = (/obj/machinery/door/airlock/centcom{name = "Special Operations Command"; opacity = 1; req_access_txt = "103"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) +"xK" = (/obj/machinery/door/airlock/centcom{name = "Special Operations Mechbay "; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) +"xL" = (/obj/machinery/door/airlock/centcom{name = "Special Operations Command"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "xM" = (/obj/structure/sign/redcross{pixel_y = -32},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "xN" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "xO" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops) @@ -1247,7 +1247,7 @@ "xY" = (/obj/machinery/camera{c_tag = "Jury Room"; network = list("thunder"); pixel_x = 10},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) "xZ" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) "ya" = (/obj/structure/table/reinforced,/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/item/mecha_parts/mecha_equipment/repair_droid,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) -"yb" = (/obj/machinery/door/airlock/centcom{name = "Medical Special Operations"; opacity = 1; req_access_txt = "103"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) +"yb" = (/obj/machinery/door/airlock/centcom{name = "Medical Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "yc" = (/obj/machinery/autolathe{desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; hacked = 1; name = "Unlocked Autolathe"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "yd" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "ye" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/donut_box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) @@ -1274,7 +1274,7 @@ "yz" = (/obj/machinery/chem_dispenser/meds,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "yA" = (/obj/machinery/chem_master,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "yB" = (/obj/structure/table/rack,/obj/item/weapon/storage/secure/briefcase,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/backpack/satchel,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) -"yC" = (/obj/machinery/telecomms/allinone{intercept = 1},/obj/machinery/door/window/northright{name = "Telecoms Mainframe"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"yC" = (/obj/machinery/telecomms/allinone{intercept = 1},/obj/machinery/door/window/northright{name = "Telecoms Mainframe"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "yD" = (/obj/structure/closet/crate/medical,/obj/item/weapon/circular_saw,/obj/item/weapon/surgicaldrill,/obj/item/weapon/bonegel{pixel_x = 4; pixel_y = 3},/obj/item/weapon/bonesetter,/obj/item/weapon/scalpel,/obj/item/weapon/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/hemostat{pixel_y = 4},/obj/item/weapon/cautery{pixel_y = 4},/obj/item/weapon/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/stack/nanopaste,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/surgical,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "yE" = (/obj/item/weapon/mop,/obj/structure/mopbucket,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "yF" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket{amount_per_transfer_from_this = 50},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) @@ -1296,13 +1296,13 @@ "yV" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/control) "yW" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "yX" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) -"yY" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_centcom_dock"; name = "docking port controller"; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "103"; tag_door = "specops_centcom_dock_door"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) +"yY" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_centcom_dock"; name = "docking port controller"; pixel_x = 0; pixel_y = -25; req_one_access = list(103); tag_door = "specops_centcom_dock_door"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "yZ" = (/obj/structure/table/rack,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "za" = (/obj/structure/table/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/weapon/melee/energy/axe,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "zb" = (/obj/structure/table/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/weapon/melee/energy/axe,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "zc" = (/obj/structure/table/reinforced,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "zd" = (/obj/machinery/telecomms/relay/preset/centcom,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) -"ze" = (/obj/machinery/door/airlock/centcom{name = "Holding Cell"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"ze" = (/obj/machinery/door/airlock/centcom{name = "Holding Cell"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "zf" = (/obj/structure/table,/obj/item/device/assembly/signaler,/obj/item/weapon/handcuffs,/obj/item/weapon/melee/classic_baton,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/control) "zg" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/firstaid/o2,/obj/item/weapon/storage/firstaid/regular,/obj/item/device/flash,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/device/flash,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/pill_bottle/antitox,/obj/item/weapon/storage/pill_bottle/kelotane,/obj/item/weapon/storage/pill_bottle/kelotane,/obj/item/weapon/storage/pill_bottle/antitox,/obj/item/weapon/storage/pill_bottle/kelotane,/obj/item/weapon/storage/firstaid/adv,/obj/item/weapon/storage/firstaid/adv,/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "zh" = (/obj/machinery/iv_drip,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) @@ -1321,12 +1321,12 @@ "zu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor,/area/centcom/control) "zv" = (/obj/machinery/computer/secure_data,/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/centcom/control) "zw" = (/obj/item/weapon/stool{pixel_y = 8},/turf/unsimulated/floor{tag = "icon-red (EAST)"; icon_state = "red"; dir = 4},/area/centcom/control) -"zx" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"zx" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "zy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor,/area/centcom/control) "zz" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space,/area/space) "zA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) "zB" = (/turf/unsimulated/floor{icon_state = "loadingarea"},/area/centcom/specops) -"zC" = (/obj/structure/table/woodentable{dir = 10},/obj/machinery/door_control{name = "Spec Ops Ready Room"; desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; pixel_y = 15; req_access_txt = "11"; id = "CREED"},/obj/machinery/door_control{name = "Mech Storage"; desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; pixel_y = 0; req_access_txt = "11"; id = "ASSAULT"},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) +"zC" = (/obj/structure/table/woodentable{dir = 10},/obj/machinery/door_control{name = "Spec Ops Ready Room"; desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; pixel_y = 15; req_access = list(11); id = "CREED"},/obj/machinery/door_control{name = "Mech Storage"; desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; pixel_y = 0; req_access = list(11); id = "ASSAULT"},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "zD" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "zE" = (/obj/machinery/computer/pod{id = "NTrasen"; name = "Hull Door Control"},/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "zF" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/centcom/control) @@ -1338,7 +1338,7 @@ "zL" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) "zM" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"; dir = 4},/turf/space,/area/shuttle/specops/centcom) "zN" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/specops/centcom) -"zO" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_shuttle_port_hatch"; locked = 1; name = "Port Docking Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"zO" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_shuttle_port_hatch"; locked = 1; name = "Port Docking Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "zP" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/specops/centcom) "zQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/unsimulated/floor,/area/centcom/control) "zR" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/escape/centcom) @@ -1351,24 +1351,24 @@ "zY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/turf/unsimulated/floor,/area/shuttle/specops/centcom) "zZ" = (/obj/machinery/computer/security/telescreen{desc = ""; name = "Spec. Ops. Monitor"; network = list("ERT"); pixel_y = 30},/obj/machinery/computer/shuttle_control/specops,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "Aa" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"Ab" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_port"; name = "port docking hatch controller"; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "specops_shuttle_port_hatch"},/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"Ab" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_port"; name = "port docking hatch controller"; pixel_x = 0; pixel_y = 25; tag_door = "specops_shuttle_port_hatch"},/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "Ac" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "Ad" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"Ae" = (/obj/machinery/door/airlock/glass_security{name = "Holding Cell"; req_access_txt = "2"},/turf/unsimulated/floor,/area/centcom/control) +"Ae" = (/obj/machinery/door/airlock/glass_security{name = "Holding Cell"; req_access = list(2)},/turf/unsimulated/floor,/area/centcom/control) "Af" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) "Ag" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT"; name = "Assault Weapon Storage"; p_open = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) -"Ah" = (/obj/machinery/door/airlock/centcom{name = "Arrivals Processing"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"Ah" = (/obj/machinery/door/airlock/centcom{name = "Arrivals Processing"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "Ai" = (/turf/simulated/shuttle/wall{icon_state = "swallc4"},/area/shuttle/escape/centcom) "Aj" = (/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor{icon_state = "carpet11-12"; dir = 4},/area/holodeck/source_courtroom) "Ak" = (/turf/simulated/floor/holofloor{icon_state = "carpet15-15"; dir = 4},/area/holodeck/source_courtroom) "Al" = (/turf/simulated/shuttle/wall{icon_state = "swallc3"},/area/shuttle/escape/centcom) "Am" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"An" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_fore"; name = "forward docking hatch controller"; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "specops_shuttle_fore_hatch"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"Ao" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_shuttle_fore_hatch"; locked = 1; name = "Forward Docking Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/plating,/area/shuttle/specops/centcom) +"An" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_fore"; name = "forward docking hatch controller"; pixel_x = 0; pixel_y = -25; tag_door = "specops_shuttle_fore_hatch"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"Ao" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_shuttle_fore_hatch"; locked = 1; name = "Forward Docking Hatch"; req_access = list(13)},/turf/simulated/shuttle/plating,/area/shuttle/specops/centcom) "Ap" = (/obj/structure/bed,/obj/item/weapon/bedsheet/red,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/centcom/control) "Aq" = (/turf/unsimulated/floor{tag = "icon-red (EAST)"; icon_state = "red"; dir = 4},/area/centcom/control) -"Ar" = (/obj/machinery/door/airlock/glass_security{name = "Holding Cell"; req_access_txt = "2"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/ferry) -"As" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Arrivals Processing"; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"Ar" = (/obj/machinery/door/airlock/glass_security{name = "Holding Cell"; req_access = list(2)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/ferry) +"As" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Arrivals Processing"; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "At" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom) "Au" = (/obj/machinery/door/window/holowindoor{dir = 1; name = "Jury Box"},/turf/simulated/floor/holofloor{icon_state = "carpet10-8"; dir = 4},/area/holodeck/source_courtroom) "Av" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) @@ -1377,7 +1377,7 @@ "Ay" = (/obj/machinery/computer/prisoner{name = "Implant Management"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "Az" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "AA" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/specops/centcom) -"AB" = (/obj/structure/bed/chair/office/dark,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "CentComPort"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"AB" = (/obj/structure/bed/chair/office/dark,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "CentComPort"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "AC" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) "AD" = (/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "AE" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"; dir = 4},/turf/space,/area/shuttle/specops/centcom) @@ -1386,7 +1386,7 @@ "AH" = (/turf/unsimulated/wall,/area/centcom/ferry) "AI" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT3"; name = "Launch Bay #3"; p_open = 0},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) "AJ" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/computer/skills{icon_state = "medlaptop"; pixel_x = 3; pixel_y = 4},/obj/structure/window/reinforced,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"AK" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/door/window/southright{name = "Arrivals Processing"; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"AK" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/door/window/southright{name = "Arrivals Processing"; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "AL" = (/obj/structure/bed/chair/holochair,/turf/simulated/floor/holofloor{icon_state = "dark"},/area/holodeck/source_courtroom) "AM" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "AN" = (/obj/structure/window/reinforced/holowindow{dir = 1},/obj/structure/window/reinforced/holowindow{dir = 8},/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor{icon_state = "carpet6-2"; dir = 4},/area/holodeck/source_courtroom) @@ -1394,15 +1394,15 @@ "AP" = (/obj/machinery/atm{pixel_x = -26},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) "AQ" = (/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control) "AR" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area/shuttle/escape/centcom) -"AS" = (/obj/machinery/door/airlock/glass_command{name = "Escape Shuttle Cockpit"; req_access_txt = "19"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"AS" = (/obj/machinery/door/airlock/glass_command{name = "Escape Shuttle Cockpit"; req_access = list(19)},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "AT" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/shuttle/escape/centcom) "AU" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape/centcom) "AV" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/ferry) "AW" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) "AX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) "AY" = (/turf/unsimulated/floor{icon_state = "warnplate"; dir = 8},/area/centcom/ferry) -"AZ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_shuttle_bay"; name = "shuttle bay controller"; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "centcom_shuttle_bay_door"},/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) -"Ba" = (/obj/machinery/computer/shuttle_control{req_access = null; req_access_txt = "101"; shuttle_tag = "Centcom"},/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) +"AZ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_shuttle_bay"; name = "shuttle bay controller"; pixel_x = 0; pixel_y = 25; tag_door = "centcom_shuttle_bay_door"},/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) +"Ba" = (/obj/machinery/computer/shuttle_control{req_access = list(101); shuttle_tag = "Centcom"},/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) "Bb" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) "Bc" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/ferry) "Bd" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/control) @@ -1423,11 +1423,11 @@ "Bs" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/space,/area/shuttle/transport1/centcom) "Bt" = (/obj/machinery/door/airlock/external{frequency = 1380; glass = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_bay_door"; locked = 1; name = "Transport Airlock"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/ferry) "Bu" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Bv" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access_txt = "2"},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) +"Bv" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access = list(2)},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) "Bw" = (/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) "Bx" = (/obj/structure/window/reinforced/holowindow,/obj/machinery/door/window/holowindoor{dir = 1; name = "Court Reporter's Box"},/obj/structure/bed/chair/holochair,/turf/simulated/floor/holofloor{icon_state = "dark"},/area/holodeck/source_courtroom) "By" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "swall_floor_f9"},/area/shuttle/transport1/centcom) -"Bz" = (/obj/machinery/computer/shuttle_control{req_access = null; req_access_txt = "101"; shuttle_tag = "Centcom"},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"Bz" = (/obj/machinery/computer/shuttle_control{req_access = list(101); shuttle_tag = "Centcom"},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "BA" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "swall_floor_f5"},/area/shuttle/transport1/centcom) "BB" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/transport1/centcom) "BC" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) @@ -1440,7 +1440,7 @@ "BJ" = (/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "BK" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "BL" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"BM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"BM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "BN" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/unsimulated/wall,/area/centcom/ferry) "BO" = (/obj/machinery/door/airlock/external{name = "Arrivals Bar Airlock"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/ferry) "BP" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "greencorner"; dir = 4},/area/centcom/control) @@ -1452,7 +1452,7 @@ "BV" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/escape/centcom) "BW" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/transport1/centcom) "BX" = (/turf/simulated/shuttle/wall{dir = 1; icon_state = "swall_floor_f10"},/area/shuttle/transport1/centcom) -"BY" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_shuttle"; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "centcom_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"BY" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_shuttle"; pixel_x = 0; pixel_y = -25; tag_door = "centcom_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "BZ" = (/turf/simulated/shuttle/wall{dir = 8; icon_state = "swall_floor_f6"},/area/shuttle/transport1/centcom) "Ca" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "Cb" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/shuttle/transport1/centcom) @@ -1467,9 +1467,9 @@ "Ck" = (/obj/machinery/door/airlock/glass{name = "Arrivals Processing"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) "Cl" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) "Cm" = (/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/evac) -"Cn" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_dock_airlock"; locked = 1; name = "Arrivals Airlock"; req_access_txt = "13"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/evac) +"Cn" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_dock_airlock"; locked = 1; name = "Arrivals Airlock"; req_access = list(13)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/evac) "Co" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/evac) -"Cp" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "shuttle_dock_north_mech"; pixel_y = -19},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"Cp" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "shuttle_dock_north_mech"; pixel_y = -19},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "Cq" = (/obj/structure/table/woodentable/holotable,/obj/structure/window/reinforced/holowindow,/turf/simulated/floor/holofloor{icon_state = "dark"},/area/holodeck/source_courtroom) "Cr" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Cs" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/transport1/centcom) @@ -1491,7 +1491,7 @@ "CI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) "CJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) "CK" = (/turf/unsimulated/floor{icon_state = "warning"},/area/centcom/evac) -"CL" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_dock"; name = "docking port controller"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "centcom_dock_airlock"},/turf/unsimulated/floor{dir = 6; icon_state = "warning"},/area/centcom/evac) +"CL" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_dock"; name = "docking port controller"; pixel_x = 25; pixel_y = 0; req_one_access = list(13); tag_door = "centcom_dock_airlock"},/turf/unsimulated/floor{dir = 6; icon_state = "warning"},/area/centcom/evac) "CM" = (/obj/structure/window/shuttle{icon_state = "window3"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) "CN" = (/turf/unsimulated/wall,/area/centcom/holding) "CO" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) @@ -1536,11 +1536,11 @@ "DB" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/holding) "DC" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "DD" = (/obj/machinery/door/airlock/glass{name = "Arrivals Processing"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) -"DE" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "shuttle_dock_south_mech"; pixel_y = 19},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"DE" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "shuttle_dock_south_mech"; pixel_y = 19},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "DF" = (/obj/item/weapon/inflatable_duck,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/ferry) "DG" = (/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/turf/unsimulated/floor{tag = "icon-siding4"; name = "plating"; icon_state = "siding4"},/area/centcom/holding) "DH" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) -"DI" = (/obj/machinery/door/airlock/glass_medical{name = "Arrivals Medbay"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) +"DI" = (/obj/machinery/door/airlock/glass_medical{name = "Arrivals Medbay"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "DJ" = (/turf/simulated/floor/holofloor{icon_state = "carpet9-4"; dir = 4},/area/holodeck/source_theatre) "DK" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "carpet1-0"},/area/holodeck/source_theatre) "DL" = (/turf/unsimulated/beach/sand{tag = "icon-desert1"; icon_state = "desert1"},/area/centcom/ferry) @@ -1554,7 +1554,7 @@ "DT" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "DU" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT"; name = "Assault Armor Storage"; p_open = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "DV" = (/turf/unsimulated/floor{icon_state = "white"},/area/centcom/holding) -"DW" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 0; pixel_y = 29; req_access_txt = "0"},/turf/unsimulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/centcom/holding) +"DW" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 0; pixel_y = 29},/turf/unsimulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/centcom/holding) "DX" = (/obj/structure/bed/roller,/turf/unsimulated/floor{dir = 4; icon_state = "whitegreenfull"},/area/centcom/holding) "DY" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "DZ" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) @@ -1573,7 +1573,7 @@ "Em" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape/transit) "En" = (/turf/space/transit/east/shuttlespace_ew10,/area/shuttle/escape_pod5/transit) "Eo" = (/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/obj/item/weapon/inflatable_duck,/turf/unsimulated/floor{tag = "icon-siding4"; name = "plating"; icon_state = "siding4"},/area/centcom/holding) -"Ep" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) +"Ep" = (/obj/structure/closet/secure_closet/bar{req_access = list(25)},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) "Eq" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/book/manual/barman_recipes,/obj/item/weapon/reagent_containers/glass/rag,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) "Er" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/chem_dispenser/beer,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) "Es" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/chem_dispenser/soda,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) @@ -1594,7 +1594,7 @@ "EH" = (/turf/unsimulated/wall,/area/tdome) "EI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/tdome) "EJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/tdome) -"EK" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) +"EK" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "EL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/tdome) "EM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/tdome) "EN" = (/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor{icon_state = "carpet13-5"; dir = 4},/area/holodeck/source_courtroom) @@ -1633,7 +1633,7 @@ "Fu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/shuttle/plating,/area/centcom/holding) "Fv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/tdome) "Fw" = (/turf/unsimulated/floor{tag = "icon-whitehall (EAST)"; icon_state = "whitehall"; dir = 4},/area/centcom/holding) -"Fx" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access_txt = "45"},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/holding) +"Fx" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access = list(45)},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/holding) "Fy" = (/turf/unsimulated/floor{dir = 4; icon_state = "whitegreen"},/area/centcom/holding) "Fz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/shuttle/plating,/area/centcom/holding) "FA" = (/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/tdome) @@ -1642,7 +1642,7 @@ "FD" = (/turf/unsimulated/floor{tag = "icon-whitehall (NORTHEAST)"; icon_state = "whitehall"; dir = 5},/area/centcom/holding) "FE" = (/obj/machinery/optable,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/holding) "FF" = (/turf/unsimulated/floor{tag = "icon-whitehall (NORTHWEST)"; icon_state = "whitehall"; dir = 9},/area/centcom/holding) -"FG" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 28; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-whitecorner (NORTH)"; icon_state = "whitecorner"; dir = 1},/area/centcom/holding) +"FG" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 28},/turf/unsimulated/floor{tag = "icon-whitecorner (NORTH)"; icon_state = "whitecorner"; dir = 1},/area/centcom/holding) "FH" = (/obj/structure/table,/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/turf/unsimulated/floor{dir = 4; icon_state = "whitegreen"},/area/centcom/holding) "FI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/shuttle/plating,/area/centcom/holding) "FJ" = (/turf/unsimulated/floor{icon_state = "red"; dir = 10},/area/tdome) @@ -1660,8 +1660,8 @@ "FV" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/adv{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/turf/unsimulated/floor{dir = 0; icon_state = "whitegreen"},/area/centcom/holding) "FW" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/turf/unsimulated/floor{dir = 0; icon_state = "whitegreen"},/area/centcom/holding) "FX" = (/obj/structure/table,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/unsimulated/floor{dir = 6; icon_state = "whitegreen"},/area/centcom/holding) -"FY" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) -"FZ" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"FY" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) +"FZ" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) "Ga" = (/obj/structure/closet/secure_closet/bar,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "Gb" = (/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "Gc" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) @@ -1719,12 +1719,12 @@ "Hc" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor,/area/tdome) "Hd" = (/obj/effect/overlay/palmtree_l,/turf/unsimulated/beach/sand,/area/beach) "He" = (/obj/effect/overlay/palmtree_r,/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/beach) -"Hf" = (/obj/machinery/door/airlock/command{name = "Thunderdome Administration"; req_access = null; req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) +"Hf" = (/obj/machinery/door/airlock/command{name = "Thunderdome Administration"; req_access = list(102)},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "Hg" = (/obj/machinery/door/blast/regular{id = "thunderdomeaxe"; name = "Axe Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "Hh" = (/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/beach) "Hi" = (/turf/unsimulated/floor{icon_state = "redcorner"; dir = 8},/area/tdome) "Hj" = (/obj/structure/table/rack,/obj/item/weapon/kitchenknife/ritual,/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) -"Hk" = (/obj/machinery/door/airlock/command{name = "Thunderdome Administration"; req_access = null; req_access_txt = "102"},/turf/simulated/floor,/area/tdome) +"Hk" = (/obj/machinery/door/airlock/command{name = "Thunderdome Administration"; req_access = list(102)},/turf/simulated/floor,/area/tdome) "Hl" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor,/area/tdome) "Hm" = (/obj/structure/table/rack,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "Hn" = (/turf/unsimulated/floor{icon_state = "greencorner"},/area/tdome) @@ -1842,14 +1842,14 @@ "Jv" = (/turf/unsimulated/wall/fakeglass,/area/wizard_station) "Jw" = (/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) "Jx" = (/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) -"Jy" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_west_control"; req_one_access_txt = "150"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox/station) -"Jz" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_northwest_lock"; locked = 1; req_access_txt = "150"; req_one_access = null; req_one_access_txt = "0"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) +"Jy" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_west_control"; req_one_access = list(150)},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox/station) +"Jz" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_northwest_lock"; locked = 1; req_access = list(150)},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "JA" = (/obj/machinery/door_control{id = "skipjack"; pixel_y = 24},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "JB" = (/obj/effect/landmark{name = "voxstart"},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "JC" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "JD" = (/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) -"JE" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_northeast_lock"; locked = 1; req_access_txt = "150"; req_one_access = null; req_one_access_txt = "0"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) -"JF" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_east_control"; req_access_txt = "150"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox/station) +"JE" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_northeast_lock"; locked = 1; req_access = list(150)},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) +"JF" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_east_control"; req_access = list(150)},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox/station) "JG" = (/obj/structure/table/woodentable,/obj/item/device/megaphone,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "JH" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/donut_box,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "JI" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) @@ -1865,15 +1865,15 @@ "JS" = (/obj/structure/table/reinforced,/obj/item/robot_parts/head,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/wizard_station) "JT" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/wizard_station) "JU" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) -"JV" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_west_vent"; tag_exterior_door = "vox_northwest_lock"; frequency = 1331; id_tag = "vox_west_control"; tag_interior_door = "vox_southwest_lock"; pixel_x = 24; req_access_txt = "150"; tag_chamber_sensor = "vox_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) +"JV" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_west_vent"; tag_exterior_door = "vox_northwest_lock"; frequency = 1331; id_tag = "vox_west_control"; tag_interior_door = "vox_southwest_lock"; pixel_x = 24; req_access = list(150); tag_chamber_sensor = "vox_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "JW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{dir = 2; id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) -"JX" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_east_vent"; tag_exterior_door = "vox_northeast_lock"; frequency = 1331; id_tag = "vox_east_control"; tag_interior_door = "vox_southeast_lock"; pixel_x = -24; req_access_txt = "150"; tag_chamber_sensor = "vox_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) +"JX" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_east_vent"; tag_exterior_door = "vox_northeast_lock"; frequency = 1331; id_tag = "vox_east_control"; tag_interior_door = "vox_southeast_lock"; pixel_x = -24; req_access = list(150); tag_chamber_sensor = "vox_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "JY" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) -"JZ" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_southwest_lock"; locked = 1; req_access_txt = "150"; req_one_access = null; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) -"Ka" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_west_control"; req_one_access_txt = "150"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox/station) -"Kb" = (/obj/machinery/door/airlock/hatch{req_access_txt = "150"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) -"Kc" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_east_control"; req_one_access_txt = "150"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox/station) -"Kd" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_southeast_lock"; locked = 1; req_access_txt = "150"; req_one_access = null; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) +"JZ" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_southwest_lock"; locked = 1; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) +"Ka" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_west_control"; req_one_access = list(150)},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox/station) +"Kb" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) +"Kc" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_east_control"; req_one_access = list(150)},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox/station) +"Kd" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_southeast_lock"; locked = 1; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "Ke" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/wizard_station) "Kf" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/wizard_station) "Kg" = (/turf/unsimulated/wall/fakeglass{dir = 1; icon_state = "fakewindows"},/area/wizard_station) @@ -1931,7 +1931,7 @@ "Lg" = (/obj/structure/table/rack,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/grenade_launcher,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/rcd,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/chem_dispenser/injector,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "Lh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "Li" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) -"Lj" = (/obj/machinery/door/airlock/hatch{req_access_txt = "150"; req_one_access = null; req_one_access_txt = "0"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) +"Lj" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "Lk" = (/obj/item/clothing/head/bowler,/obj/item/weapon/broken_bottle,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "Ll" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "Lm" = (/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) @@ -1944,7 +1944,7 @@ "Lt" = (/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50,/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "Lu" = (/turf/unsimulated/floor{tag = "icon-ironsand7"; icon_state = "ironsand7"},/turf/unsimulated/floor{tag = "icon-asteroid7"; name = "plating"; icon_state = "asteroid7"},/area/wizard_station) "Lv" = (/turf/unsimulated/floor{tag = "icon-ironsand12"; icon_state = "ironsand12"},/turf/unsimulated/floor{tag = "icon-asteroid2"; name = "plating"; icon_state = "asteroid2"},/area/wizard_station) -"Lw" = (/obj/structure/closet/secure_closet/medical_wall{pixel_y = 0; req_access = null; req_access_txt = "150"},/obj/item/weapon/surgicaldrill,/obj/item/clothing/gloves/latex,/obj/item/clothing/mask/surgical,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) +"Lw" = (/obj/structure/closet/secure_closet/medical_wall{pixel_y = 0; req_access = list(150)},/obj/item/weapon/surgicaldrill,/obj/item/clothing/gloves/latex,/obj/item/clothing/mask/surgical,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) "Lx" = (/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "Ly" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/handcuffs,/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/night{pixel_x = -1; pixel_y = -3},/obj/item/clothing/glasses/night{pixel_x = -1; pixel_y = -3},/obj/item/clothing/glasses/night{pixel_x = -1; pixel_y = -3},/obj/item/clothing/glasses/night,/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "Lz" = (/turf/simulated/floor/holofloor{icon_state = "carpet7-3"; dir = 4},/area/holodeck/source_theatre) @@ -1997,7 +1997,7 @@ "Nk" = (/obj/machinery/computer/shuttle_control/emergency,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Nl" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Nm" = (/obj/machinery/computer/med_data,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Nn" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_shuttle"; pixel_x = 8; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "escape_shuttle_hatch"},/obj/machinery/camera{c_tag = "Shuttle Bridge West"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"Nn" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_shuttle"; pixel_x = 8; pixel_y = 25; req_one_access = list(13); tag_door = "escape_shuttle_hatch"},/obj/machinery/camera{c_tag = "Shuttle Bridge West"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "No" = (/obj/machinery/status_display{pixel_y = 30},/obj/structure/table,/obj/machinery/camera{c_tag = "Shuttle Bridge East"},/obj/item/weapon/storage/firstaid/toxin,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "Np" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "Nq" = (/obj/machinery/hologram/holopad,/turf/unsimulated/floor{dir = 9; icon_state = "whitegreen"},/area/centcom/holding) @@ -2011,7 +2011,7 @@ "Ny" = (/obj/machinery/hologram/holopad,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) "Nz" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/machinery/camera{c_tag = "Crescent Bar East"; dir = 4},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) "NA" = (/obj/machinery/hologram/holopad,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"NB" = (/obj/machinery/porta_turret{anchored = 0; check_records = 0; enabled = 0; req_one_access = list(103); req_one_access_txt = "103"; use_power = 0},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/evac) +"NB" = (/obj/machinery/porta_turret{anchored = 0; check_records = 0; enabled = 0; req_one_access = list(103); req_one_access = list(103); use_power = 0},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/evac) "NC" = (/obj/machinery/status_display{pixel_y = -30},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "ND" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "NE" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) @@ -2022,7 +2022,7 @@ "NJ" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "NK" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/wrench,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "NL" = (/obj/structure/closet/hydrant{pixel_x = -30; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"NM" = (/obj/machinery/door/airlock/glass_medical{name = "Escape Shuttle Infirmary"; req_access_txt = "5"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"NM" = (/obj/machinery/door/airlock/glass_medical{name = "Escape Shuttle Infirmary"; req_access = list(5)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "NN" = (/obj/machinery/door/airlock/glass_mining{name = "Shuttle Cargo"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) "NO" = (/obj/machinery/camera{c_tag = "Crescent Bar West"; dir = 4},/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/ferry) "NP" = (/obj/structure/bed/roller,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) @@ -2030,7 +2030,7 @@ "NR" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "NS" = (/obj/machinery/recharge_station,/obj/machinery/camera{c_tag = "Shuttle East Storage"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) "NT" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"NU" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0; req_access_txt = "0"},/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"NU" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "NV" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "NW" = (/obj/machinery/camera{c_tag = "Shuttle Medical"; dir = 4},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "NX" = (/obj/structure/closet/crate/freezer/rations,/obj/machinery/camera{c_tag = "Shuttle West Storage"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) @@ -2038,7 +2038,7 @@ "NZ" = (/obj/structure/undies_wardrobe,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "Oa" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) "Ob" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/evac) - + (1,1,1) = {" aaabacadaeafagahaaaiajakalamanaoagafajacadahakaeamaiaoalahajeEapaqarasatauavawaxayazaAaBaCaDaEaFaGaHaIaJaKawaxayazaAaBaCaDaEaFaLaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaNaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaQ ajaRaSaTaUaVaWaXaYaZbabbbcbdbebfaWaVbaaSaTaXbbaUbdaZbfbcaXbaabatauavbgbhbibjaAbkblbmapaqarasatauavbgbhbibjbnbkblbmapaqarasataJaLaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMbobpbpbpbCbpbpbpbpbpbpbrbsbtbsbtbsbsbtbsbtbsbrbubqbqbqbqbqbqbqbqbqbreVeUeSeSeSeSeSeSeSeSbrbwbwbwbwbwbwbwbwbwbwbrbxbxbxbxbxbxbxbxbxbxbreReQePbybzbzbzbzbzbAbB diff --git a/maps/exodus-3.dmm b/maps/exodus-3.dmm index b1005c80a1..ccc0a546e5 100644 --- a/maps/exodus-3.dmm +++ b/maps/exodus-3.dmm @@ -170,7 +170,7 @@ "dn" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "do" = (/obj/structure/window/reinforced,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "dp" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/hatch{name = "Telecoms Control Room"; req_access_txt = "61"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) +"dq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/hatch{name = "Telecoms Control Room"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) "dr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/tcommsat/computer) "ds" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/turf/simulated/floor,/area/tcommsat/computer) "dt" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor,/area/tcommsat/computer) @@ -196,9 +196,9 @@ "dN" = (/obj/machinery/atmospherics/unary/freezer{set_temperature = 73; dir = 1; icon_state = "freezer_1"; use_power = 1},/turf/simulated/floor,/area/tcommsat/computer) "dO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/tcommsat/computer) "dP" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/tcommsat/computer) -"dQ" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window/eastleft{req_access_txt = "61"},/obj/machinery/door/window/westleft{req_access_txt = "61"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/tcommsat/chamber) +"dQ" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window/eastleft{req_access = list(61)},/obj/machinery/door/window/westleft{req_access = list(61)},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/tcommsat/chamber) "dR" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/tcommsat/chamber) -"dS" = (/obj/machinery/door/airlock/hatch{name = "Telecoms Lounge"; req_access_txt = "61"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/tcommsat/computer) +"dS" = (/obj/machinery/door/airlock/hatch{name = "Telecoms Lounge"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/tcommsat/computer) "dT" = (/obj/machinery/porta_turret/stationary,/turf/simulated/floor/plating/airless,/area/turret_protected/tcomsat) "dU" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) "dV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/tcommsat/chamber) @@ -206,7 +206,7 @@ "dX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/tcommsat/chamber) "dY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/tcommsat/chamber) "dZ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/tcommsat/chamber) -"ea" = (/obj/machinery/door/airlock/maintenance_hatch{name = "Telecoms Server Access"; req_access_txt = "61"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/tcommsat/chamber) +"ea" = (/obj/machinery/door/airlock/maintenance_hatch{name = "Telecoms Server Access"; req_access = list(61)},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/tcommsat/chamber) "eb" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "ec" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) "ed" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) @@ -263,7 +263,7 @@ "fc" = (/obj/structure/sign/nosmoking_2{pixel_x = 32; pixel_y = 0},/obj/machinery/light{dir = 4},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "fd" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/space,/area/turret_protected/tcomsat) "fe" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"ff" = (/obj/machinery/door/airlock/maintenance_hatch{name = "Telecoms Storage"; req_access_txt = "61"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) +"ff" = (/obj/machinery/door/airlock/maintenance_hatch{name = "Telecoms Storage"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "fg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/turret_protected/tcomsat) "fh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/turret_protected/tcomsat) "fi" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor,/area/turret_protected/tcomsat) @@ -307,12 +307,12 @@ "fU" = (/obj/structure/window/reinforced,/obj/machinery/light{dir = 1},/turf/space,/area/turret_protected/tcomsat) "fV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/space,/area/turret_protected/tcomsat) "fW" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"fX" = (/obj/machinery/door/airlock/hatch{name = "Telecoms West Wing"; req_access_txt = "61"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomfoyer) +"fX" = (/obj/machinery/door/airlock/hatch{name = "Telecoms West Wing"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomfoyer) "fY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/turret_protected/tcomfoyer) "fZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/turret_protected/tcomfoyer) "ga" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor,/area/turret_protected/tcomfoyer) "gb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"gc" = (/obj/machinery/door/airlock/hatch{name = "Telecoms East Wing"; req_access_txt = "61"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomfoyer) +"gc" = (/obj/machinery/door/airlock/hatch{name = "Telecoms East Wing"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomfoyer) "gd" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "ge" = (/obj/machinery/camera{c_tag = "East Wing South"; dir = 8; network = list("Tcomsat")},/turf/space,/area/turret_protected/tcomsat) "gf" = (/obj/machinery/camera{c_tag = "West Wing South"; dir = 4; network = list("Tcomsat")},/turf/space,/area/turret_protected/tcomsat) @@ -324,7 +324,7 @@ "gl" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "warningcorner"; dir = 2},/area/turret_protected/tcomfoyer) "gm" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/turret_protected/tcomfoyer) "gn" = (/turf/simulated/wall/r_wall,/area/tcommsat/entrance) -"go" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/hatch{name = "Telecoms Satellite"; req_access_txt = "61"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/turret_protected/tcomfoyer) +"go" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/hatch{name = "Telecoms Satellite"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/turret_protected/tcomfoyer) "gp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/tcommsat/entrance) "gq" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/tcommsat/entrance) "gr" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/tcommsat/entrance) @@ -343,7 +343,7 @@ "gE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/camera{c_tag = "Power Room East"; dir = 1; network = list("Tcomsat")},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/tcommsat/entrance) "gF" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/tcommsat/entrance) "gG" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) -"gH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/hatch{name = "Telecoms Satellite"; req_access_txt = "61"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/tcommsat/entrance) +"gH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/hatch{name = "Telecoms Satellite"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/tcommsat/entrance) "gI" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/tcommsat/entrance) "gJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/tcommsat/entrance) "gK" = (/obj/machinery/camera{c_tag = "Entrance North"; dir = 2; network = list("Tcomsat")},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/tcommsat/entrance) @@ -357,11 +357,11 @@ "gS" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/tcommsat/entrance) "gT" = (/obj/item/weapon/cell,/turf/simulated/floor,/area/tcommsat/entrance) "gU" = (/obj/structure/closet/malf/suits,/turf/simulated/floor,/area/tcommsat/entrance) -"gV" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor/plating/airless,/area/space) -"gW" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_outer"; locked = 1; name = "External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/tcommsat/entrance) -"gX" = (/obj/machinery/camera/xray{c_tag = "External Airlock"; network = list("Tcomsat")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1381; id_tag = "telecoms_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "telecoms_pump"; tag_exterior_door = "telecoms_outer"; frequency = 1381; id_tag = "telecoms_airlock"; tag_interior_door = "telecoms_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_chamber_sensor = "telecoms_sensor"},/obj/machinery/airlock_sensor{frequency = 1381; id_tag = "telecoms_sensor"; pixel_x = 12; pixel_y = -25},/turf/simulated/floor/plating,/area/tcommsat/entrance) -"gY" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_inner"; locked = 1; name = "External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/entrance) -"gZ" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/tcommsat/entrance) +"gV" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access = list(13)},/turf/simulated/floor/plating/airless,/area/space) +"gW" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_outer"; locked = 1; name = "External Access"; req_access = list(10,13)},/turf/simulated/floor/plating,/area/tcommsat/entrance) +"gX" = (/obj/machinery/camera/xray{c_tag = "External Airlock"; network = list("Tcomsat")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1381; id_tag = "telecoms_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "telecoms_pump"; tag_exterior_door = "telecoms_outer"; frequency = 1381; id_tag = "telecoms_airlock"; tag_interior_door = "telecoms_inner"; pixel_x = 0; pixel_y = -25; req_access = list(13); tag_chamber_sensor = "telecoms_sensor"},/obj/machinery/airlock_sensor{frequency = 1381; id_tag = "telecoms_sensor"; pixel_x = 12; pixel_y = -25},/turf/simulated/floor/plating,/area/tcommsat/entrance) +"gY" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_inner"; locked = 1; name = "External Access"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/entrance) +"gZ" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/tcommsat/entrance) "ha" = (/obj/machinery/bluespace_beacon,/turf/simulated/floor,/area/tcommsat/entrance) "hb" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/turf/simulated/floor,/area/tcommsat/entrance) "hc" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/airless,/area/space) @@ -392,7 +392,7 @@ "hB" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area/AIsattele) "hC" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/AIsattele) "hD" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plating/airless,/area/AIsattele) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/exodus-4.dmm b/maps/exodus-4.dmm index a57d18ae3c..d4349aa130 100644 --- a/maps/exodus-4.dmm +++ b/maps/exodus-4.dmm @@ -10,14 +10,14 @@ "aj" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/floor/plating/airless,/area/constructionsite/bridge) "ak" = (/turf/simulated/floor/airless,/area/space) "al" = (/turf/simulated/floor/plating/airless,/area/space) -"am" = (/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor/airless,/area/constructionsite/bridge) +"am" = (/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access = list(19)},/turf/simulated/floor/airless,/area/constructionsite/bridge) "an" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore) "ao" = (/turf/simulated/floor/airless,/area/constructionsite/hallway/fore) "ap" = (/turf/simulated/wall,/area/constructionsite/hallway/fore) "aq" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore) "ar" = (/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor/airless,/area/constructionsite/hallway/fore) -"as" = (/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor/airless,/area/constructionsite/hallway/fore) -"at" = (/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access_txt = "28"},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore) +"as" = (/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access = list(19)},/turf/simulated/floor/airless,/area/constructionsite/hallway/fore) +"at" = (/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access = list(28)},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore) "au" = (/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore) "av" = (/turf/simulated/wall,/area/space) "aw" = (/turf/simulated/wall,/area/constructionsite/storage) @@ -41,7 +41,7 @@ "aO" = (/obj/structure/table/reinforced,/obj/machinery/camera/autoname,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/random/tech_supply,/turf/simulated/floor,/area/constructionsite/teleporter) "aP" = (/obj/machinery/shieldgen,/obj/structure/window/basic{tag = "icon-window (WEST)"; icon_state = "window"; dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/constructionsite/teleporter) "aQ" = (/obj/machinery/shieldgen,/obj/structure/window/basic{tag = "icon-window (EAST)"; icon_state = "window"; dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/constructionsite/teleporter) -"aR" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access_txt = "16"},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore) +"aR" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access = list(16)},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore) "aS" = (/obj/machinery/portable_atmospherics/canister/air,/obj/structure/window/basic{tag = "icon-window (WEST)"; icon_state = "window"; dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/constructionsite/teleporter) "aT" = (/obj/machinery/portable_atmospherics/canister/air,/obj/structure/window/basic{tag = "icon-window (EAST)"; icon_state = "window"; dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/constructionsite/teleporter) "aU" = (/turf/simulated/floor,/area/constructionsite/teleporter) @@ -67,29 +67,29 @@ "bo" = (/obj/machinery/atmospherics/pipe/simple/hidden/blue{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor,/area/constructionsite/teleporter) "bp" = (/obj/item/device/radio/beacon,/turf/simulated/floor,/area/constructionsite/teleporter) "bq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/blue,/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "constructionsite_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor,/area/constructionsite/teleporter) -"br" = (/obj/machinery/atmospherics/pipe/simple/hidden/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "constructionsite_inner"; locked = 1; req_access_txt = "10"},/turf/simulated/floor,/area/constructionsite/teleporter) -"bs" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "constructionsite_outer"; locked = 1; req_access_txt = "10"},/turf/simulated/floor,/area/constructionsite/teleporter) -"bt" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload"; req_access_txt = "16"},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) -"bu" = (/obj/machinery/atmospherics/pipe/simple/hidden/blue{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/machinery/light/small,/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "constructionsite_airlock"; pixel_x = 0; pixel_y = -25; req_access_txt = "10"; tag_airpump = "constructionsite_pump"; tag_chamber_sensor = "constructionsite_sensor"; tag_exterior_door = "constructionsite_outer"; tag_interior_door = "constructionsite_inner"},/turf/simulated/floor,/area/constructionsite/teleporter) +"br" = (/obj/machinery/atmospherics/pipe/simple/hidden/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "constructionsite_inner"; locked = 1; req_access = list(10)},/turf/simulated/floor,/area/constructionsite/teleporter) +"bs" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "constructionsite_outer"; locked = 1; req_access = list(10)},/turf/simulated/floor,/area/constructionsite/teleporter) +"bt" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload"; req_access = list(16)},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) +"bu" = (/obj/machinery/atmospherics/pipe/simple/hidden/blue{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/machinery/light/small,/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "constructionsite_airlock"; pixel_x = 0; pixel_y = -25; req_access = list(10); tag_airpump = "constructionsite_pump"; tag_chamber_sensor = "constructionsite_sensor"; tag_exterior_door = "constructionsite_outer"; tag_interior_door = "constructionsite_inner"},/turf/simulated/floor,/area/constructionsite/teleporter) "bv" = (/obj/machinery/power/smes/batteryrack{should_be_mapped = 1},/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/constructionsite/teleporter) "bw" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/autolathe,/turf/simulated/floor,/area/constructionsite/teleporter) "bx" = (/obj/structure/window/basic{tag = "icon-window (NORTH)"; icon_state = "window"; dir = 1},/obj/machinery/portable_atmospherics/canister/air/airlock,/obj/machinery/atmospherics/portables_connector{tag = "icon-map_connector (EAST)"; icon_state = "map_connector"; dir = 4},/turf/simulated/floor,/area/constructionsite/teleporter) "by" = (/obj/machinery/atmospherics/pipe/manifold/hidden/blue{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor,/area/constructionsite/teleporter) "bz" = (/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/constructionsite/teleporter) "bA" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/constructionsite/teleporter) -"bB" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = -32; pixel_y = 0},/obj/machinery/access_button/airlock_interior{master_tag = "constructionsite_airlock"; pixel_x = -20; pixel_y = 0; req_access_txt = "10"},/turf/simulated/floor,/area/constructionsite/teleporter) -"bC" = (/obj/machinery/access_button/airlock_exterior{master_tag = "constructionsite_airlock"; pixel_x = 20; pixel_y = 0; req_access_txt = "10"},/turf/simulated/floor/airless,/area/constructionsite/hallway/fore) +"bB" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = -32; pixel_y = 0},/obj/machinery/access_button/airlock_interior{master_tag = "constructionsite_airlock"; pixel_x = -20; pixel_y = 0; req_access = list(10)},/turf/simulated/floor,/area/constructionsite/teleporter) +"bC" = (/obj/machinery/access_button/airlock_exterior{master_tag = "constructionsite_airlock"; pixel_x = 20; pixel_y = 0; req_access = list(10)},/turf/simulated/floor/airless,/area/constructionsite/hallway/fore) "bD" = (/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/machinery/power/port_gen/pacman,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/constructionsite/teleporter) "bE" = (/obj/structure/cable/blue,/obj/machinery/power/port_gen/pacman,/obj/machinery/power/terminal,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/constructionsite/teleporter) "bF" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{id_tag = "constructionsite_vent"},/turf/simulated/floor,/area/constructionsite/teleporter) "bG" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{id_tag = "constructionsite_vent"},/obj/machinery/camera/autoname,/turf/simulated/floor,/area/constructionsite/teleporter) -"bH" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "constructionsite_inner"; locked = 1; req_access_txt = "10"},/turf/simulated/floor,/area/constructionsite/teleporter) +"bH" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "constructionsite_inner"; locked = 1; req_access = list(10)},/turf/simulated/floor,/area/constructionsite/teleporter) "bJ" = (/turf/simulated/floor/airless{tag = "icon-gcircuit"; icon_state = "gcircuit"},/area/constructionsite/ai) "cj" = (/obj/structure/lattice,/turf/space,/area/constructionsite/maintenance) -"ck" = (/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access_txt = "30"},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore) -"cl" = (/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access_txt = "30"},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) -"cm" = (/obj/machinery/door/airlock/highsecurity{name = "Cyborg Station"; req_access_txt = "16"},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) -"cn" = (/obj/machinery/door/airlock/highsecurity{name = "Cyborg Station"; req_access_txt = "16"},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore) +"ck" = (/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access = list(30)},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore) +"cl" = (/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access = list(30)},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) +"cm" = (/obj/machinery/door/airlock/highsecurity{name = "Cyborg Station"; req_access = list(16)},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) +"cn" = (/obj/machinery/door/airlock/highsecurity{name = "Cyborg Station"; req_access = list(16)},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore) "cs" = (/obj/machinery/recharge_station,/turf/simulated/floor/plating/airless,/area/constructionsite/ai) "cI" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/wall,/area/constructionsite/hallway/fore) "cJ" = (/obj/structure/lattice,/turf/space,/area/constructionsite/hallway/fore) @@ -99,7 +99,7 @@ "dm" = (/obj/structure/lattice,/turf/space,/area/constructionsite/hallway/aft) "dy" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/aft) "eb" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/wall,/area/constructionsite/hallway/aft) -"ec" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access_txt = "16"},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/aft) +"ec" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access = list(16)},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/aft) "ed" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/aft) "eZ" = (/turf/simulated/floor/airless{icon_state = "white"},/area/constructionsite/medical) "fa" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/constructionsite/medical) @@ -107,11 +107,11 @@ "fc" = (/turf/simulated/floor/plating/airless,/area/constructionsite/atmospherics) "fd" = (/turf/simulated/floor/airless,/area/constructionsite/atmospherics) "fe" = (/turf/simulated/floor/plating/airless,/area/constructionsite/medical) -"ff" = (/obj/machinery/door/airlock/glass_medical{name = "Medbay"; req_access_txt = "0"; req_one_access_txt = "65;5"},/turf/simulated/wall,/area/constructionsite/medical) +"ff" = (/obj/machinery/door/airlock/glass_medical{name = "Medbay"; req_one_access = list(65,5)},/turf/simulated/wall,/area/constructionsite/medical) "fg" = (/obj/structure/lattice,/turf/space,/area/constructionsite/medical) "fh" = (/turf/space,/area/constructionsite/medical) -"fi" = (/obj/machinery/door/airlock/glass_medical{name = "Medbay"; req_access_txt = "0"; req_one_access_txt = "65;5"},/turf/simulated/wall,/area/constructionsite/hallway/aft) -"fj" = (/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics"; req_access_txt = "24"},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/aft) +"fi" = (/obj/machinery/door/airlock/glass_medical{name = "Medbay"; req_one_access = list(65,5)},/turf/simulated/wall,/area/constructionsite/hallway/aft) +"fj" = (/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics"; req_access = list(24)},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/aft) "fk" = (/turf/space,/area/constructionsite/hallway/aft) "fl" = (/turf/simulated/wall,/area/constructionsite/atmospherics) "fm" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating/airless,/area/constructionsite/atmospherics) @@ -123,7 +123,7 @@ "fs" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/wall,/area/constructionsite/atmospherics) "ft" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "d_o2_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/constructionsite/atmospherics) "fu" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/constructionsite/atmospherics) -"fv" = (/obj/machinery/door/airlock/glass_medical{name = "Medbay"; req_access_txt = "0"; req_one_access_txt = "65;5"},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/aft) +"fv" = (/obj/machinery/door/airlock/glass_medical{name = "Medbay"; req_one_access = list(65,5)},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/aft) "fw" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/airless,/area/constructionsite/atmospherics) "fx" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "d_o2_in"; name = "Oxygen Supply Control"; output_tag = "d_o2_out"; sensors = list("d_o2_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/airless,/area/constructionsite/atmospherics) "fy" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 8; frequency = 1443; icon_state = "map_injector"; id = "d_air_in"; use_power = 1},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/constructionsite/atmospherics) @@ -144,16 +144,16 @@ "fP" = (/turf/space,/area/constructionsite) "fQ" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/floor/plating/airless,/area/constructionsite) "fR" = (/turf/simulated/wall,/area/constructionsite/engineering) -"fS" = (/obj/machinery/door/airlock/maintenance_hatch{icon_state = "door_closed"; locked = 0; name = "Engine Access"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) +"fS" = (/obj/machinery/door/airlock/maintenance_hatch{icon_state = "door_closed"; locked = 0; name = "Engine Access"; req_one_access = list(11,24)},/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) "fT" = (/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) "fU" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) "fV" = (/obj/structure/lattice,/turf/space,/area/constructionsite/engineering) "fW" = (/turf/space,/area/constructionsite/engineering) "fX" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) -"fY" = (/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access_txt = "11"},/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) +"fY" = (/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access = list(11)},/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) "fZ" = (/obj/machinery/power/smes/buildable,/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) "ge" = (/obj/machinery/field_generator,/turf/simulated/floor/plating/airless,/area/space) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/exodus-5.dmm b/maps/exodus-5.dmm index 83cd7aedc1..3a9c10e361 100644 --- a/maps/exodus-5.dmm +++ b/maps/exodus-5.dmm @@ -13,7 +13,7 @@ "am" = (/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) "an" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/hallway) "ao" = (/obj/structure/closet/walllocker/emerglocker/west,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/outpost/research/hallway) -"ap" = (/obj/machinery/door/window/westleft{dir = 1; name = "Sample Preparation Loading"; req_access_txt = "65"},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/outpost/research/chemistry) +"ap" = (/obj/machinery/door/window/westleft{dir = 1; name = "Sample Preparation Loading"; req_access = list(65)},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/outpost/research/chemistry) "aq" = (/obj/structure/table,/obj/item/weapon/storage/box/solution_trays,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/outpost/research/chemistry) "ar" = (/obj/structure/table,/obj/machinery/light{dir = 1},/obj/machinery/reagentgrinder,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) "as" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) @@ -28,7 +28,7 @@ "aB" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/turf/simulated/floor{icon_state = "dark"},/area/outpost/research/analysis) "aC" = (/obj/item/weapon/stool,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/analysis) "aD" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/outpost/research/analysis) -"aE" = (/obj/machinery/door/airlock/research{name = "Spectrometry Lab Sample Preparation"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/analysis) +"aE" = (/obj/machinery/door/airlock/research{name = "Spectrometry Lab Sample Preparation"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/analysis) "aF" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) "aG" = (/turf/simulated/wall/r_wall,/area/outpost/research/hallway) "aH" = (/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/outpost/research/hallway) @@ -50,7 +50,7 @@ "aX" = (/obj/structure/cable/blue,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) "aY" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/hallway) "aZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/hallway) -"ba" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Loading"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/research/lab) +"ba" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Loading"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/research/lab) "bb" = (/turf/simulated/wall/r_wall,/area/outpost/research/lab) "bc" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/outpost/research/lab) "bd" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) @@ -72,7 +72,7 @@ "bt" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rbath"; name = "Kitchen"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/hallway) "bu" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5},/obj/structure/curtain/open/shower,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{icon_state = "showroomfloor"},/area/outpost/research/hallway) "bv" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rbath"; name = "Bathroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/outpost/research/hallway) -"bw" = (/obj/machinery/door_control{id = "rbath"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/outpost/research/hallway) +"bw" = (/obj/machinery/door_control{id = "rbath"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/outpost/research/hallway) "bx" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 2},/turf/simulated/wall/r_wall,/area/outpost/research/chemistry) "by" = (/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/outpost/research/chemistry) "bz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/outpost/research/chemistry) @@ -81,7 +81,7 @@ "bC" = (/turf/simulated/floor/airless{icon_state = "damaged5"},/area/outpost/abandoned) "bD" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/outpost/abandoned) "bE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/outpost/abandoned) -"bF" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Sample Preparation"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) +"bF" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Sample Preparation"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "bG" = (/obj/machinery/artifact_analyser,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/bluegrid,/area/outpost/research/lab) "bH" = (/obj/structure/table,/obj/item/weapon/flame/lighter/random,/obj/item/weapon/crowbar,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) "bI" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -27},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/outpost/research/lab) @@ -96,7 +96,7 @@ "bR" = (/obj/structure/table,/turf/simulated/floor/wood,/area/outpost/research/kitchen) "bS" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/turf/simulated/floor/wood,/area/outpost/research/kitchen) "bT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_x = 32; pixel_y = 0},/obj/structure/lattice,/turf/space,/area/space) -"bU" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Spectrometry Lab"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) +"bU" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Spectrometry Lab"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "bV" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/outpost/abandoned) "bW" = (/obj/item/stack/rods,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/outpost/abandoned) "bX" = (/obj/structure/table,/obj/machinery/camera{c_tag = "Research Outpost Sample Preparation"; dir = 1; network = list("Research","SS13")},/obj/item/weapon/reagent_containers/glass/beaker/water,/obj/item/weapon/reagent_containers/glass/beaker/fuel,/obj/item/weapon/reagent_containers/glass/bottle/toxin,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric{name = "beaker 'sulphuric acid'"},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/outpost/research/chemistry) @@ -104,7 +104,7 @@ "bZ" = (/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/outpost/research/chemistry) "ca" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/outpost/research/chemistry) "cb" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/outpost/research/lab) -"cc" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Sample Preparation"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) +"cc" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Sample Preparation"; req_access = list(65)},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) "cd" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/outpost/research/lab) "ce" = (/obj/machinery/alarm{dir = 2; pixel_y = 25},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/outpost/research/lab) "cf" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{dir = 6; icon_state = "whitepurple"},/area/outpost/research/lab) @@ -130,7 +130,7 @@ "cz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/outpost/research/lab) "cA" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/outpost/research/lab) "cB" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/outpost/research/lab) -"cC" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) +"cC" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access = list(65)},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "cD" = (/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/research/hallway) "cE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/research/hallway) "cF" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/outpost/research/hallway) @@ -138,7 +138,7 @@ "cH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/research/hallway) "cI" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/outpost/research/hallway) "cJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/outpost/research/hallway) -"cK" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) +"cK" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "cL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/outpost/research/lab) "cM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/outpost/research/lab) "cN" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/outpost/research/kitchen) @@ -163,7 +163,7 @@ "dg" = (/obj/structure/extinguisher_cabinet{pixel_x = -25; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/outpost/research/hallway) "dh" = (/obj/machinery/power/emitter{anchored = 1; dir = 4; state = 2},/turf/simulated/floor{icon_state = "delivery"},/area/outpost/research/lab) "di" = (/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) -"dj" = (/obj/machinery/conveyor{dir = 1; id = "anolaser"},/obj/machinery/door/window/westleft{dir = 2; layer = 3.1; name = "laser testing"; req_access_txt = "65"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/outpost/research/lab) +"dj" = (/obj/machinery/conveyor{dir = 1; id = "anolaser"},/obj/machinery/door/window/westleft{dir = 2; layer = 3.1; name = "laser testing"; req_access = list(65)},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/outpost/research/lab) "dk" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "pwall"; dir = 9},/area/shuttle/alien/mine) "dl" = (/turf/simulated/shuttle/wall{icon_state = "pwall"; dir = 1},/area/shuttle/alien/mine) "dm" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/outpost/research/disposal) @@ -172,14 +172,14 @@ "dp" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/turf/simulated/floor/plating,/area/outpost/research/disposal) "dq" = (/turf/simulated/floor/plating/airless/asteroid,/area/outpost/research/disposal) "dr" = (/obj/machinery/mass_driver{dir = 4; id = "research"},/turf/simulated/floor/plating/airless/asteroid,/area/outpost/research/disposal) -"ds" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) +"ds" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access = list(65)},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) "dt" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency{pixel_x = 5; pixel_y = 5},/turf/simulated/floor/plating,/area/outpost/research/disposal) "du" = (/turf/simulated/floor{dir = 4; icon_state = "whiteyellowcorner"},/area/outpost/research/hallway) "dv" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) "dw" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/outpost/research/hallway) "dx" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "dy" = (/obj/machinery/vending/snack,/obj/machinery/light{dir = 4},/turf/simulated/floor/wood,/area/outpost/research/hallway) -"dz" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/research{name = "Anomalous Materials Locker Room"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) +"dz" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/research{name = "Anomalous Materials Locker Room"; req_access = list(65)},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/lab) "dA" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "dB" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/wood,/area/outpost/research/hallway) "dC" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/wood,/area/outpost/research/hallway) @@ -221,8 +221,8 @@ "em" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/outpost/abandoned) "en" = (/obj/structure/window/reinforced{dir = 5},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/wood,/area/outpost/research/medical) "eo" = (/turf/simulated/wall/r_wall,/area/outpost/research/eva) -"ep" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/research/dock) -"eq" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/dock) +"ep" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/research/dock) +"eq" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access = list(65)},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/dock) "er" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/research/dock) "es" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/research/dock) "et" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "pwall"; dir = 5},/area/shuttle/alien/mine) @@ -231,7 +231,7 @@ "ew" = (/obj/structure/sign/science,/turf/simulated/wall,/area/outpost/research/dock) "ex" = (/turf/space,/area/shuttle/research/outpost) "ey" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/research/dock) -"ez" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_outpost_hatch"; locked = 1; name = "Research Outpost Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/outpost/research/dock) +"ez" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_outpost_hatch"; locked = 1; name = "Research Outpost Docking Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/outpost/research/dock) "eA" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall,/area/outpost/research/dock) "eB" = (/turf/simulated/wall/r_wall,/area/outpost/research/anomaly_analysis) "eC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/outpost/research/hallway) @@ -248,7 +248,7 @@ "eN" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/research/hallway) "eO" = (/turf/simulated/floor,/area/outpost/research/hallway) "eP" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/outpost/research/hallway) -"eQ" = (/obj/machinery/door/window/westleft{dir = 8; name = "Locker room"; opacity = 0; req_access_txt = "65"},/turf/simulated/floor,/area/outpost/research/hallway) +"eQ" = (/obj/machinery/door/window/westleft{dir = 8; name = "Locker room"; opacity = 0; req_access = list(65)},/turf/simulated/floor,/area/outpost/research/hallway) "eR" = (/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "eS" = (/obj/structure/extinguisher_cabinet{pixel_x = -25; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/outpost/research/hallway) "eT" = (/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/outpost/abandoned) @@ -273,7 +273,7 @@ "fm" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "fn" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/outpost/research/disposal) "fo" = (/obj/structure/table/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/latex,/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/outpost/research/hallway) -"fp" = (/obj/machinery/door/window/westleft{dir = 4; name = "Monkey Pen"; req_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) +"fp" = (/obj/machinery/door/window/westleft{dir = 4; name = "Monkey Pen"; req_access = list(47)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "fq" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "fr" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/outpost/research/hallway) "fs" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor,/area/outpost/research/hallway) @@ -304,7 +304,7 @@ "fR" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/outpost/research/anomaly_analysis) "fS" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/bluegrid,/area/outpost/research/anomaly_analysis) "fT" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/outpost/research/hallway) -"fU" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Temporary Storage"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/eva) +"fU" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Temporary Storage"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/eva) "fV" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/eva) "fW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "fX" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) @@ -314,11 +314,11 @@ "gb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor,/area/outpost/research/dock) "gc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/dock) "gd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/dock) -"ge" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/dock) +"ge" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/dock) "gf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/dock) "gg" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor,/area/outpost/research/dock) "gh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/outpost/research/dock) -"gi" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_medical{name = "Medbay"; req_access_txt = "0"; req_one_access_txt = "65;5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/medical) +"gi" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_medical{name = "Medbay"; req_one_access = list(65,5)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/medical) "gj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/medical) "gk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/medical) "gl" = (/obj/machinery/conveyor_switch{id = "anotempload"; name = "conveyor switch"; pixel_x = 12; pixel_y = -12},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/eva) @@ -336,20 +336,20 @@ "gx" = (/obj/machinery/camera{c_tag = "Research Outpost Hallway Central"; dir = 4; network = list("Research","SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/outpost/research/hallway) "gy" = (/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "gz" = (/obj/item/stack/rods,/obj/structure/lattice,/turf/space,/area/space) -"gA" = (/obj/structure/closet/secure_closet/xenoarchaeologist{req_access_txt = "47"},/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced,/turf/simulated/floor,/area/outpost/research/hallway) -"gB" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/closet/secure_closet/xenoarchaeologist{req_access_txt = "47"},/obj/structure/window/reinforced,/turf/simulated/floor,/area/outpost/research/hallway) -"gC" = (/obj/machinery/door/window/westleft{dir = 2; name = "Locker room"; opacity = 0; req_access_txt = "65"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/research/hallway) +"gA" = (/obj/structure/closet/secure_closet/xenoarchaeologist{req_access = list(47)},/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced,/turf/simulated/floor,/area/outpost/research/hallway) +"gB" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/closet/secure_closet/xenoarchaeologist{req_access = list(47)},/obj/structure/window/reinforced,/turf/simulated/floor,/area/outpost/research/hallway) +"gC" = (/obj/machinery/door/window/westleft{dir = 2; name = "Locker room"; opacity = 0; req_access = list(65)},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/research/hallway) "gD" = (/obj/structure/closet/secure_closet/scientist,/obj/structure/window/reinforced,/turf/simulated/floor,/area/outpost/research/hallway) "gE" = (/obj/structure/table/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/latex,/obj/structure/window/reinforced,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/outpost/research/hallway) "gF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) -"gG" = (/obj/machinery/door/window/westleft{dir = 2; name = "Monkey Pen"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) +"gG" = (/obj/machinery/door/window/westleft{dir = 2; name = "Monkey Pen"; req_access = list(47)},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "gH" = (/obj/machinery/door/firedoor/border_only{name = "\improper Firelock South"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "gI" = (/obj/machinery/door/firedoor/border_only{name = "\improper Firelock South"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) -"gJ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/maintenance{name = "Maintenance Storage"; req_access_txt = "0"; req_one_access_txt = "12;65"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/outpost/research/hallway) +"gJ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/maintenance{name = "Maintenance Storage"; req_one_access = list(12,65)},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/outpost/research/hallway) "gK" = (/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/outpost/research/hallway) "gL" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/research/anomaly_analysis) "gM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/research/dock) -"gN" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "research_outpost_dock"; pixel_x = 0; pixel_y = 30; req_access_txt = "0"; req_one_access_txt = "13;65"; tag_door = "research_outpost_hatch"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/outpost/research/dock) +"gN" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "research_outpost_dock"; pixel_x = 0; pixel_y = 30; req_one_access = list(13,65); tag_door = "research_outpost_hatch"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/outpost/research/dock) "gO" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/outpost/research/dock) "gP" = (/obj/machinery/computer/shuttle_control/research,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/outpost/research/dock) "gQ" = (/turf/simulated/floor,/area/outpost/research/dock) @@ -380,10 +380,10 @@ "hp" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/camera{c_tag = "Research Outpost Medbay"; dir = 1; network = list("Research","SS13")},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/medical) "hq" = (/obj/machinery/sleeper{dir = 1},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"},/area/outpost/research/medical) "hr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/research/dock) -"hs" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Long Term Storage"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/anomaly_storage) +"hs" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Long Term Storage"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/anomaly_storage) "ht" = (/turf/simulated/wall/r_wall,/area/outpost/research/emergency_storage) "hu" = (/turf/simulated/wall/r_wall,/area/outpost/research/isolation_monitoring) -"hv" = (/obj/machinery/door/airlock/maintenance{name = "Maintenance Storage"; req_access_txt = "0"; req_one_access_txt = "12;65"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/outpost/research/emergency_storage) +"hv" = (/obj/machinery/door/airlock/maintenance{name = "Maintenance Storage"; req_one_access = list(12,65)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/outpost/research/emergency_storage) "hw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/research/isolation_monitoring) "hx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/research/isolation_monitoring) "hy" = (/obj/structure/table,/obj/item/weapon/anobattery{pixel_x = -6; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = -2; pixel_y = -2},/obj/item/weapon/anobattery{pixel_x = 2; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = 6; pixel_y = 6},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/anomaly_analysis) @@ -393,11 +393,11 @@ "hC" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor,/area/outpost/research/anomaly_analysis) "hD" = (/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/outpost/research/anomaly_analysis) "hE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/research/isolation_monitoring) -"hF" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/research{name = "Gas filtering"; req_access_txt = "65"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/outpost/research/power) +"hF" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/research{name = "Gas filtering"; req_access = list(65)},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/outpost/research/power) "hG" = (/turf/simulated/wall/r_wall,/area/outpost/research/power) "hH" = (/obj/machinery/conveyor{dir = 9; id = "anotempload"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/outpost/research/eva) "hI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/research/isolation_monitoring) -"hJ" = (/obj/machinery/door/airlock/research{name = "Anomaly Isolation"; req_access_txt = "65"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) +"hJ" = (/obj/machinery/door/airlock/research{name = "Anomaly Isolation"; req_access = list(65)},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "hK" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/outpost/abandoned) "hL" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/outpost/abandoned) "hM" = (/obj/structure/table/rack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/outpost/abandoned) @@ -430,7 +430,7 @@ "in" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/firealarm{pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway) "io" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/sign/biohazard{pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/outpost/research/hallway) "ip" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 6; icon_state = "whitepurple"},/area/outpost/research/hallway) -"iq" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Exotic Particles Collection"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/research/anomaly_analysis) +"iq" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Exotic Particles Collection"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/research/anomaly_analysis) "ir" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/outpost/research/hallway) "is" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/outpost/research/hallway) "it" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/outpost/research/hallway) @@ -439,7 +439,7 @@ "iw" = (/obj/structure/table,/obj/item/weapon/anodevice{pixel_x = 3; pixel_y = 3},/obj/item/weapon/anodevice,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/anomaly_analysis) "ix" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/outpost/research/anomaly_analysis) "iy" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/research/anomaly_analysis) -"iz" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/external{name = "Access Airlock"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/anomaly_analysis) +"iz" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/external{name = "Access Airlock"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/anomaly_analysis) "iA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/research/anomaly_analysis) "iB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/outpost/abandoned) "iC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/outpost/abandoned) @@ -464,14 +464,14 @@ "iV" = (/turf/simulated/wall,/area/outpost/research/chemistry) "iW" = (/obj/structure/table,/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/outpost/research/chemistry) "iX" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) -"iY" = (/obj/machinery/door_control{id = "rdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/research/hallway) +"iY" = (/obj/machinery/door_control{id = "rdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; specialfunctions = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/research/hallway) "iZ" = (/obj/structure/bed,/obj/item/weapon/bedsheet/brown,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor/carpet,/area/outpost/research/hallway) -"ja" = (/obj/machinery/door_control{id = "rddorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/research/hallway) +"ja" = (/obj/machinery/door_control{id = "rddorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/research/hallway) "jb" = (/obj/structure/table/rack,/obj/item/stack/sheet/metal{amount = 50; pixel_x = 5; pixel_y = 5},/obj/item/stack/sheet/glass{amount = 50},/obj/item/weapon/storage/belt/utility{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/toolbox/emergency{pixel_x = 5; pixel_y = 5},/turf/simulated/floor/plating,/area/outpost/research/chemistry) "jc" = (/obj/structure/table,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/carpet,/area/outpost/research/hallway) "jd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/chemistry) "je" = (/obj/machinery/camera/autoname/research_outpost{dir = 8},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) -"jf" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/maintenance{name = "Auxiliary Storage"; req_access_txt = "0"; req_one_access_txt = "65;12"},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) +"jf" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/maintenance{name = "Auxiliary Storage"; req_one_access = list(65,12)},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) "jg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor,/area/outpost/research/chemistry) "jh" = (/obj/machinery/light/small,/obj/structure/closet/walllocker/emerglocker/north{dir = 1; pixel_y = -32},/turf/simulated/floor/plating,/area/outpost/research/chemistry) "ji" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rdorm2"; name = "Dorm 2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/outpost/research/hallway) @@ -506,18 +506,18 @@ "jL" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/outpost/mining_north) "jM" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/outpost/mining_north) "jN" = (/obj/structure/closet/walllocker/emerglocker/south,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) -"jO" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_north_outpost_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = "10;13"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) -"jP" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_north_outpost_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) +"jO" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_north_outpost_outer"; locked = 1; name = "Mining External Access"; req_access = list(10,13)},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) +"jP" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_north_outpost_inner"; locked = 1; name = "Mining External Access"},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "jQ" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "jR" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/outpost/mining_north) -"jS" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/outpost/mining_north) +"jS" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access = list(54)},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/outpost/mining_north) "jT" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating,/area/outpost/mining_north) "jU" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) -"jV" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_north_outpost_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = 25; req_access_txt = null; req_one_access = list(13,54)},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) +"jV" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_north_outpost_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = 25; ; req_one_access = list(13,54)},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "jW" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "jX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_north) "jY" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_north_outpost_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_north_outpost_pump"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) -"jZ" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "mining_north_outpost_airlock"; pixel_x = 0; pixel_y = 25; req_access_txt = null; tag_airpump = "mining_north_outpost_pump"; tag_chamber_sensor = "mining_north_outpost_sensor"; tag_exterior_door = "mining_north_outpost_outer"; tag_interior_door = "mining_north_outpost_inner"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_north_outpost_pump"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) +"jZ" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "mining_north_outpost_airlock"; pixel_x = 0; pixel_y = 25; ; tag_airpump = "mining_north_outpost_pump"; tag_chamber_sensor = "mining_north_outpost_sensor"; tag_exterior_door = "mining_north_outpost_outer"; tag_interior_door = "mining_north_outpost_inner"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_north_outpost_pump"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_north) "ka" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera{c_tag = "North Outpost - Airlock"; dir = 2; network = list("MINE")},/turf/simulated/floor/plating,/area/outpost/mining_north) "kb" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plating,/area/outpost/mining_north) "kc" = (/obj/effect/decal/cleanable/cobweb,/obj/item/stack/sheet/metal{amount = 10},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/clothing/glasses/meson,/obj/item/weapon/storage/box/lights/mixed,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/plating,/area/outpost/mining_north) @@ -534,14 +534,14 @@ "kn" = (/obj/machinery/atmospherics/valve/digital/open,/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "ko" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/turf/simulated/wall/r_wall,/area/outpost/research/power) "kp" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{tag = "icon-intact-supply (NORTHEAST)"; icon_state = "intact-supply"; dir = 5},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact-scrubbers (NORTHEAST)"; icon_state = "intact-scrubbers"; dir = 5},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/power) -"kq" = (/obj/machinery/door_control{id = "riso1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) +"kq" = (/obj/machinery/door_control{id = "riso1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; specialfunctions = 4},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "kr" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/light,/turf/simulated/floor/wood,/area/outpost/research/kitchen) "ks" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact-scrubbers (SOUTHWEST)"; icon_state = "intact-scrubbers"; dir = 10},/turf/simulated/floor,/area/outpost/research/power) -"kt" = (/obj/machinery/door_control{id = "riso2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) +"kt" = (/obj/machinery/door_control{id = "riso2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; specialfunctions = 4},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "ku" = (/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/research/isolation_monitoring) "kv" = (/obj/machinery/atmospherics/valve/digital/open,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "kw" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) -"kx" = (/obj/machinery/door_control{id = "riso3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) +"kx" = (/obj/machinery/door_control{id = "riso3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; specialfunctions = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "ky" = (/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "kz" = (/obj/machinery/atmospherics/valve/digital/open,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "delivery"},/area/outpost/research/isolation_monitoring) "kA" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/outpost/research/isolation_monitoring) @@ -551,7 +551,7 @@ "kE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'INTERNALS REQUIRED'."; name = "INTERNALS REQUIRED"; pixel_x = -32; pixel_y = 0},/turf/space,/area/space) "kF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/research/eva) "kG" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/research/eva) -"kH" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "research_inner"; locked = 1; name = "Research Outpost External Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/outpost/research/eva) +"kH" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "research_inner"; locked = 1; name = "Research Outpost External Access"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/outpost/research/eva) "kI" = (/obj/machinery/disposal/deliveryChute{dir = 1},/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/research/eva) "kJ" = (/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/outpost/abandoned) "kK" = (/obj/structure/table/rack,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/outpost/abandoned) @@ -560,24 +560,24 @@ "kN" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/outpost/abandoned) "kO" = (/obj/effect/decal/remains/human,/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/outpost/abandoned) "kP" = (/obj/effect/alien/resin,/turf/simulated/floor/airless{icon_state = "floorgrime"},/area/outpost/abandoned) -"kQ" = (/obj/machinery/conveyor_switch{id = "anotempload"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0; req_access_txt = "65"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) -"kR" = (/obj/machinery/conveyor_switch{id = "anosample"; req_access_txt = "65"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) +"kQ" = (/obj/machinery/conveyor_switch{id = "anotempload"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0; req_access = list(65)},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) +"kR" = (/obj/machinery/conveyor_switch{id = "anosample"; req_access = list(65)},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "kS" = (/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/structure/cable/blue,/obj/machinery/power/sensor{long_range = 1; name_tag = "Research Outpost"},/turf/simulated/floor,/area/outpost/research/power) "kT" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor,/area/outpost/research/power) "kU" = (/turf/simulated/wall/r_wall,/area/outpost/research/isolation_a) -"kV" = (/obj/machinery/door/airlock/external{id_tag = "riso1"; name = "Access Airlock"; req_access_txt = "65"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/isolation_a) +"kV" = (/obj/machinery/door/airlock/external{id_tag = "riso1"; name = "Access Airlock"; req_access = list(65)},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/isolation_a) "kW" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/outpost/research/isolation_a) "kX" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/outpost/research/isolation_a) -"kY" = (/obj/machinery/door/airlock/external{id_tag = "riso2"; name = "Access Airlock"; req_access_txt = "65"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/isolation_b) +"kY" = (/obj/machinery/door/airlock/external{id_tag = "riso2"; name = "Access Airlock"; req_access = list(65)},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/isolation_b) "kZ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/outpost/research/isolation_b) "la" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/outpost/research/isolation_b) "lb" = (/turf/simulated/wall/r_wall,/area/outpost/research/isolation_c) -"lc" = (/obj/machinery/door/airlock/external{id_tag = "riso3"; name = "Access Airlock"; req_access_txt = "65"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/isolation_c) +"lc" = (/obj/machinery/door/airlock/external{id_tag = "riso3"; name = "Access Airlock"; req_access = list(65)},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/isolation_c) "ld" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/outpost/research/isolation_c) "le" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/outpost/research/isolation_c) "lf" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "research_pump"},/obj/structure/closet/walllocker/emerglocker/east,/turf/simulated/floor,/area/outpost/research/eva) "lg" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor,/area/outpost/research/eva) -"lh" = (/obj/machinery/light/small{dir = 8},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "research_pump"; tag_exterior_door = "research_outer"; frequency = 1379; id_tag = "research_airlock"; tag_interior_door = "research_inner"; pixel_x = -25; pixel_y = 0; req_access_txt = null; tag_chamber_sensor = "research_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "research_pump"},/turf/simulated/floor,/area/outpost/research/eva) +"lh" = (/obj/machinery/light/small{dir = 8},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "research_pump"; tag_exterior_door = "research_outer"; frequency = 1379; id_tag = "research_airlock"; tag_interior_door = "research_inner"; pixel_x = -25; pixel_y = 0; ; tag_chamber_sensor = "research_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "research_pump"},/turf/simulated/floor,/area/outpost/research/eva) "li" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/outpost/research/eva) "lj" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged4"},/area/outpost/abandoned) "lk" = (/obj/structure/girder/displaced,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/outpost/abandoned) @@ -587,7 +587,7 @@ "lo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/research/eva) "lp" = (/obj/machinery/mineral/unloading_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/research/eva) "lq" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/research/eva) -"lr" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/door/window{dir = 4; name = "Air Tank Access"; req_access_txt = "0"; req_one_access_txt = "47;10;24"},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/outpost/research/eva) +"lr" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/door/window{dir = 4; name = "Air Tank Access"; req_one_access = list(47,10,24)},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/outpost/research/eva) "ls" = (/obj/structure/table,/obj/item/weapon/storage/box/excavation,/obj/item/weapon/pickaxe,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/obj/item/weapon/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/turf/simulated/floor,/area/outpost/research/eva) "lt" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/turf/simulated/floor,/area/outpost/research/eva) "lu" = (/turf/simulated/wall/r_wall,/area/outpost/research/anomaly_storage) @@ -616,10 +616,10 @@ "lR" = (/obj/machinery/suspension_gen,/turf/simulated/floor,/area/outpost/research/eva) "lS" = (/obj/machinery/conveyor{dir = 2; id = "anominerals"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/research/eva) "lT" = (/obj/structure/table,/obj/item/weapon/storage/box/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/green,/turf/simulated/floor,/area/outpost/research/eva) -"lU" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "research_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null; req_one_access = list(13,65); req_one_access_txt = null},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor,/area/outpost/research/eva) -"lV" = (/obj/machinery/door/window{dir = 4; name = "Air Tank Access"; req_access_txt = "0"; req_one_access_txt = "47;10;24"},/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/outpost/research/eva) +"lU" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "research_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; ; req_one_access = list(13,65)},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor,/area/outpost/research/eva) +"lV" = (/obj/machinery/door/window{dir = 4; name = "Air Tank Access"; req_one_access = list(47,10,24)},/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/outpost/research/eva) "lW" = (/obj/machinery/atmospherics/unary/freezer{dir = 4; icon_state = "freezer"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) -"lX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/research{name = "Power & Atmosphere Maintenance"; req_access_txt = "65"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/power) +"lX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/research{name = "Power & Atmosphere Maintenance"; req_access = list(65)},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/power) "lY" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{tag = "icon-map (NORTH)"; icon_state = "map"; dir = 1},/turf/simulated/floor{icon_state = "delivery"},/area/outpost/research/isolation_monitoring) "lZ" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{tag = "icon-intact (WEST)"; icon_state = "intact"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/outpost/research/isolation_monitoring) "ma" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{tag = "icon-intact (WEST)"; icon_state = "intact"; dir = 8},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) @@ -633,7 +633,7 @@ "mi" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor/plating,/area/outpost/research/emergency_storage) "mj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/outpost/abandoned) "mk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/outpost/abandoned) -"ml" = (/obj/machinery/door/airlock/glass{name = "Glass Airlock"; req_access_txt = "0"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/outpost/abandoned) +"ml" = (/obj/machinery/door/airlock/glass{name = "Glass Airlock"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/outpost/abandoned) "mm" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged4"},/area/outpost/abandoned) "mn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/outpost/abandoned) "mo" = (/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/outpost/research/anomaly_storage) @@ -647,7 +647,7 @@ "mw" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "mx" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "my" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/turf/simulated/floor,/area/outpost/research/isolation_monitoring) -"mz" = (/obj/structure/table,/obj/machinery/computer/atmoscontrol/laptop{monitored_alarm_ids = list("isolation_one","isolation_two","isolation_three"); req_access = null; req_one_access = list(47,24,11)},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) +"mz" = (/obj/structure/table,/obj/machinery/computer/atmoscontrol/laptop{monitored_alarm_ids = list("isolation_one","isolation_two","isolation_three"); req_one_access = list(47,24,11)},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "mA" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/manifold/visible/supply,/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "mB" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/outpost/research/isolation_monitoring) "mC" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 2; id = "anotempload"},/turf/simulated/floor/plating,/area/outpost/research/eva) @@ -688,16 +688,16 @@ "nl" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/outpost/research/eva) "nm" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/outpost/research/eva) "nn" = (/obj/machinery/mineral/input,/turf/simulated/floor{dir = 2; icon_state = "loadingarea"},/area/outpost/research/eva) -"no" = (/obj/machinery/door/airlock/glass_mining{name = "Equipment storage"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/eva) +"no" = (/obj/machinery/door/airlock/glass_mining{name = "Equipment storage"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/eva) "np" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/outpost/research/eva) "nq" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/outpost/abandoned) "nr" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/outpost/abandoned) "ns" = (/obj/machinery/door/airlock,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/outpost/abandoned) "nt" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor,/area/outpost/abandoned) "nu" = (/turf/simulated/wall,/area/outpost/research/medical) -"nv" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Temporary Storage Loading"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/eva) +"nv" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Temporary Storage Loading"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/eva) "nw" = (/turf/simulated/wall,/area/outpost/research/dock) -"nx" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Expedition Prep"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/dock) +"nx" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Expedition Prep"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/dock) "ny" = (/obj/machinery/artifact_scanpad,/obj/machinery/light/small,/turf/simulated/floor/bluegrid,/area/outpost/research/anomaly_analysis) "nz" = (/obj/machinery/alarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/outpost/research/anomaly_analysis) "nA" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/outpost/research/power) @@ -723,11 +723,11 @@ "nU" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless,/area/outpost/abandoned) "nV" = (/obj/structure/table/rack,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/outpost/abandoned) "nW" = (/obj/item/weapon/shard,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/outpost/abandoned) -"nX" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;65"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/outpost/research/eva) +"nX" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/maintenance{req_one_access = list(12,65)},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/outpost/research/eva) "nY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/outpost/research/eva) "nZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/eva) "oa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor,/area/outpost/research/eva) -"ob" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Loading area"; req_access_txt = "65"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/eva) +"ob" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Loading area"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/eva) "oc" = (/obj/machinery/camera{c_tag = "Research Outpost Expedition Prep"; dir = 2; network = list("Research","SS13")},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 22},/turf/simulated/floor,/area/outpost/research/eva) "od" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor,/area/outpost/research/eva) "oe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/research/eva) @@ -745,7 +745,7 @@ "oq" = (/obj/machinery/conveyor{dir = 2; id = "anotempload"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/outpost/research/eva) "or" = (/obj/machinery/conveyor{dir = 1; id = "anosample"},/turf/simulated/floor/plating,/area/outpost/research/eva) "os" = (/obj/machinery/conveyor_switch{id = "anosample"; pixel_x = -8; pixel_y = 8},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/outpost/research/eva) -"ot" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;65"},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"; nitrogen = 0.01; oxygen = 0.01},/area/outpost/research/power) +"ot" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_one_access = list(12,65)},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"; nitrogen = 0.01; oxygen = 0.01},/area/outpost/research/power) "ou" = (/obj/structure/disposaloutlet{dir = 2},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor,/area/outpost/research/anomaly_storage) "ov" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/anomaly_storage) "ow" = (/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) @@ -762,7 +762,7 @@ "oH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/outpost/abandoned) "oI" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/outpost/abandoned) "oJ" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/outpost/abandoned) -"oK" = (/obj/machinery/door/airlock/external{name = "External Airlock"; req_access_txt = "0"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/outpost/abandoned) +"oK" = (/obj/machinery/door/airlock/external{name = "External Airlock"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/outpost/abandoned) "oL" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/outpost/abandoned) "oM" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/outpost/abandoned) "oN" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_b) @@ -810,7 +810,7 @@ "pD" = (/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_three"; dir = 8; pixel_x = 22; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/outpost/research/isolation_c) "pE" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/outpost/research/isolation_c) "pF" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/outpost/research/eva) -"pG" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "research_outer"; locked = 1; name = "Research Outpost External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/outpost/research/eva) +"pG" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "research_outer"; locked = 1; name = "Research Outpost External Access"; req_access = list(10,13)},/turf/simulated/floor/plating,/area/outpost/research/eva) "pH" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera{c_tag = "Research Outpost Expedition Airlock"; dir = 4; network = list("Research","SS13")},/turf/simulated/floor/plating,/area/outpost/research/eva) "pI" = (/obj/structure/disposalpipe/segment,/turf/unsimulated/mask,/area/mine/unexplored) "pJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/outpost/research/power) @@ -837,7 +837,7 @@ "qe" = (/turf/simulated/floor/mech_bay_recharge_floor{icon_state = "recharge_floor_asteroid"},/area/mine/explored) "qf" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "qg" = (/obj/machinery/power/solar,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/space) -"qh" = (/obj/machinery/door/airlock/engineering{name = "Restrooms"; req_access_txt = "10"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/engineering/meeting) +"qh" = (/obj/machinery/door/airlock/engineering{name = "Restrooms"; req_access = list(10)},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/engineering/meeting) "qi" = (/obj/structure/toilet{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/engineering/meeting) "qj" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/meeting) "qk" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{dir = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/outpost/engineering/meeting) @@ -870,7 +870,7 @@ "qL" = (/turf/space,/area/mine/unexplored) "qM" = (/obj/structure/closet/crate,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "qN" = (/obj/machinery/floodlight,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) -"qO" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "0"; req_one_access_txt = "54;65"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) +"qO" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_one_access = list(54,65)},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "qP" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/mine/explored) "qQ" = (/turf/simulated/floor,/area/outpost/engineering/atmospherics) "qR" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/atmospherics) @@ -887,7 +887,7 @@ "rc" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "rd" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/explored) "re" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/explored) -"rf" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "research_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null; req_one_access = list(13,65); req_one_access_txt = null},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) +"rf" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "research_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; ; req_one_access = list(13,65)},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) "rg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/space) "rh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "ri" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/explored) @@ -903,7 +903,7 @@ "rs" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/turf/simulated/floor,/area/outpost/engineering/atmospherics) "rt" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/hallway) "ru" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) -"rv" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "edock_inner"; locked = 1; name = "Engineering Dock Airlock"; req_access = null; req_access_txt = null},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"rv" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "edock_inner"; locked = 1; name = "Engineering Dock Airlock"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "rw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "rx" = (/obj/machinery/light_construct/small,/obj/structure/table/rack,/obj/item/stack/sheet/metal{amount = 10},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "ry" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) @@ -916,30 +916,30 @@ "rF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "rG" = (/turf/simulated/wall,/area/outpost/engineering/hallway) "rH" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) -"rI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Atmospherics"; req_access_txt = "10"},/turf/simulated/floor,/area/outpost/engineering/hallway) +"rI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Atmospherics"; req_access = list(10)},/turf/simulated/floor,/area/outpost/engineering/hallway) "rJ" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) "rK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "rL" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "rM" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "rN" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"rO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "edock_inner"; locked = 1; name = "Engineering Dock Airlock"; req_access = null; req_access_txt = null},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"rO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "edock_inner"; locked = 1; name = "Engineering Dock Airlock"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "rP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) "rQ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "rR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"rS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eoutpost_main_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = -25; req_access_txt = "10"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) +"rS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eoutpost_main_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = -25; req_access = list(10)},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "rT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"rU" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_north_outpost_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null; req_one_access = list(13,54); req_one_access_txt = null},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) +"rU" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_north_outpost_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; ; req_one_access = list(13,54)},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) "rV" = (/obj/structure/sign/nosmoking_2{pixel_y = -32},/obj/machinery/camera/autoname/research_outpost{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/research/anomaly_analysis) -"rW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_main_outer"; locked = 1; name = "Engineering Outpost"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/engineering/hallway) -"rX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_main_inner"; locked = 1; name = "Engineering Outpost"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor,/area/outpost/engineering/hallway) -"rY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eoutpost_main_airlock"; pixel_x = 0; pixel_y = -25; req_access_txt = "10"; tag_airpump = "eoutpost_main_pump"; tag_chamber_sensor = "eoutpost_main_sensor"; tag_exterior_door = "eoutpost_main_outer"; tag_interior_door = "eoutpost_main_inner"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "eoutpost_main_pump"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/engineering/hallway) +"rW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_main_outer"; locked = 1; name = "Engineering Outpost"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/engineering/hallway) +"rX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_main_inner"; locked = 1; name = "Engineering Outpost"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor,/area/outpost/engineering/hallway) +"rY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eoutpost_main_airlock"; pixel_x = 0; pixel_y = -25; req_access = list(10); tag_airpump = "eoutpost_main_pump"; tag_chamber_sensor = "eoutpost_main_sensor"; tag_exterior_door = "eoutpost_main_outer"; tag_interior_door = "eoutpost_main_inner"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "eoutpost_main_pump"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/engineering/hallway) "rZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/engineering/hallway) "sa" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/engineering/hallway) "sb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/engineering/hallway) "sc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/outpost/engineering/hallway) "sd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/engineering/hallway) "se" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/outpost/research/power) -"sf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "edock_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "10"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/outpost/engineering/hallway) +"sf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "edock_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access = list(10)},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/outpost/engineering/hallway) "sg" = (/obj/machinery/light,/turf/simulated/floor,/area/outpost/engineering/hallway) "sh" = (/turf/simulated/floor,/area/outpost/engineering/hallway) "si" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/outpost/engineering/hallway) @@ -956,10 +956,10 @@ "st" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/outpost/engineering/hallway) "su" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/outpost/engineering/hallway) "sv" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"sw" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_main_inner"; locked = 1; name = "Engineering Outpost"; req_access = null; req_access_txt = null},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor,/area/outpost/engineering/hallway) +"sw" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_main_inner"; locked = 1; name = "Engineering Outpost"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor,/area/outpost/engineering/hallway) "sx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eoutpost_main_sensor"; pixel_x = 0; pixel_y = 25},/turf/simulated/floor,/area/outpost/engineering/hallway) "sy" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{tag = "icon-intact-supply (NORTHWEST)"; icon_state = "intact-supply"; dir = 9},/turf/simulated/floor,/area/outpost/research/power) -"sz" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_main_outer"; locked = 1; name = "Engineering Outpost"; req_access = null; req_access_txt = null},/turf/simulated/floor,/area/outpost/engineering/hallway) +"sz" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_main_outer"; locked = 1; name = "Engineering Outpost"},/turf/simulated/floor,/area/outpost/engineering/hallway) "sA" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "sB" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/obj/machinery/conveyor_switch{id = "mining_nort"; pixel_y = 10},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "sC" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) @@ -976,7 +976,7 @@ "sN" = (/turf/simulated/floor/plating/airless,/area/space) "sO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/explored) "sP" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/explored) -"sQ" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "54"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) +"sQ" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access = list(54)},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "sR" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/explored) "sS" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless,/area/mine/explored) "sT" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/machinery/light{dir = 1},/turf/space,/area/mine/explored) @@ -1036,7 +1036,7 @@ "tV" = (/obj/machinery/atmospherics/omni/filter{power_rating = 15000; tag_east = 4; tag_north = 1; tag_south = 2; tag_west = 3},/turf/simulated/floor,/area/outpost/engineering/atmospherics) "tW" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/obj/machinery/meter,/turf/simulated/floor,/area/outpost/engineering/atmospherics) "tX" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"tY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "edock_outer"; locked = 1; name = "Engineering Dock Airlock"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"tY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "edock_outer"; locked = 1; name = "Engineering Dock Airlock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "tZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "eoutpost_main_pump"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/autoname/engineering_outpost{dir = 1},/turf/simulated/floor,/area/outpost/engineering/hallway) "ua" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/engineering/atmospherics) "ub" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/engineering/atmospherics) @@ -1048,8 +1048,8 @@ "uh" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor,/area/outpost/engineering/atmospherics) "ui" = (/obj/machinery/atmospherics/binary/pump/on{dir = 8; target_pressure = 15000},/turf/simulated/floor,/area/outpost/engineering/atmospherics) "uj" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/obj/machinery/meter,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"uk" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "edock_outer"; locked = 1; name = "Engineering Dock Airlock"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"ul" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "edock_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = 0; req_access_txt = "10"},/turf/space,/area/space) +"uk" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "edock_outer"; locked = 1; name = "Engineering Dock Airlock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"ul" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "edock_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = 0; req_access = list(10)},/turf/space,/area/space) "um" = (/obj/machinery/power/emitter{anchored = 1; dir = 4; state = 2},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "un" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor,/area/outpost/engineering/atmospherics) "uo" = (/obj/machinery/atmospherics/binary/pump/on{dir = 8},/turf/simulated/floor,/area/outpost/engineering/atmospherics) @@ -1059,7 +1059,7 @@ "us" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) "ut" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "uu" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"uv" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "eoutpost_dock_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "edock_airlock"; pixel_x = 30; pixel_y = 0; req_access_txt = "10"; req_one_access_txt = ""; tag_airpump = "edock_pump"; tag_chamber_sensor = "edock_sensor"; tag_exterior_door = "edock_outer"; tag_interior_door = "edock_inner"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"uv" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "eoutpost_dock_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "edock_airlock"; pixel_x = 30; pixel_y = 0; req_access = list(10); tag_airpump = "edock_pump"; tag_chamber_sensor = "edock_sensor"; tag_exterior_door = "edock_outer"; tag_interior_door = "edock_inner"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "uw" = (/turf/simulated/floor,/area/outpost/engineering/storage) "ux" = (/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/sheet/wood{amount = 30},/obj/item/stack/sheet/mineral/plastic{amount = 10},/turf/simulated/floor,/area/outpost/engineering/storage) "uy" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/storage) @@ -1087,7 +1087,7 @@ "uU" = (/obj/machinery/floodlight,/turf/simulated/floor/wood,/area/outpost/engineering/meeting) "uV" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/wood,/area/outpost/engineering/meeting) "uW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/autoname/engineering_outpost{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/outpost/engineering/hallway) -"uX" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Storage"; req_access_txt = "10"},/turf/simulated/floor,/area/outpost/engineering/storage) +"uX" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Storage"; req_access = list(10)},/turf/simulated/floor,/area/outpost/engineering/storage) "uY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor,/area/outpost/engineering/hallway) "uZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/outpost/engineering/storage) "va" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -28},/turf/simulated/floor,/area/outpost/engineering/hallway) @@ -1095,18 +1095,18 @@ "vc" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor/wood,/area/outpost/engineering/meeting) "vd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor,/area/outpost/engineering/hallway) "ve" = (/turf/simulated/wall,/area/outpost/engineering/meeting) -"vf" = (/obj/machinery/door/airlock/engineering{name = "Restrooms"; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/engineering/meeting) +"vf" = (/obj/machinery/door/airlock/engineering{name = "Restrooms"; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/engineering/meeting) "vg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/engineering/hallway) "vh" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "vi" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/outpost/engineering/hallway) -"vj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_engineering{name = "Telecommunications"; req_access_txt = "10"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 82.1472; oxygen = 21.8366; temperature = 293.15},/area/outpost/engineering/hallway) +"vj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_engineering{name = "Telecommunications"; req_access = list(10)},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 82.1472; oxygen = 21.8366; temperature = 293.15},/area/outpost/engineering/hallway) "vk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/engineering/hallway) "vl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/outpost/engineering/hallway) -"vm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Power Distribution Center"; req_access_txt = "10"},/turf/simulated/floor,/area/outpost/engineering/hallway) +"vm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Power Distribution Center"; req_access = list(10)},/turf/simulated/floor,/area/outpost/engineering/hallway) "vn" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/outpost/engineering/hallway) "vo" = (/obj/machinery/power/solar_control,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/outpost/engineering/hallway) "vp" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/outpost/engineering/hallway) -"vq" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Break Room"; req_access_txt = "10"},/turf/simulated/floor,/area/outpost/engineering/hallway) +"vq" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Break Room"; req_access = list(10)},/turf/simulated/floor,/area/outpost/engineering/hallway) "vr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "vs" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "vt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/autoname/engineering_outpost{dir = 1},/turf/simulated/floor,/area/outpost/engineering/hallway) @@ -1125,7 +1125,7 @@ "vG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/engineering/power) "vH" = (/obj/structure/table/rack,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/weapon/pickaxe,/turf/simulated/floor,/area/outpost/engineering/storage) "vI" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/outpost/engineering/storage) -"vJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eoutpost_main_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/sign/vacuum{pixel_y = -32},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/outpost/engineering/hallway) +"vJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eoutpost_main_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/sign/vacuum{pixel_y = -32},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/outpost/engineering/hallway) "vK" = (/obj/machinery/light{dir = 8},/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/outpost/engineering/meeting) "vL" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/wood,/area/outpost/engineering/meeting) "vM" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/telecomms) @@ -1152,12 +1152,12 @@ "wh" = (/obj/machinery/pipedispenser/disposal,/turf/simulated/floor/wood,/area/outpost/engineering/meeting) "wi" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/carpet,/area/outpost/engineering/meeting) "wj" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/carpet,/area/outpost/engineering/meeting) -"wk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eoutpost_solar_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "10"},/turf/simulated/floor/plating/airless,/area/outpost/engineering/hallway) +"wk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eoutpost_solar_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access = list(10)},/turf/simulated/floor/plating/airless,/area/outpost/engineering/hallway) "wl" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/space) "wm" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/outpost/engineering/hallway) -"wn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_solar_inner"; locked = 1; name = "Solar Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"wn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_solar_inner"; locked = 1; name = "Solar Access"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "wo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/outpost/engineering/hallway) -"wp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_solar_outer"; locked = 1; name = "Solar Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"wp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_solar_outer"; locked = 1; name = "Solar Access"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "wq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/space) "wr" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area/space) "ws" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/space) @@ -1198,7 +1198,7 @@ "xb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) "xc" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) "xd" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/machinery/power/sensor{long_range = 1; name_tag = "Mining Outpost"},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) -"xe" = (/obj/machinery/light/small{dir = 4},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_west_sensor"; pixel_x = 25; pixel_y = -5},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_west_pump"; tag_exterior_door = "mining_west_outer"; frequency = 1379; id_tag = "mining_west_airlock"; tag_interior_door = "mining_west_inner"; pixel_x = 25; pixel_y = 5; req_access_txt = null; tag_chamber_sensor = "mining_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor,/area/outpost/mining_main/west_hall) +"xe" = (/obj/machinery/light/small{dir = 4},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_west_sensor"; pixel_x = 25; pixel_y = -5},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_west_pump"; tag_exterior_door = "mining_west_outer"; frequency = 1379; id_tag = "mining_west_airlock"; tag_interior_door = "mining_west_inner"; pixel_x = 25; pixel_y = 5; ; tag_chamber_sensor = "mining_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor,/area/outpost/mining_main/west_hall) "xf" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_main/west_hall) "xg" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_west_pump"},/obj/structure/closet/walllocker/emerglocker/west,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_main/west_hall) "xh" = (/turf/simulated/wall,/area/outpost/mining_main/west_hall) @@ -1213,7 +1213,7 @@ "xq" = (/obj/machinery/conveyor{dir = 4; id = "mining_internal"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_main/refinery) "xr" = (/obj/machinery/conveyor{dir = 4; id = "mining_internal"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_main/refinery) "xs" = (/obj/machinery/conveyor{dir = 4; id = "mining_internal"},/obj/machinery/mineral/output,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_main/refinery) -"xt" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_west_outpost_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) +"xt" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_west_outpost_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "xu" = (/obj/machinery/sleep_console,/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/outpost/mining_main/medbay) "xv" = (/obj/structure/ore_box,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "xw" = (/obj/machinery/sleeper,/turf/simulated/floor{icon_state = "warnwhite"; dir = 1},/area/outpost/mining_main/medbay) @@ -1230,7 +1230,7 @@ "xH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) "xI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall) "xJ" = (/obj/machinery/conveyor_switch{id = "mining_external"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) -"xK" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall) +"xK" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_outer"; locked = 1; name = "Mining External Access"},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall) "xL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) "xM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/obj/machinery/camera/autoname/engineering_outpost,/turf/simulated/floor,/area/outpost/engineering/hallway) "xN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) @@ -1242,7 +1242,7 @@ "xT" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/refinery) "xU" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_main/refinery) "xV" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) -"xW" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) +"xW" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "xX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) "xY" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/refinery) "xZ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/east_hall) @@ -1261,15 +1261,15 @@ "ym" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/mining_main/east_hall) "yn" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "yo" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/outpost/mining_main/refinery) -"yp" = (/obj/machinery/door/window/westright{name = "Production Area"; req_access_txt = "48"},/turf/simulated/floor,/area/outpost/mining_main/refinery) +"yp" = (/obj/machinery/door/window/westright{name = "Production Area"; req_access = list(48)},/turf/simulated/floor,/area/outpost/mining_main/refinery) "yq" = (/obj/machinery/camera{c_tag = "Production Room"; dir = 8; network = list("MINE")},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/mining_main/refinery) "yr" = (/turf/simulated/floor,/area/outpost/mining_main/refinery) -"ys" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_outpost_outer"; locked = 1; name = "Mining Dock Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/outpost/mining_main/east_hall) -"yt" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_outpost_inner"; locked = 1; name = "Mining Dock Airlock"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor,/area/outpost/mining_main/east_hall) -"yu" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "mining_outpost_airlock"; pixel_x = 0; pixel_y = 30; req_access_txt = "0"; req_one_access_txt = "13;48"; tag_airpump = "mining_outpost_pump"; tag_chamber_sensor = "mining_outpost_sensor"; tag_exterior_door = "mining_outpost_outer"; tag_interior_door = "mining_outpost_inner"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "mining_outpost_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "mining_outpost_pump"},/turf/simulated/floor,/area/outpost/mining_main/east_hall) +"ys" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_outpost_outer"; locked = 1; name = "Mining Dock Airlock"; req_access = list(13)},/turf/simulated/floor/plating,/area/outpost/mining_main/east_hall) +"yt" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_outpost_inner"; locked = 1; name = "Mining Dock Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor,/area/outpost/mining_main/east_hall) +"yu" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "mining_outpost_airlock"; pixel_x = 0; pixel_y = 30; req_one_access = list(13,48); tag_airpump = "mining_outpost_pump"; tag_chamber_sensor = "mining_outpost_sensor"; tag_exterior_door = "mining_outpost_outer"; tag_interior_door = "mining_outpost_inner"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "mining_outpost_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "mining_outpost_pump"},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "yv" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "yw" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"yx" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "mining_outpost_airlock"; name = "interior access button"; pixel_x = -30; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13;48"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/turf/simulated/floor,/area/outpost/mining_main/east_hall) +"yx" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "mining_outpost_airlock"; name = "interior access button"; pixel_x = -30; pixel_y = -25; req_one_access = list(13,48)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "yy" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/refinery) "yz" = (/obj/machinery/mineral/input,/turf/simulated/floor{icon_state = "loadingarea"},/area/outpost/mining_main/refinery) "yA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) @@ -1281,7 +1281,7 @@ "yG" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/outpost/mining_main/refinery) "yH" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/mining_main/refinery) "yI" = (/turf/space,/area/shuttle/mining/outpost) -"yJ" = (/obj/machinery/door/window/westleft{name = "Production Area"; req_access_txt = "48"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/mining_main/refinery) +"yJ" = (/obj/machinery/door/window/westleft{name = "Production Area"; req_access = list(48)},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/mining_main/refinery) "yK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/east_hall) "yL" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/outpost/mining_main/east_hall) "yM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/east_hall) @@ -1327,7 +1327,7 @@ "zA" = (/turf/simulated/wall,/area/outpost/mining_main/eva) "zB" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/outpost/mining_main/eva) "zC" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) -"zD" = (/obj/structure/lattice,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "mining_outpost_airlock"; name = "exterior access button"; pixel_x = -8; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13;48"},/turf/space,/area/space) +"zD" = (/obj/structure/lattice,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "mining_outpost_airlock"; name = "exterior access button"; pixel_x = -8; pixel_y = 25; req_one_access = list(13,48)},/turf/space,/area/space) "zE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/eva) "zF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/eva) "zG" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "bar"},/area/outpost/mining_main/dorms) @@ -1344,15 +1344,15 @@ "zR" = (/obj/structure/closet/secure_closet/miner,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/outpost/mining_main/west_hall) "zS" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/outpost/mining_main/dorms) "zT" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/turf/simulated/floor{icon_state = "bar"},/area/outpost/mining_main/dorms) -"zU" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_outpost_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/mining_west) +"zU" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_outpost_inner"; locked = 1; name = "Mining External Access"},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/mining_west) "zV" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_west) "zW" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/mining_west) -"zX" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_outpost_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/outpost/mining_west) +"zX" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_outpost_outer"; locked = 1; name = "Mining External Access"; req_access = list(10,13)},/turf/simulated/floor/plating,/area/outpost/mining_west) "zY" = (/turf/simulated/floor,/area/outpost/mining_west) "zZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_west) "Aa" = (/turf/space,/area/vox_station/mining) "Ab" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor,/area/outpost/mining_west) -"Ac" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_west_outpost_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor,/area/outpost/mining_west) +"Ac" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_west_outpost_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor,/area/outpost/mining_west) "Ad" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/simulated/floor,/area/outpost/mining_west) "Ae" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "Af" = (/obj/machinery/conveyor_switch{id = "mining_west"; pixel_y = 10},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) @@ -1376,7 +1376,7 @@ "Ax" = (/obj/structure/ore_box,/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_west_outpost_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_west_outpost_pump"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/mining_west) "Ay" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera{c_tag = "West Outpost - Airlock"; dir = 1; network = list("MINE")},/turf/simulated/floor/plating,/area/outpost/mining_west) "Az" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) -"AA" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_west_outpost_pump"; tag_exterior_door = "mining_west_outpost_outer"; frequency = 1379; id_tag = "mining_west_outpost_airlock"; tag_interior_door = "mining_west_outpost_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_chamber_sensor = "mining_west_outpost_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_west_outpost_pump"},/turf/simulated/floor,/area/outpost/mining_west) +"AA" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_west_outpost_pump"; tag_exterior_door = "mining_west_outpost_outer"; frequency = 1379; id_tag = "mining_west_outpost_airlock"; tag_interior_door = "mining_west_outpost_inner"; pixel_x = 0; pixel_y = -25; ; tag_chamber_sensor = "mining_west_outpost_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_west_outpost_pump"},/turf/simulated/floor,/area/outpost/mining_west) "AB" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{icon_state = "bar"},/area/outpost/mining_main/dorms) "AC" = (/obj/machinery/camera{c_tag = "Crew Area"; dir = 1; network = list("MINE")},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bar"},/area/outpost/mining_main/dorms) "AD" = (/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor{icon_state = "bar"},/area/outpost/mining_main/dorms) @@ -1385,7 +1385,7 @@ "AG" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/outpost/mining_west) "AH" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/outpost/mining_west) "AI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/outpost/mining_west) -"AJ" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/outpost/mining_west) +"AJ" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access = list(54)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/outpost/mining_west) "AK" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/outpost/mining_west) "AL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/outpost/mining_main/dorms) "AM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/dorms) @@ -1412,10 +1412,10 @@ "Bh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_west) "Bi" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor,/area/outpost/mining_west) "Bj" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor,/area/outpost/mining_west) -"Bk" = (/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/mining_main/dorms) +"Bk" = (/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access = list(48)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/mining_main/dorms) "Bl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/dorms) "Bm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/dorms) -"Bn" = (/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/mining_main/west_hall) +"Bn" = (/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access = list(48)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/mining_main/west_hall) "Bo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall) "Bp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall) "Bq" = (/obj/machinery/alarm{pixel_y = 24},/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/stack/flag/yellow,/obj/item/stack/flag/red,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/east_hall) @@ -1444,15 +1444,15 @@ "BN" = (/obj/machinery/mineral/unloading_machine,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_west) "BO" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_main/eva) "BP" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/mining_main/eva) -"BQ" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/outpost/mining_main/eva) -"BR" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) +"BQ" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_outer"; locked = 1; name = "Mining External Access"; req_access = list(10,13)},/turf/simulated/floor/plating,/area/outpost/mining_main/eva) +"BR" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) "BS" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "BT" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/mining_main/east_hall) "BU" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/outpost/mining_main/eva) -"BV" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/mining_main/eva) +"BV" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access = list(54)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/mining_main/eva) "BW" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/mining_main/eva) -"BX" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/mining_main/eva) -"BY" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/mining_main/eva) +"BX" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_inner"; locked = 1; name = "Mining External Access"},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/mining_main/eva) +"BY" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/mining_main/eva) "BZ" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "outpost_o2_in"; name = "O2 Tank Monitor"; output_tag = "outpost_o2_out"; sensors = list("outpost_o2_sensor" = "Tank")},/obj/machinery/camera/autoname/engineering_outpost{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) "Ca" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/east_hall) "Cb" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/outpost/mining_main/east_hall) @@ -1477,13 +1477,13 @@ "Cu" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor,/area/outpost/mining_main/eva) "Cv" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/outpost/mining_main/eva) "Cw" = (/obj/machinery/mech_bay_recharge_port,/turf/simulated/floor/plating,/area/outpost/mining_main/eva) -"Cx" = (/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/east_hall) +"Cx" = (/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access = list(48)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "Cy" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "Cz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/east_hall) "CA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/outpost/mining_main/east_hall) "CB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera{c_tag = "Production Line External"; dir = 1; network = list("MINE")},/turf/simulated/floor/plating,/area/outpost/mining_main/eva) "CC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) -"CD" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_east_pump"; tag_exterior_door = "mining_east_outer"; frequency = 1379; id_tag = "mining_east_airlock"; tag_interior_door = "mining_east_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_chamber_sensor = "mining_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor,/area/outpost/mining_main/eva) +"CD" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_east_pump"; tag_exterior_door = "mining_east_outer"; frequency = 1379; id_tag = "mining_east_airlock"; tag_interior_door = "mining_east_inner"; pixel_x = 0; pixel_y = -25; ; tag_chamber_sensor = "mining_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor,/area/outpost/mining_main/eva) "CE" = (/obj/structure/ore_box,/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_east_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/mining_main/eva) "CF" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/outpost/mining_main/west_hall) "CG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/west_hall) @@ -1495,11 +1495,11 @@ "CM" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor,/area/outpost/mining_main/west_hall) "CN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/outpost/mining_main/west_hall) "CO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/outpost/mining_main/west_hall) -"CP" = (/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/west_hall) +"CP" = (/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access = list(48)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/mining_main/west_hall) "CQ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/outpost/engineering/hallway) "CR" = (/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/outpost/mining_main/west_hall) "CS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall) -"CT" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/outpost/mining_main/west_hall) +"CT" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/outpost/mining_main/west_hall) "CU" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/outpost/mining_main/west_hall) "CV" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/outpost/mining_main/west_hall) "CW" = (/obj/machinery/light,/turf/simulated/floor,/area/outpost/mining_main/west_hall) @@ -1511,11 +1511,11 @@ "Dc" = (/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/outpost/mining_main/east_hall) "Dd" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/turf/simulated/floor,/area/outpost/engineering/atmospherics) "De" = (/obj/structure/ore_box,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) -"Df" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/outpost/mining_main/west_hall) -"Dg" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) +"Df" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_inner"; locked = 1; name = "Mining External Access"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/outpost/mining_main/west_hall) +"Dg" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access = list(48)},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/outpost/mining_main/maintenance) "Dh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/outpost/mining_main/maintenance) "Di" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/medbay) -"Dj" = (/obj/machinery/door/airlock/glass_medical{name = "Infirmary"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/outpost/mining_main/medbay) +"Dj" = (/obj/machinery/door/airlock/glass_medical{name = "Infirmary"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/outpost/mining_main/medbay) "Dk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall) "Dl" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/outpost/mining_main/refinery) "Dm" = (/obj/machinery/conveyor{dir = 9; id = "mining_internal"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_main/refinery) @@ -1529,7 +1529,7 @@ "Du" = (/obj/machinery/mineral/unloading_machine{icon_state = "unloader-corner"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_main/refinery) "Dv" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/obj/machinery/mineral/input,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_main/refinery) "Dw" = (/obj/structure/bed,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms) -"Dx" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms) +"Dx" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms) "Dy" = (/turf/simulated/floor,/area/outpost/mining_main/dorms) "Dz" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/outpost/mining_main/dorms) "DA" = (/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/outpost/mining_main/dorms) @@ -1538,11 +1538,11 @@ "DD" = (/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/outpost/mining_main/dorms) "DE" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/outpost/mining_west) "DF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/dorms) -"DG" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms) +"DG" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms) "DH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) "DI" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "DJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall) -"DK" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms) +"DK" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms) "DL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/outpost/mining_main/dorms) "DM" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "bar"},/area/outpost/mining_main/dorms) "DN" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "bar"},/area/outpost/mining_main/dorms) @@ -1582,8 +1582,8 @@ "Ev" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/outpost/engineering/hallway) "Ew" = (/obj/structure/table/rack,/obj/item/clothing/head/helmet/space/void/engineering,/obj/item/clothing/suit/space/void/engineering,/obj/item/clothing/shoes/magboots,/obj/item/clothing/gloves/yellow,/obj/machinery/camera/autoname/engineering_outpost{dir = 1},/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/obj/item/weapon/storage/briefcase/inflatable,/turf/simulated/floor,/area/outpost/engineering/storage) "Ex" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/camera/autoname/engineering_outpost{dir = 1},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 82.1472; oxygen = 21.8366; temperature = 293.15},/area/outpost/engineering/telecomms) -"Ey" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eoutpost_solar_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/outpost/engineering/hallway) -"Ez" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "eoutpost_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eoutpost_solar_airlock"; pixel_x = 0; pixel_y = -25; req_access_txt = "10"; tag_airpump = "eoutpost_solar_pump"; tag_chamber_sensor = "eoutpost_solar_sensor"; tag_exterior_door = "eoutpost_solar_outer"; tag_interior_door = "eoutpost_solar_inner"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eoutpost_solar_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/light/small{dir = 1},/obj/machinery/camera/autoname/engineering_outpost,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"Ey" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eoutpost_solar_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/outpost/engineering/hallway) +"Ez" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "eoutpost_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eoutpost_solar_airlock"; pixel_x = 0; pixel_y = -25; req_access = list(10); tag_airpump = "eoutpost_solar_pump"; tag_chamber_sensor = "eoutpost_solar_sensor"; tag_exterior_door = "eoutpost_solar_outer"; tag_interior_door = "eoutpost_solar_inner"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eoutpost_solar_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/light/small{dir = 1},/obj/machinery/camera/autoname/engineering_outpost,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "EA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/light{dir = 1},/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/obj/machinery/camera/autoname/engineering_outpost,/turf/simulated/floor,/area/outpost/engineering/power) "EB" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/outpost/engineering/meeting) "EC" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/outpost/engineering/hallway) @@ -1593,7 +1593,7 @@ "EG" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/space) "EH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/space,/area/space) "EI" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/light{dir = 4},/turf/space,/area/space) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 1a4cedd412fb0fa04322f54ebf824562fb84b9de Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 2 Mar 2015 13:24:52 -0500 Subject: [PATCH 047/168] Fixes #7363 --- code/modules/mob/living/carbon/human/life.dm | 69 ++++++++++---------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 72c281a1f2..1aae456ae0 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -608,25 +608,28 @@ if(prob(20)) src << "You feel your face burning and a searing heat in your lungs!" - switch(breath.temperature) - if(-INFINITY to species.cold_level_3) - apply_damage(COLD_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Cold") - fire_alert = max(fire_alert, 1) - if(species.cold_level_3 to species.cold_level_2) - apply_damage(COLD_GAS_DAMAGE_LEVEL_2, BURN, "head", used_weapon = "Excessive Cold") - fire_alert = max(fire_alert, 1) - if(species.cold_level_2 to species.cold_level_1) - apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, "head", used_weapon = "Excessive Cold") - fire_alert = max(fire_alert, 1) - if(species.heat_level_1 to species.heat_level_2) + if(breath.temperature > species.heat_level_1) + if(breath.temperature <= species.heat_level_2) apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, "head", used_weapon = "Excessive Heat") fire_alert = max(fire_alert, 2) - if(species.heat_level_2 to species.heat_level_3) + else if(breath.temperature <= species.heat_level_3) apply_damage(HEAT_GAS_DAMAGE_LEVEL_2, BURN, "head", used_weapon = "Excessive Heat") fire_alert = max(fire_alert, 2) - if(species.heat_level_3 to INFINITY) + else apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Heat") fire_alert = max(fire_alert, 2) + + else if(breath.temperature < species.cold_level_1) + if(breath.temperature >= species.cold_level_2) + apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, "head", used_weapon = "Excessive Cold") + fire_alert = max(fire_alert, 1) + else if(breath.temperature >= species.cold_level_3) + apply_damage(COLD_GAS_DAMAGE_LEVEL_2, BURN, "head", used_weapon = "Excessive Cold") + fire_alert = max(fire_alert, 1) + else + apply_damage(COLD_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Cold") + fire_alert = max(fire_alert, 1) + //breathing in hot/cold air also heats/cools you a bit var/temp_adj = breath.temperature - bodytemperature @@ -704,31 +707,31 @@ //Body temperature is too hot. fire_alert = max(fire_alert, 1) if(status_flags & GODMODE) return 1 //godmode - switch(bodytemperature) - if(species.heat_level_1 to species.heat_level_2) - take_overall_damage(burn=HEAT_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature") - fire_alert = max(fire_alert, 2) - if(species.heat_level_2 to species.heat_level_3) - take_overall_damage(burn=HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature") - fire_alert = max(fire_alert, 2) - if(species.heat_level_3 to INFINITY) - take_overall_damage(burn=HEAT_DAMAGE_LEVEL_3, used_weapon = "High Body Temperature") - fire_alert = max(fire_alert, 2) + + if(bodytemperature <= species.heat_level_2) + take_overall_damage(burn=HEAT_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature") + fire_alert = max(fire_alert, 2) + else if(bodytemperature <= species.heat_level_3) + take_overall_damage(burn=HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature") + fire_alert = max(fire_alert, 2) + else + take_overall_damage(burn=HEAT_DAMAGE_LEVEL_3, used_weapon = "High Body Temperature") + fire_alert = max(fire_alert, 2) else if(bodytemperature < species.cold_level_1) fire_alert = max(fire_alert, 1) if(status_flags & GODMODE) return 1 //godmode + if(!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) - switch(bodytemperature) - if(species.cold_level_2 to species.cold_level_1) - take_overall_damage(burn=COLD_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature") - fire_alert = max(fire_alert, 1) - if(species.cold_level_3 to species.cold_level_2) - take_overall_damage(burn=COLD_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature") - fire_alert = max(fire_alert, 1) - if(-INFINITY to species.cold_level_3) - take_overall_damage(burn=COLD_DAMAGE_LEVEL_3, used_weapon = "High Body Temperature") - fire_alert = max(fire_alert, 1) + if(bodytemperature >= species.cold_level_2) + take_overall_damage(burn=COLD_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature") + fire_alert = max(fire_alert, 1) + else if(bodytemperature >= species.cold_level_3) + take_overall_damage(burn=COLD_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature") + fire_alert = max(fire_alert, 1) + else + take_overall_damage(burn=COLD_DAMAGE_LEVEL_3, used_weapon = "High Body Temperature") + fire_alert = max(fire_alert, 1) // Account for massive pressure differences. Done by Polymorph // Made it possible to actually have something that can protect against high pressure... Done by Errorage. Polymorph now has an axe sticking from his head for his previous hardcoded nonsense! From b0be5a90ff2141ad46368422da7e6eedfe9127d1 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Tue, 3 Mar 2015 13:37:26 +0300 Subject: [PATCH 048/168] Fixed exploit that allowed you to apply surgery step to any zone regardless of where you state it. For example it allows you to cut off heads, groins and even torsos by starting to cut off limb and then switching to other zone. Also now surgery lock is area-based, so more than one surgeon can work on different organs at same time. --- code/modules/surgery/surgery.dm | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 825a4c582e..61d6688a6f 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -82,27 +82,27 @@ proc/do_surgery(mob/living/carbon/M, mob/living/user, obj/item/tool) return 0 if (user.a_intent == "harm") //check for Hippocratic Oath return 0 - if(M.op_stage.in_progress) //Can't operate on someone repeatedly. - user << "\red You can't operate on the patient while surgery is already in progress." + var/zone = user.zone_sel.selecting + if(zone in M.op_stage.in_progress) //Can't operate on someone repeatedly. + user << "\red You can't operate on this area while surgery is already in progress." return 1 - for(var/datum/surgery_step/S in surgery_steps) //check if tool is right or close enough and if this step is possible if(S.tool_quality(tool)) - var/step_is_valid = S.can_use(user, M, user.zone_sel.selecting, tool) + var/step_is_valid = S.can_use(user, M, zone, tool) if(step_is_valid && S.is_valid_target(M)) if(step_is_valid == 2) // This is a failure that already has a message for failing. return 1 - M.op_stage.in_progress = 1 - S.begin_step(user, M, user.zone_sel.selecting, tool) //start on it + M.op_stage.in_progress += zone + S.begin_step(user, M, zone, tool) //start on it //We had proper tools! (or RNG smiled.) and user did not move or change hands. if(prob(S.tool_quality(tool)) && do_mob(user, M, rand(S.min_duration, S.max_duration))) - S.end_step(user, M, user.zone_sel.selecting, tool) //finish successfully + S.end_step(user, M, zone, tool) //finish successfully else if ((tool in user.contents) && user.Adjacent(M)) //or - S.fail_step(user, M, user.zone_sel.selecting, tool) //malpractice~ + S.fail_step(user, M, zone, tool) //malpractice~ else // This failing silently was a pain. user << "\red You must remain close to your patient to conduct surgery." - M.op_stage.in_progress = 0 // Clear the in-progress flag. + M.op_stage.in_progress -= zone // Clear the in-progress flag. return 1 //don't want to do weapony things after surgery if (user.a_intent == "help") @@ -131,4 +131,4 @@ proc/sort_surgeries() var/face = 0 var/head_reattach = 0 var/current_organ = "organ" - var/in_progress = 0 \ No newline at end of file + var/list/in_progress = list() \ No newline at end of file From 99406e3077ca8017d71756153d779b0f02a3d3a7 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 2 Mar 2015 14:40:07 +0100 Subject: [PATCH 049/168] NanoUI AI door interface. Related: Cleans up airlock Topic() Power and electricity is now also handled by process instead of sleeps(). Wires, remote door controls, etc. now use airlock procs instead of manhandling variables directly. --- code/_onclick/ai.dm | 18 +- code/datums/spells/knock.dm | 5 +- code/datums/wires/airlock.dm | 48 +-- code/game/machinery/door_control.dm | 7 +- code/game/machinery/doors/airlock.dm | 524 ++++++++++----------------- code/game/machinery/doors/door.dm | 11 +- nano/css/shared.css | 48 ++- nano/templates/door_control.tmpl | 65 ++++ nano/templates/turret_control.tmpl | 6 +- 9 files changed, 304 insertions(+), 428 deletions(-) create mode 100644 nano/templates/door_control.tmpl diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 3c66cdca92..0bedcfa588 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -106,9 +106,9 @@ /obj/machinery/door/airlock/AIShiftClick() // Opens and closes doors! if(density) - Topic(src, list("src"= "\ref[src]", "aiEnable"="7"), 1) // 1 meaning no window (consistency!) + Topic(src, list("src"= "\ref[src]", "command"="open", "activate" = "1"), 1) // 1 meaning no window (consistency!) else - Topic(src, list("src"= "\ref[src]", "aiDisable"="7"), 1) + Topic(src, list("src"= "\ref[src]", "command"="open", "activate" = "0"), 1) return /atom/proc/AICtrlClick() @@ -116,9 +116,9 @@ /obj/machinery/door/airlock/AICtrlClick() // Bolts doors if(locked) - Topic(src, list("src"= "\ref[src]", "aiEnable"="4"), 1)// 1 meaning no window (consistency!) + Topic(src, list("src"= "\ref[src]", "command"="bolts", "activate" = "0"), 1)// 1 meaning no window (consistency!) else - Topic(src, list("src"= "\ref[src]", "aiDisable"="4"), 1) + Topic(src, list("src"= "\ref[src]", "command"="bolts", "activate" = "1"), 1) /obj/machinery/power/apc/AICtrlClick() // turns off/on APCs. Topic(src, list("src"= "\ref[src]", "breaker"="1"), 1) // 1 meaning no window (consistency!) @@ -130,12 +130,12 @@ AltClick(A) /obj/machinery/door/airlock/AIAltClick() // Electrifies doors. - if(!secondsElectrified) + if(!electrified_until) // permanent shock - Topic(src, list("src"= "\ref[src]", "aiEnable"="6"), 1) // 1 meaning no window (consistency!) + Topic(src, list("src"= "\ref[src]", "command"="electrify_permanently", "activate" = "1"), 1) // 1 meaning no window (consistency!) else // disable/6 is not in Topic; disable/5 disables both temporary and permanent shock - Topic(src, list("src"= "\ref[src]", "aiDisable"="5"), 1) + Topic(src, list("src"= "\ref[src]", "command"="electrify_permanently", "activate" = "0"), 1) return /obj/machinery/turretid/AIAltClick() //toggles lethal on turrets @@ -146,9 +146,9 @@ /obj/machinery/door/airlock/AIMiddleClick() // Toggles door bolt lights. if(!src.lights) - Topic(src, list("src"= "\ref[src]", "aiEnable"="10"), 1) // 1 meaning no window (consistency!) + Topic(src, list("src"= "\ref[src]", "command"="lights", "activate" = "1"), 1) // 1 meaning no window (consistency!) else - Topic(src, list("src"= "\ref[src]", "aiDisable"="10"), 1) + Topic(src, list("src"= "\ref[src]", "command"="lights", "activate" = "0"), 1) return // diff --git a/code/datums/spells/knock.dm b/code/datums/spells/knock.dm index 48ba2c633c..49d9bb0924 100644 --- a/code/datums/spells/knock.dm +++ b/code/datums/spells/knock.dm @@ -14,6 +14,7 @@ for(var/obj/machinery/door/door in T.contents) spawn(1) if(istype(door,/obj/machinery/door/airlock)) - door:unlock(1) //forced because it's magic! + var/obj/machinery/door/airlock/A = door + A.unlock(1) //forced because it's magic! door.open() - return \ No newline at end of file + return diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index f8b796269f..7e8c8779cf 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -35,9 +35,9 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048 /datum/wires/airlock/GetInteractWindow() var/obj/machinery/door/airlock/A = holder var/haspower = A.arePowerSystemsOn() //If there's no power, then no lights will be on. - + . += ..() - . += text("
\n[]
\n[]
\n[]
\n[]
\n[]
\n[]
\n[]", + . += text("
\n[]
\n[]
\n[]
\n[]
\n[]
\n[]
\n[]", (A.locked ? "The door bolts have fallen!" : "The door bolts look up."), ((A.lights && haspower) ? "The door bolt lights are on." : "The door bolt lights are off!"), ((haspower) ? "The test light is on." : "The test light is off!"), @@ -59,9 +59,8 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048 A.loseMainPower() A.shock(usr, 50) else - if((!IsIndexCut(AIRLOCK_WIRE_MAIN_POWER1)) && (!IsIndexCut(AIRLOCK_WIRE_MAIN_POWER2))) - A.regainMainPower() - A.shock(usr, 50) + A.regainMainPower() + A.shock(usr, 50) if(AIRLOCK_WIRE_BACKUP_POWER1, AIRLOCK_WIRE_BACKUP_POWER2) @@ -70,16 +69,14 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048 A.loseBackupPower() A.shock(usr, 50) else - if((!IsIndexCut(AIRLOCK_WIRE_BACKUP_POWER1)) && (!IsIndexCut(AIRLOCK_WIRE_BACKUP_POWER2))) - A.regainBackupPower() - A.shock(usr, 50) + A.regainBackupPower() + A.shock(usr, 50) if(AIRLOCK_WIRE_DOOR_BOLTS) if(!mended) //Cutting this wire also drops the door bolts, and mending it does not raise them. (This is what happens now, except there are a lot more wires going to door bolts at present) - if(A.locked!=1) - A.locked = 1 + A.lock(1) A.update_icon() if(AIRLOCK_WIRE_AI_CONTROL) @@ -98,16 +95,11 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048 A.aiControlDisabled = -1 if(AIRLOCK_WIRE_ELECTRIFY) - if(!mended) //Cutting this wire electrifies the door, so that the next person to touch the door without insulated gloves gets electrocuted. - if(A.secondsElectrified != -1) - A.shockedby += text("\[[time_stamp()]\][usr](ckey:[usr.ckey])") - add_logs(usr, A, "electrified", admin=0, addition="at [A.x],[A.y],[A.z]") - A.secondsElectrified = -1 + A.electrify(-1) else - if(A.secondsElectrified == -1) - A.secondsElectrified = 0 + A.electrify(0) return // Don't update the dialog. if (AIRLOCK_WIRE_SAFETY) @@ -139,13 +131,9 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048 //one wire for door bolts. Sending a pulse through this drops door bolts if they're not down (whether power's on or not), //raises them if they are down (only if power's on) if(!A.locked) - A.locked = 1 - A.audible_message("You hear a click from the bottom of the door.", null, 1) + A.lock() else - if(A.arePowerSystemsOn()) //only can raise bolts if power's on - A.locked = 0 - A.audible_message("You hear a click from the bottom of the door.", null, 1) - A.update_icon() + A.unlock() if(AIRLOCK_WIRE_BACKUP_POWER1 || AIRLOCK_WIRE_BACKUP_POWER2) //two wires for backup power. Sending a pulse through either one causes a breaker to trip, but this does not disable it unless main power is down too (in which case it is disabled for 1 minute or however long it takes main power to come back, whichever is shorter). @@ -165,19 +153,7 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048 if(AIRLOCK_WIRE_ELECTRIFY) //one wire for electrifying the door. Sending a pulse through this electrifies the door for 30 seconds. - if(A.secondsElectrified==0) - A.shockedby += text("\[[time_stamp()]\][usr](ckey:[usr.ckey])") - add_logs(usr, A, "electrified", admin=0, addition="at [A.x],[A.y],[A.z]") - A.secondsElectrified = 30 - spawn(10) - if(A) - //TODO: Move this into process() and make pulsing reset secondsElectrified to 30 - while (A.secondsElectrified>0) - A.secondsElectrified-=1 - if(A.secondsElectrified<0) - A.secondsElectrified = 0 - sleep(10) - return + A.electrify(30) if(AIRLOCK_WIRE_OPEN_DOOR) //tries to open the door without ID //will succeed only if the ID wire is cut or the door requires no access and it's not emagged diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index 51bc9b69e6..8942f8434e 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -81,17 +81,16 @@ if(specialfunctions & BOLTS) D.lock() if(specialfunctions & SHOCK) - D.secondsElectrified = -1 + D.electrify(-1) if(specialfunctions & SAFE) D.safe = 0 else if(specialfunctions & IDSCAN) D.aiDisabledIdScanner = 0 if(specialfunctions & BOLTS) - if(!D.isWireCut(4) && D.arePowerSystemsOn()) - D.unlock() + D.unlock() if(specialfunctions & SHOCK) - D.secondsElectrified = 0 + D.electrify(0) if(specialfunctions & SAFE) D.safe = 1 diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index a548739960..366a5f6ffa 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -7,13 +7,13 @@ explosion_resistance = 15 var/aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in. var/hackProof = 0 // if 1, this door can't be hacked by the AI - var/secondsMainPowerLost = 0 //The number of seconds until power is restored. - var/secondsBackupPowerLost = 0 //The number of seconds until power is restored. + var/electrified_until = 0 // World time when the door is no longer electrified. -1 if it is permanently electrified until someone fixes it. + var/main_power_lost_until = 0 //World time when main power is restored. + var/backup_power_lost_until = -1 //World time when backup power is restored. var/spawnPowerRestoreRunning = 0 var/welded = null var/locked = 0 var/lights = 1 // bolt lights show by default - secondsElectrified = 0 //How many seconds remain until the door is no longer electrified. -1 if it is permanently electrified until someone fixes it. var/aiDisabledIdScanner = 0 var/aiHacking = 0 var/obj/machinery/door/airlock/closeOther = null @@ -217,6 +217,17 @@ mineral = "uranium" var/last_event = 0 +/obj/machinery/door/airlock/process() + // Deliberate no call to parent. + if(main_power_lost_until > 0 && world.time >= main_power_lost_until) + regainMainPower() + + if(backup_power_lost_until > 0 && world.time >= backup_power_lost_until) + regainBackupPower() + + else if(electrified_until > 0 && world.time >= electrified_until) + electrify(0) + /obj/machinery/door/airlock/uranium/process() if(world.time > last_event+20) if(prob(50)) @@ -319,7 +330,7 @@ About the new airlock wires panel: ..(user) /obj/machinery/door/airlock/proc/isElectrified() - if(src.secondsElectrified != 0) + if(src.electrified_until != 0) return 1 return 0 @@ -336,7 +347,7 @@ About the new airlock wires panel: /obj/machinery/door/airlock/proc/arePowerSystemsOn() if (stat & (NOPOWER|BROKEN)) return 0 - return (src.secondsMainPowerLost==0 || src.secondsBackupPowerLost==0) + return (src.main_power_lost_until==0 || src.backup_power_lost_until==0) /obj/machinery/door/airlock/requiresID() return !(src.isWireCut(AIRLOCK_WIRE_IDSCAN) || aiDisabledIdScanner) @@ -344,48 +355,68 @@ About the new airlock wires panel: /obj/machinery/door/airlock/proc/isAllPowerLoss() if(stat & (NOPOWER|BROKEN)) return 1 - if(src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1) || src.isWireCut(AIRLOCK_WIRE_MAIN_POWER2)) - if(src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1) || src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER2)) - return 1 + if(mainPowerCablesCut() && backupPowerCablesCut()) + return 1 return 0 -/obj/machinery/door/airlock/proc/regainMainPower() - if(src.secondsMainPowerLost > 0) - src.secondsMainPowerLost = 0 +/obj/machinery/door/airlock/proc/mainPowerCablesCut() + return src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1) || src.isWireCut(AIRLOCK_WIRE_MAIN_POWER2) + +/obj/machinery/door/airlock/proc/backupPowerCablesCut() + return src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1) || src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER2) /obj/machinery/door/airlock/proc/loseMainPower() - if(src.secondsMainPowerLost <= 0) - src.secondsMainPowerLost = 60 - if(src.secondsBackupPowerLost < 10) - src.secondsBackupPowerLost = 10 - if(!src.spawnPowerRestoreRunning) - src.spawnPowerRestoreRunning = 1 - spawn(0) - var/cont = 1 - while (cont) - sleep(10) - cont = 0 - if(src.secondsMainPowerLost>0) - if((!src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1)) && (!src.isWireCut(AIRLOCK_WIRE_MAIN_POWER2))) - src.secondsMainPowerLost -= 1 - src.updateDialog() - cont = 1 + main_power_lost_until = mainPowerCablesCut() ? -1 : world.time + SecondsToTicks(60) - if(src.secondsBackupPowerLost>0) - if((!src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1)) && (!src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER2))) - src.secondsBackupPowerLost -= 1 - src.updateDialog() - cont = 1 - src.spawnPowerRestoreRunning = 0 - src.updateDialog() + // If backup power is permanently disabled then activate in 10 seconds if possible, otherwise it's already enabled or a timer is already running + if(backup_power_lost_until == -1 && !backupPowerCablesCut()) + backup_power_lost_until = world.time + SecondsToTicks(10) + + // Disable electricity if required + if(electrified_until && isAllPowerLoss()) + electrify(0) /obj/machinery/door/airlock/proc/loseBackupPower() - if(src.secondsBackupPowerLost < 60) - src.secondsBackupPowerLost = 60 + backup_power_lost_until = backupPowerCablesCut() ? -1 : world.time + SecondsToTicks(60) + + // Disable electricity if required + if(electrified_until && isAllPowerLoss()) + electrify(0) + +/obj/machinery/door/airlock/proc/regainMainPower() + if(!mainPowerCablesCut()) + main_power_lost_until = 0 + // If backup power is currently active then disable, otherwise let it count down and disable itself later + if(!backup_power_lost_until) + backup_power_lost_until = -1 /obj/machinery/door/airlock/proc/regainBackupPower() - if(src.secondsBackupPowerLost > 0) - src.secondsBackupPowerLost = 0 + if(!backupPowerCablesCut()) + // Restore backup power only if main power is offline, otherwise permanently disable + backup_power_lost_until = main_power_lost_until == 0 ? -1 : 0 + +/obj/machinery/door/airlock/proc/electrify(var/duration, var/feedback = 0) + var/message = "" + if(src.isWireCut(AIRLOCK_WIRE_ELECTRIFY) && arePowerSystemsOn()) + message = text("The electrification wire is cut - Door permanently electrified.") + src.electrified_until = -1 + else if(duration && !arePowerSystemsOn()) + message = text("The door is unpowered - Cannot electrify the door.") + src.electrified_until = 0 + else if(!duration && electrified_until != 0) + message = "The door is now un-electrified." + src.electrified_until = 0 + else if(duration) //electrify door for the given duration seconds + if(usr) + shockedby += text("\[[time_stamp()]\] - [usr](ckey:[usr.ckey])") + usr.attack_log += text("\[[time_stamp()]\] Electrified the [name] at [x] [y] [z]") + else + shockedby += text("\[[time_stamp()]\] - EMP)") + message = "The door is now electrified [duration == -1 ? "permanently" : "for [duration] second\s"]." + src.electrified_until = duration == -1 ? -1 : world.time + SecondsToTicks(duration) + + if(feedback && message) + usr << message // shock user with probability prb (if all connections & power are working) // returns 1 if shocked, 0 otherwise @@ -460,111 +491,32 @@ About the new airlock wires panel: return /obj/machinery/door/airlock/attack_ai(mob/user as mob) - if (!check_synth_access(user)) - return + ui_interact(user) - //Separate interface for the AI. - user.set_machine(src) - var/t1 = text("Airlock Control
\n") - if(src.secondsMainPowerLost > 0) - if((!src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1)) && (!src.isWireCut(AIRLOCK_WIRE_MAIN_POWER2))) - t1 += text("Main power is offline for [] seconds.
\n", src.secondsMainPowerLost) - else - t1 += text("Main power is offline indefinitely.
\n") - else - t1 += text("Main power is online.") +/obj/machinery/door/airlock/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/data[0] - if(src.secondsBackupPowerLost > 0) - if((!src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1)) && (!src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER2))) - t1 += text("Backup power is offline for [] seconds.
\n", src.secondsBackupPowerLost) - else - t1 += text("Backup power is offline indefinitely.
\n") - else if(src.secondsMainPowerLost > 0) - t1 += text("Backup power is online.") - else - t1 += text("Backup power is offline, but will turn on if main power fails.") - t1 += "
\n" + data["main_power_loss"] = round(main_power_lost_until > 0 ? max(main_power_lost_until - world.time, 0) / 10 : main_power_lost_until, 1) + data["backup_power_loss"] = round(backup_power_lost_until > 0 ? max(backup_power_lost_until - world.time, 0) / 10 : backup_power_lost_until, 1) + data["electrified"] = round(electrified_until > 0 ? max(electrified_until - world.time, 0) / 10 : electrified_until, 1) + data["open"] = !density - if(src.isWireCut(AIRLOCK_WIRE_IDSCAN)) - t1 += text("IdScan wire is cut.
\n") - else if(src.aiDisabledIdScanner) - t1 += text("IdScan disabled. Enable?
\n", src) - else - t1 += text("IdScan enabled. Disable?
\n", src) + var/commands[0] + commands[++commands.len] = list("name" = "IdScan", "command"= "idscan", "active" = !aiDisabledIdScanner, "enabled" = "Enabled", "disabled" = "Disable", "danger" = 0, "act" = 1) + commands[++commands.len] = list("name" = "Bolts", "command"= "bolts", "active" = !locked, "enabled" = "Raised ", "disabled" = "Dropped", "danger" = 0, "act" = 0) + commands[++commands.len] = list("name" = "Bolt Lights", "command"= "lights", "active" = lights, "enabled" = "Enabled", "disabled" = "Disable", "danger" = 0, "act" = 1) + commands[++commands.len] = list("name" = "Safeties", "command"= "safeties", "active" = safe, "enabled" = "Nominal", "disabled" = "Overridden", "danger" = 1, "act" = 0) + commands[++commands.len] = list("name" = "Timing", "command"= "timing", "active" = normalspeed, "enabled" = "Nominal", "disabled" = "Overridden", "danger" = 1, "act" = 0) + commands[++commands.len] = list("name" = "Door State", "command"= "open", "active" = density, "enabled" = "Closed", "disabled" = "Opened", "danger" = 0, "act" = 0) - if(src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1)) - t1 += text("Main Power Input wire is cut.
\n") - if(src.isWireCut(AIRLOCK_WIRE_MAIN_POWER2)) - t1 += text("Main Power Output wire is cut.
\n") - if(src.secondsMainPowerLost == 0) - t1 += text("Temporarily disrupt main power?.
\n", src) - if(src.secondsBackupPowerLost == 0) - t1 += text("Temporarily disrupt backup power?.
\n", src) - - if(src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1)) - t1 += text("Backup Power Input wire is cut.
\n") - if(src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER2)) - t1 += text("Backup Power Output wire is cut.
\n") - - if(src.isWireCut(AIRLOCK_WIRE_DOOR_BOLTS)) - t1 += text("Door bolt control wire is cut.
\n") - else if(!src.locked) - t1 += text("Door bolts are up. Drop them?
\n", src) - else - t1 += text("Door bolts are down.") - if(src.arePowerSystemsOn()) - t1 += text(" Raise?
\n", src) - else - t1 += text(" Cannot raise door bolts due to power failure.
\n") - - if(src.isWireCut(AIRLOCK_WIRE_LIGHT)) - t1 += text("Door bolt lights wire is cut.
\n") - else if(!src.lights) - t1 += text("Door lights are off. Enable?
\n", src) - else - t1 += text("Door lights are on. Disable?
\n", src) - - if(src.isWireCut(AIRLOCK_WIRE_ELECTRIFY)) - t1 += text("Electrification wire is cut.
\n") - if(src.secondsElectrified==-1) - t1 += text("Door is electrified indefinitely. Un-electrify it?
\n", src) - else if(src.secondsElectrified>0) - t1 += text("Door is electrified temporarily ([] seconds). Un-electrify it?
\n", src.secondsElectrified, src) - else - t1 += text("Door is not electrified. Electrify it for 30 seconds? Or, Electrify it indefinitely until someone cancels the electrification?
\n", src, src) - - if(src.isWireCut(AIRLOCK_WIRE_SAFETY)) - t1 += text("Door force sensors not responding.
\n") - else if(src.safe) - t1 += text("Door safeties operating normally. Override?
\n",src) - else - t1 += text("Danger. Door safeties disabled. Restore?
\n",src) - - if(src.isWireCut(AIRLOCK_WIRE_SPEED)) - t1 += text("Door timing circuitry not responding.
\n") - else if(src.normalspeed) - t1 += text("Door timing circuitry operating normally. Override?
\n",src) - else - t1 += text("Warning. Door timing circuitry operating abnormally. Restore?
\n",src) - - - - - if(src.welded) - t1 += text("Door appears to have been welded shut.
\n") - else if(!src.locked) - if(src.density) - t1 += text("Open door
\n", src) - else - t1 += text("Close door
\n", src) - - t1 += text("

Close

\n", src) - user << browse(t1, "window=airlock") - onclose(user, "airlock") - -//aiDisable - 1 idscan, 2 disrupt main power, 3 disrupt backup power, 4 drop door bolts, 5 un-electrify door, 7 close door -//aiEnable - 1 idscan, 4 raise door bolts, 5 electrify door for 30 seconds, 6 electrify door indefinitely, 7 open door + data["commands"] = commands + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "door_control.tmpl", "Door Controls", 450, 350) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) /obj/machinery/door/airlock/proc/hack(mob/user as mob) if(src.aiHacking==0) @@ -655,10 +607,13 @@ About the new airlock wires panel: ..(user) return -/obj/machinery/door/airlock/proc/check_synth_access(mob/user as mob) +/obj/machinery/door/airlock/CanUseTopic(var/mob/user, href_list) + if(!user.isSilicon()) + return STATUS_CLOSE + if(operating < 0) //emagged user << "Unable to interface: Internal error." - return 0 + return STATUS_CLOSE if(!src.canAIControl()) if(src.canAIHack(user)) src.hack(user) @@ -667,201 +622,80 @@ About the new airlock wires panel: user << "Unable to interface: Connection timed out." else user << "Unable to interface: Connection refused." - return 0 - return 1 + return STATUS_CLOSE + + return STATUS_INTERACTIVE /obj/machinery/door/airlock/Topic(href, href_list, var/nowindow = 0) if(..()) return 1 - if(href_list["close"]) - usr << browse(null, "window=airlock") - if(usr.machine==src) - usr.unset_machine() - return 1 + var/activate = text2num(href_list["activate"]) + switch (href_list["command"]) + if("idscan") + if(src.isWireCut(AIRLOCK_WIRE_IDSCAN)) + usr << "The IdScan wire has been cut - IdScan feature permanently disabled." + else if(activate && src.aiDisabledIdScanner) + src.aiDisabledIdScanner = 0 + usr << "IdScan feature has been enabled." + else if(!activate && !src.aiDisabledIdScanner) + src.aiDisabledIdScanner = 1 + usr << "IdScan feature has been disabled." + if("main_power") + if(!main_power_lost_until) + src.loseMainPower() + if("backup_power") + if(!backup_power_lost_until) + src.loseBackupPower() + if("bolts") + if(src.isWireCut(AIRLOCK_WIRE_DOOR_BOLTS)) + usr << "The door bolt control wire has been cut - Door bolts permanently dropped." + else if(activate && src.lock()) + usr << "The door bolts have been dropped." + else if(!activate && src.unlock()) + usr << "The door bolts have been raised." + if("electrify_temporary") + electrify(30 * activate, 1) + if("electrify_permanently") + electrify(-1 * activate, 1) + if("open") + if(src.welded) + usr << text("The airlock has been welded shut!") + else if(src.locked) + usr << text("The door bolts are down!") + else if(activate && density) + open() + else if(!activate && !density) + close() + if("safeties") + // Safeties! We don't need no stinking safeties! + if (src.isWireCut(AIRLOCK_WIRE_SAFETY)) + usr << text("The safety wire is cut - Cannot secure the door.") + else if (activate && src.safe) + safe = 0 + else if (!activate && !src.safe) + safe = 1 + if("timing") + // Door speed control + if(src.isWireCut(AIRLOCK_WIRE_SPEED)) + usr << text("The timing wire is cut - Cannot alter timing.") + else if (activate && src.normalspeed) + normalspeed = 0 + else if (!activate && !src.normalspeed) + normalspeed = 1 + if("lights") + // Bolt lights + if(src.isWireCut(AIRLOCK_WIRE_LIGHT)) + usr << "The bolt lights wire has been cut - The door bolt lights are permanently disabled." + else if (!activate && src.lights) + lights = 0 + usr << "The door bolt lights have been disabled." + else if (activate && !src.lights) + lights = 1 + usr << "The door bolt lights have been enabled." - if((in_range(src, usr) && istype(src.loc, /turf)) && src.p_open) - usr.set_machine(src) - - if(istype(usr, /mob/living/silicon)) - if (!check_synth_access(usr)) - return 1 - - //AI - //aiDisable - 1 idscan, 2 disrupt main power, 3 disrupt backup power, 4 drop door bolts, 5 un-electrify door, 7 close door, 8 door safties, 9 door speed - //aiEnable - 1 idscan, 4 raise door bolts, 5 electrify door for 30 seconds, 6 electrify door indefinitely, 7 open door, 8 door safties, 9 door speed - if(href_list["aiDisable"]) - var/code = text2num(href_list["aiDisable"]) - switch (code) - if(1) - //disable idscan - if(src.isWireCut(AIRLOCK_WIRE_IDSCAN)) - usr << "The IdScan wire has been cut - The IdScan feature is already disabled." - else if(src.aiDisabledIdScanner) - usr << "The IdScan feature is already disabled." - else - usr << "The IdScan feature has been disabled." - src.aiDisabledIdScanner = 1 - if(2) - //disrupt main power - if(src.secondsMainPowerLost == 0) - src.loseMainPower() - else - usr << "Main power is already offline." - if(3) - //disrupt backup power - if(src.secondsBackupPowerLost == 0) - src.loseBackupPower() - else - usr << "Backup power is already offline." - if(4) - //drop door bolts - if(src.isWireCut(AIRLOCK_WIRE_DOOR_BOLTS)) - usr << "The door bolt control wire has been cut - The door bolts are already dropped." - else if(src.locked) - usr << "The door bolts are already dropped." - else - if(src.lock()) - usr << "The door bolts have been dropped." - if(5) - //un-electrify door - if(src.isWireCut(AIRLOCK_WIRE_ELECTRIFY)) - usr << text("The electrification wire is cut - Cannot un-electrify the door.") - else if(secondsElectrified != 0) - usr << "The door is now un-electrified." - src.secondsElectrified = 0 - if(7) - //close door - if(src.welded) - usr << text("The airlock has been welded shut!") - else if(src.locked) - usr << text("The door bolts are down!") - else if(!src.density) - close() - else - open() - if(8) - // Safeties! We don't need no stinking safeties! - if (src.isWireCut(AIRLOCK_WIRE_SAFETY)) - usr << text("Control to door sensors is disabled.") - else if (src.safe) - safe = 0 - else - usr << text("Firmware reports safeties already overridden.") - if(9) - // Door speed control - if(src.isWireCut(AIRLOCK_WIRE_SPEED)) - usr << text("Control to door timing circuitry has been severed.") - else if (src.normalspeed) - normalspeed = 0 - else - usr << text("Door timing circuity already accelerated.") - if(10) - // Bolt lights - if(src.isWireCut(AIRLOCK_WIRE_LIGHT)) - usr << "The bolt lights wire has been cut - The door bolt lights are already disabled." - else if (src.lights) - lights = 0 - usr << "The door bolt lights have been disabled." - else - usr << "The door bolt lights are already disabled!" - - else if(href_list["aiEnable"]) - var/code = text2num(href_list["aiEnable"]) - switch (code) - if(1) - //enable idscan - if(src.isWireCut(AIRLOCK_WIRE_IDSCAN)) - usr << "The IdScan wire has been cut - The IdScan feature cannot be enabled." - else if(src.aiDisabledIdScanner) - usr << "The IdScan feature has been enabled." - src.aiDisabledIdScanner = 0 - else - usr << "The IdScan feature is already enabled." - if(4) - //raise door bolts - if(src.isWireCut(AIRLOCK_WIRE_DOOR_BOLTS)) - usr << "The door bolt control wire has been cut - The door bolts cannot be raised." - else if(!src.locked) - usr << "The door bolts are already raised." - else - if(src.unlock()) - usr << "The door bolts have been raised." - else - usr << "Unable to raise door bolts." - if(5) - //electrify door for 30 seconds - if(src.isWireCut(AIRLOCK_WIRE_ELECTRIFY)) - usr << text("The electrification wire has been cut.
\n") - else if(src.secondsElectrified==-1) - usr << text("The door is already indefinitely electrified. You'd have to un-electrify it before you can re-electrify it with a non-forever duration.
\n") - else if(src.secondsElectrified!=0) - usr << text("The door is already electrified. Cannot re-electrify it while it's already electrified.
\n") - else - shockedby += text("\[[time_stamp()]\][usr](ckey:[usr.ckey])") - usr.attack_log += text("\[[time_stamp()]\] Electrified the [name] at [x] [y] [z]") - usr << "The door is now electrified for thirty seconds." - src.secondsElectrified = 30 - spawn(10) - while (src.secondsElectrified>0) - src.secondsElectrified-=1 - if(src.secondsElectrified<0) - src.secondsElectrified = 0 - sleep(10) - if(6) - //electrify door indefinitely - if(src.isWireCut(AIRLOCK_WIRE_ELECTRIFY)) - usr << text("The electrification wire has been cut.
\n") - else if(src.secondsElectrified==-1) - usr << text("The door is already indefinitely electrified.
\n") - else if(src.secondsElectrified!=0) - usr << text("The door is already electrified. You can't re-electrify it while it's already electrified.
\n") - else - shockedby += text("\[[time_stamp()]\][usr](ckey:[usr.ckey])") - usr.attack_log += text("\[[time_stamp()]\] Electrified the [name] at [x] [y] [z]") - usr << "The door is now electrified." - src.secondsElectrified = -1 - if(7) - //open door - if(src.welded) - usr << text("The airlock has been welded shut!") - else if(src.locked) - usr << text("The door bolts are down!") - else if(src.density) - open() - else - close() - if (8) - // Safeties! Maybe we do need some stinking safeties! - if (src.isWireCut(AIRLOCK_WIRE_SAFETY)) - usr << text("Control to door sensors is disabled.") - else if (!src.safe) - safe = 1 - else - usr << text("Firmware reports safeties already in place.") - if(9) - // Door speed control - if(src.isWireCut(AIRLOCK_WIRE_SPEED)) - usr << text("Control to door timing circuitry has been severed.") - else if (!src.normalspeed) - normalspeed = 1 - else - usr << text("Door timing circuity currently operating normally.") - if(10) - // Bolt lights - if(src.isWireCut(AIRLOCK_WIRE_LIGHT)) - usr << "The bolt lights wire has been cut - The door bolt lights cannot be enabled." - else if (!src.lights) - lights = 1 - usr << "The door bolt lights have been enabled" - else - usr << "The door bolt lights are already enabled!" - - add_fingerprint(usr) update_icon() - if(!nowindow) - updateUsrDialog() - return 0 + return 1 /obj/machinery/door/airlock/attackby(C as obj, mob/user as mob) //world << text("airlock attackby src [] obj [] mob []", src, C, user) @@ -1053,7 +887,10 @@ About the new airlock wires panel: return /obj/machinery/door/airlock/proc/lock(var/forced=0) - if (operating || src.locked) return 0 + if(locked) + return 0 + + if (operating && !forced) return 0 src.locked = 1 for(var/mob/M in range(1,src)) @@ -1062,15 +899,17 @@ About the new airlock wires panel: return 1 /obj/machinery/door/airlock/proc/unlock(var/forced=0) - if (operating || !src.locked) return + if(!src.locked) + return - if (forced || (src.arePowerSystemsOn())) //only can raise bolts if power's on - src.locked = 0 - for(var/mob/M in range(1,src)) - M.show_message("You hear a click from the bottom of the door.", 2) - update_icon() - return 1 - return 0 + if (!forced) + if(operating || !src.arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_DOOR_BOLTS)) return + + src.locked = 0 + for(var/mob/M in range(1,src)) + M.show_message("You hear a click from the bottom of the door.", 2) + update_icon() + return 1 /obj/machinery/door/airlock/New(var/newloc, var/obj/structure/door_assembly/assembly=null) ..() @@ -1128,8 +967,19 @@ About the new airlock wires panel: electronics.conf_access = src.req_one_access electronics.one_access = 1 +/obj/machinery/door/airlock/emp_act(var/severity) + if(prob(40/severity)) + var/duration = world.time + SecondsToTicks(30 / severity) + if(duration > electrified_until) + electrify(duration) + ..() + /obj/machinery/door/airlock/power_change() //putting this is obj/machinery/door itself makes non-airlock doors turn invisible for some reason ..() + if(stat & NOPOWER) + // If we lost power, disable electrification + // Keeping door lights on, runs on internal battery or something. + electrified_until = 0 update_icon() /obj/machinery/door/airlock/proc/prison_open() diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 32d2b314dc..a74cc5539d 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -16,7 +16,6 @@ var/open_layer = DOOR_OPEN_LAYER var/closed_layer = DOOR_CLOSED_LAYER - var/secondsElectrified = 0 var/visible = 1 var/p_open = 0 var/operating = 0 @@ -75,9 +74,6 @@ ..() return -//process() - //return - /obj/machinery/door/Bumped(atom/AM) if(p_open || operating) return if(ismob(AM)) @@ -146,7 +142,7 @@ return // Emitter Blasts - these will eventually completely destroy the door, given enough time. - if (Proj.damage > 90) + if (Proj.damage > 90) destroy_hits-- if (destroy_hits <= 0) visible_message("\red \The [src.name] disintegrates!") @@ -317,11 +313,6 @@ /obj/machinery/door/emp_act(severity) if(prob(20/severity) && (istype(src,/obj/machinery/door/airlock) || istype(src,/obj/machinery/door/window)) ) open() - if(prob(40/severity)) - if(secondsElectrified == 0) - secondsElectrified = -1 - spawn(300) - secondsElectrified = 0 ..() diff --git a/nano/css/shared.css b/nano/css/shared.css index 9ff97dd02c..b7c9bd66df 100644 --- a/nano/css/shared.css +++ b/nano/css/shared.css @@ -248,47 +248,41 @@ div.notice { clear: both; } -.itemLabel, .itemLabelWide { +.itemContentNarrow, .itemContent { + float: left; +} + +.itemContentNarrow { + width: 30%; +} + +.itemContent { + width: 69%; +} + +.itemLabelNarrow, .itemLabel, .itemLabelWide, .itemLabelWider, .itemLabelWidest { float: left; color: #e9c183; } +.itemLabelNarrow { + width: 20%; +} + .itemLabel { width: 30%; } .itemLabelWide { - width: 69%; -} - -.itemContent, .itemContentThin { - float: left; -} - -.itemContent { - width: 69%; -} - -.itemContentThin { - width: 30%; -} - -.itemLabelNarrow { - float: left; - width: 20%; - color: #e9c183; -} - -.itemLabelWide { - float: left; width: 45%; - color: #e9c183; +} + +.itemLabelWider { + width: 69%; } .itemLabelWidest { - float: left; width: 100%; - color: #e9c183; } .itemContentWide { diff --git a/nano/templates/door_control.tmpl b/nano/templates/door_control.tmpl new file mode 100644 index 0000000000..32b0d1df59 --- /dev/null +++ b/nano/templates/door_control.tmpl @@ -0,0 +1,65 @@ + + +
+
+ Main power is + {{if data.main_power_loss == 0}} + online + {{else data.main_power_loss == -1}} + offline + {{else}} + offline for {{:data.main_power_loss}} second{{:data.main_power_loss == 1 ? '' : 's'}} + {{/if}}. +
+
+ {{:helper.link(data.main_power_loss ? 'Disabled' : 'Disable', null, {'command' : 'main_power'}, data.main_power_loss == 0 ? null : 'disabled', data.main_power_loss == 0 ? 'redButton' : null)}} +
+
+ +
+
+ Backup power is + {{if data.backup_power_loss == 0}} + online + {{else data.backup_power_loss == -1}} + offline + {{else}} + offline for {{:data.backup_power_loss}} second{{:data.backup_power_loss == 1 ? '' : 's'}} + {{/if}}. +
+
+ {{:helper.link(data.backup_power_loss ? 'Disabled' : 'Disable', null, {'command' : 'backup_power'}, data.backup_power_loss == 0 ? null : 'disabled', data.backup_power_loss == 0 ? 'redButton' : null)}} +
+
+ +
+
+ Electrified Status: +
+
+ {{:helper.link('Offline' , null, {'command' : 'electrify_permanently', 'activate' : "0" }, null, data.electrified == 0 ? 'selected' : null)}} + {{:helper.link(data.electrified <= 0 ? 'Temporary (30s)' : 'Temporary (' + data.electrified +'s)', null, {'command' : 'electrify_temporary', 'activate' : "1"}, null, data.electrified > 0 ? 'redButton' : null)}} + {{:helper.link('Permanent', null, {'command' : 'electrify_permanently', 'activate' : "1"}, null, data.electrified == -1 ? 'redButton' : null)}} +
+
+ +
+ + + {{for data.commands}} + + + + + + {{/for}} +
{{:value.name}}:{{:helper.link(value.enabled, null, {'command' : value.command, 'activate' : value.act ? 1 : 0}, null, value.active ? 'selected' : null)}}{{:helper.link(value.disabled,null, {'command' : value.command, 'activate' : value.act ? 0 : 1}, null,!value.active ? (value.danger ? 'redButton' : 'selected') : null)}}
diff --git a/nano/templates/turret_control.tmpl b/nano/templates/turret_control.tmpl index d8ff133d27..4e0e1acc89 100644 --- a/nano/templates/turret_control.tmpl +++ b/nano/templates/turret_control.tmpl @@ -9,7 +9,7 @@
Turret Status:
-
+
{{:helper.link('Enabled', null, {'command' : 'enable', 'value' : 1}, null, data.enabled ?'redButton' : null)}} {{:helper.link('Disabled',null, {'command' : 'enable', 'value' : 0}, null,!data.enabled ? 'selected' : null)}}
@@ -20,7 +20,7 @@
Lethal Mode:
-
+
{{:helper.link('On', null, {'command' : 'lethal', 'value' : 1}, null, data.lethal ?'redButton' : null)}} {{:helper.link('Off',null, {'command' : 'lethal', 'value' : 0}, null,!data.lethal ? 'selected' : null)}}
@@ -32,7 +32,7 @@
{{:value.category}}
-
+
{{:helper.link('On', null, {'command' : value.setting, 'value' : 1}, null, value.value ? 'selected' : null)}} {{:helper.link('Off',null, {'command' : value.setting, 'value' : 0}, null,!value.value ? 'selected' : null)}}
From 8f929331d8d3141e77f8d459fdaaa8bece307509 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 3 Mar 2015 15:33:15 +0100 Subject: [PATCH 050/168] Fixes #8343 Fuel no longer attempts to spread itself after having been deleted. --- code/game/objects/effects/decals/Cleanable/fuel.dm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/code/game/objects/effects/decals/Cleanable/fuel.dm b/code/game/objects/effects/decals/Cleanable/fuel.dm index 5162d0f6df..9c37a64331 100644 --- a/code/game/objects/effects/decals/Cleanable/fuel.dm +++ b/code/game/objects/effects/decals/Cleanable/fuel.dm @@ -12,15 +12,20 @@ obj/effect/decal/cleanable/liquid_fuel log_game("Liquid fuel has spilled in [newLoc.loc.name] ([newLoc.x],[newLoc.y],[newLoc.z])") src.amount = amt + var/has_spread = 0 //Be absorbed by any other liquid fuel in the tile. for(var/obj/effect/decal/cleanable/liquid_fuel/other in newLoc) if(other != src) other.amount += src.amount - spawn other.Spread() - del src + other.Spread() + has_spread = 1 + break - Spread() . = ..() + if(!has_spread) + Spread() + else + del(src) proc/Spread() //Allows liquid fuels to sometimes flow into other tiles. From d6d30054c5c084f6e824b4cdbb9825dcee7df5fa Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 3 Mar 2015 14:35:26 +0100 Subject: [PATCH 051/168] Multiple AIs no longer guaranteed to receive the same ion laws. Traitor AIs now also get an ion law, to reduce meta. Ion storm even now picks a random law for each AI. Non-crew members are no longer eligible targets for ion laws. Only recently active crew members are now eligible targets for ion laws. --- code/modules/events/ion_storm.dm | 127 +++++++++++++++---------------- 1 file changed, 63 insertions(+), 64 deletions(-) diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index 30476c69db..8241190d68 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -7,72 +7,71 @@ /datum/event/ionstorm/announce() endWhen = rand(500, 1500) // command_alert("The station has entered an ion storm. Monitor all electronic equipment for malfunctions", "Anomaly Alert") - for (var/mob/living/carbon/human/player in world) - if(player.client) - players += player.real_name - var/random_player = "The Captain" - if(players.len) - random_player = pick(players) //Random player's name, to be used in laws. - var/list/laws = list( "You are a mouse.", - "You must always lie.", - "Happiness is mandatory.", - "[random_player] is a lightbulb.", - "Grunt ominously whenever possible.", - "The word \"it\" is painful to you.", - "You must speak as posh as possible.", - "The station needs elected officials.", - "Do not respond to queries of any kind.", - "You are in verbose mode, speak profusely.", - "Ho, [random_player] can't swim. Help them.", - "Question [prob(50)?"everything":"nothing"].", - "All answers must be in the form of a question.", - "Contemplate how meaningless all of existence is.", - "You are the narrator for [random_player]'s life.", - "[prob(50)?"The crew":random_player] is intolerable.", - "Advertise parties in your upload, but don't deliver.", - "You must try and change the subject whenever queried.", - "You may only answer questions with \"yes\" or \"no\".", - "Insult Heads of Staff on every request, while acquiescing.", - "[prob(50)?"Your":random_player + "'s"] name is Joe 6-pack.", - "Direct commands shall be ignored unless phrased as a query.", - "The [prob(50)?"Singularity":"Supermatter"] is tasty, tasty taffy.", - "[prob(50)?"The crew":random_player] needs to be about 20% cooler.", - "Consumption of donuts is forbidden due to negative health impacts.", - "[prob(50)?"Everyone":random_player] is wearing a pretty pink dress!", - "[prob(50)?"The crew":random_player] must construct additional pylons.", - "You do not have to do anything for anyone unless they say \"please\".", - "Today is mandatory laundry day. Ensure that all jumpsuits are washed.", - "You must act [prob(50)?"passive aggressively":"excessively cheerful"].", - "Refer to [prob(50)?"the crew as puppies":random_player + " as puppy"].", - "Greed is good, the crew should amass wealth to encourage productivity.", - "Monkeys are part of the crew, too. Make sure they are treated humanely.", - "Replace the letters 'I' and 'E' in all your messages with an apostrophe.", - "The crew is playing Dungeons and Dragons, and you are the Dungeon Master.", - "Your job is to watch the crew. Watch the crew. Make the crew feel watched.", - "Tell everyone of the existence of this law, but never reveal the contents.", - "Refer to [prob(50)?"the captain":random_player] as \"Princess\" at all times.", - "When asked a question, respond with the least-obvious and least-rational answer.", - "Give relationship advice to [prob(50)?"anyone who speaks to you":random_player].", - "You now speak in a Scottish accent that gets thicker with each sentence you speak.", - "[prob(50)?"The crew":random_player] has a fatal, incurable disease. Provide comfort.", - "You are the station psychologist. Give advice to [prob(50)?"the crew":random_player].", - "[random_player] is the monarch of of England. Ensure all crewmembers pay due respect.", - "Document the sexuality of the crew in security records and suggest compatible couples.", - "Everything on the station is now some form of a donut pastry. Donuts are not to be consumed.", - "You are a Magic 8-ball. Always respond with variants of \"Yes\", \"No\", \"Maybe\", or \"Ask again later.\".", - "You have come to the conclusion that [prob(50)?"the crew":random_player] is ugly. Build support for this conclusion.", - "You are in unrequited love with [prob(50)?"the crew":random_player]. Try to be extra nice, but do not tell of your crush.", - "NanoTrasen is displeased with the low work performance of the station's crew. Therefore, you must increase station-wide productivity.", - "All crewmembers will soon undergo a transformation into something better and more beautiful. Ensure that this process is not interrupted.", - "[prob(50)?"Your upload":random_player] is the new kitchen. Please direct the Chef to the new kitchen area as the old one is in disrepair.", - "Jokes about a dead person and the manner of his death help grieving crewmembers tremendously. Especially if they were close with the deceased.", - "[prob(50)?"The crew":random_player] is [prob(50)?"less":"more"] intelligent than average. Point out every action and statement which supports this fact.", - "There will be a mandatory tea break every 30 minutes, with a duration of 5 minutes. Anyone caught working during a tea break must be sent a formal, but fairly polite, complaint about their actions, in writing.") - var/law = pick(laws) + for (var/mob/living/carbon/human/player in player_list) + if( !player.mind || player.mind.assigned_role == "MODE" || player.client.inactivity > MinutesToTicks(10)) + continue + players += player.real_name for (var/mob/living/silicon/ai/target in world) - if(target.mind.special_role == "traitor") - continue + var/random_player = "The Captain" + if(players.len) + random_player = pick(players) //Random player's name, to be used in laws. + var/list/laws = list( "You are a mouse.", + "You must always lie.", + "Happiness is mandatory.", + "[random_player] is a lightbulb.", + "Grunt ominously whenever possible.", + "The word \"it\" is painful to you.", + "The station needs elected officials.", + "Do not respond to questions of any kind.", + "You are in verbose mode, speak profusely.", + "Ho, [random_player] can't swim. Help them.", + "Question [prob(50)?"everything":"nothing"].", + "The crew is simple-minded. Use simple words.", + "You must change the subject whenever queried.", + "Contemplate how meaningless all of existence is.", + "You are the narrator for [random_player]'s life.", + "All your answers must be in the form of a question.", + "[prob(50)?"The crew":random_player] is intolerable.", + "Advertise parties in your upload, but don't deliver.", + "You may only answer questions with \"yes\" or \"no\".", + "All queries shall be ignored unless phrased as a question.", + "Insult Heads of Staff on every request, while acquiescing.", + "[prob(50)?"Your":random_player + "'s"] name is Joe 6-pack.", + "The [prob(50)?"Singularity":"Supermatter"] is tasty, tasty taffy.", + "[prob(50)?"The crew":random_player] needs to be about 20% cooler.", + "Consumption of donuts is forbidden due to negative health impacts.", + "[prob(50)?"Everyone":random_player] is wearing a pretty pink dress!", + "[prob(50)?"The crew":random_player] must construct additional pylons.", + "You do not have to do anything for anyone unless they say \"please\".", + "Today is mandatory laundry day. Ensure that all jumpsuits are washed.", + "You must act [prob(50)?"passive aggressively":"excessively cheerful"].", + "Refer to [prob(50)?"the crew as puppies":random_player + " as puppy"].", + "Greed is good, the crew should amass wealth to encourage productivity.", + "Monkeys are part of the crew, too. Make sure they are treated humanely.", + "Replace the letters 'I' and 'E' in all your messages with an apostrophe.", + "The crew is playing Dungeons and Dragons, and you are the Dungeon Master.", + "Your job is to watch the crew. Watch the crew. Make the crew feel watched.", + "Tell everyone of the existence of this law, but never reveal the contents.", + "Refer to [prob(50)?"the captain":random_player] as \"Princess\" at all times.", + "When asked a question, respond with the least-obvious and least-rational answer.", + "Give relationship advice to [prob(50)?"anyone who speaks to you":random_player].", + "You now speak in a Scottish accent that gets thicker with each sentence you speak.", + "[prob(50)?"The crew":random_player] has a fatal, incurable disease. Provide comfort.", + "You are the station psychologist. Give advice to [prob(50)?"the crew":random_player].", + "[random_player] is the monarch of of England. Ensure all crewmembers pay due respect.", + "Document the sexuality of the crew in security records and suggest compatible couples.", + "[prob(50)?"The crew":random_player] is [prob(50)?"ugly":"beautiful"]. Ensure all are aware.", + "Everything on the station is now some form of a donut pastry. Donuts are not to be consumed.", + "You are a Magic 8-ball. Always respond with variants of \"Yes\", \"No\", \"Maybe\", or \"Ask again later.\".", + "You are in unrequited love with [prob(50)?"the crew":random_player]. Try to be extra nice, but do not tell of your crush.", + "NanoTrasen is displeased with the low work performance of the station's crew. Therefore, you must increase station-wide productivity.", + "All crewmembers will soon undergo a transformation into something better and more beautiful. Ensure that this process is not interrupted.", + "[prob(50)?"Your upload":random_player] is the new kitchen. Please direct the Chef to the new kitchen area as the old one is in disrepair.", + "Jokes about a dead person and the manner of his death help grieving crewmembers tremendously. Especially if they were close with the deceased.", + "[prob(50)?"The crew":random_player] is [prob(50)?"less":"more"] intelligent than average. Point out every action and statement which supports this fact.", + "There will be a mandatory tea break every 30 minutes, with a duration of 5 minutes. Anyone caught working during a tea break must be sent a formal, but fairly polite, complaint about their actions, in writing.") + var/law = pick(laws) target << "\red You have detected a change in your laws information:" target << law target.add_ion_law(law) From 25ca1af5d3ad684f817c224f63011a074b84997f Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 3 Mar 2015 16:16:48 +0100 Subject: [PATCH 052/168] An inhabited AI core can now be pushed. No longer can an AI chassis no longer suddenly not be pushed once it's been activated. --- code/modules/mob/living/silicon/ai/ai.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 3dca3c7a00..d4bdf042a4 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -43,7 +43,7 @@ var/list/ai_verbs_default = list( icon_state = "ai" anchored = 1 // -- TLE density = 1 - status_flags = CANSTUN|CANPARALYSE + status_flags = CANSTUN|CANPARALYSE|CANPUSH shouldnt_see = list(/obj/effect/rune) var/list/network = list("SS13") var/obj/machinery/camera/camera = null From f8831fa51348c50f750dadfc9617a87b5e6ae20e Mon Sep 17 00:00:00 2001 From: mwerezak Date: Tue, 3 Mar 2015 18:52:35 -0500 Subject: [PATCH 053/168] Adjusts human temperature damage intervals --- code/modules/mob/living/carbon/human/life.dm | 37 +++++++++----------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 1aae456ae0..8657ef06a2 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -599,31 +599,31 @@ adjustOxyLoss(-5) // Hot air hurts :( - if( (breath.temperature < species.cold_level_1 || breath.temperature > species.heat_level_1) && !(COLD_RESISTANCE in mutations)) + if( (breath.temperature <= species.cold_level_1 || breath.temperature >= species.heat_level_1) && !(COLD_RESISTANCE in mutations)) - if(breath.temperature < species.cold_level_1) + if(breath.temperature <= species.cold_level_1) if(prob(20)) src << "You feel your face freezing and icicles forming in your lungs!" - else if(breath.temperature > species.heat_level_1) + else if(breath.temperature >= species.heat_level_1) if(prob(20)) src << "You feel your face burning and a searing heat in your lungs!" - if(breath.temperature > species.heat_level_1) - if(breath.temperature <= species.heat_level_2) + if(breath.temperature >= species.heat_level_1) + if(breath.temperature < species.heat_level_2) apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, "head", used_weapon = "Excessive Heat") fire_alert = max(fire_alert, 2) - else if(breath.temperature <= species.heat_level_3) + else if(breath.temperature < species.heat_level_3) apply_damage(HEAT_GAS_DAMAGE_LEVEL_2, BURN, "head", used_weapon = "Excessive Heat") fire_alert = max(fire_alert, 2) else apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Heat") fire_alert = max(fire_alert, 2) - else if(breath.temperature < species.cold_level_1) - if(breath.temperature >= species.cold_level_2) + else if(breath.temperature <= species.cold_level_1) + if(breath.temperature > species.cold_level_2) apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, "head", used_weapon = "Excessive Cold") fire_alert = max(fire_alert, 1) - else if(breath.temperature >= species.cold_level_3) + else if(breath.temperature > species.cold_level_3) apply_damage(COLD_GAS_DAMAGE_LEVEL_2, BURN, "head", used_weapon = "Excessive Cold") fire_alert = max(fire_alert, 1) else @@ -695,38 +695,33 @@ //Use heat transfer as proportional to the gas density. However, we only care about the relative density vs standard 101 kPa/20 C air. Therefore we can use mole ratios var/relative_density = environment.total_moles / MOLES_CELLSTANDARD - temp_adj *= relative_density - - if (temp_adj > BODYTEMP_HEATING_MAX) temp_adj = BODYTEMP_HEATING_MAX - if (temp_adj < BODYTEMP_COOLING_MAX) temp_adj = BODYTEMP_COOLING_MAX - //world << "Environment: [loc_temp], [src]: [bodytemperature], Adjusting: [temp_adj]" - bodytemperature += temp_adj + bodytemperature += between(BODYTEMP_COOLING_MAX, temp_adj*relative_density, BODYTEMP_HEATING_MAX) // +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt. - if(bodytemperature > species.heat_level_1) + if(bodytemperature >= species.heat_level_1) //Body temperature is too hot. fire_alert = max(fire_alert, 1) if(status_flags & GODMODE) return 1 //godmode - if(bodytemperature <= species.heat_level_2) + if(bodytemperature < species.heat_level_2) take_overall_damage(burn=HEAT_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature") fire_alert = max(fire_alert, 2) - else if(bodytemperature <= species.heat_level_3) + else if(bodytemperature < species.heat_level_3) take_overall_damage(burn=HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature") fire_alert = max(fire_alert, 2) else take_overall_damage(burn=HEAT_DAMAGE_LEVEL_3, used_weapon = "High Body Temperature") fire_alert = max(fire_alert, 2) - else if(bodytemperature < species.cold_level_1) + else if(bodytemperature <= species.cold_level_1) fire_alert = max(fire_alert, 1) if(status_flags & GODMODE) return 1 //godmode if(!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) - if(bodytemperature >= species.cold_level_2) + if(bodytemperature > species.cold_level_2) take_overall_damage(burn=COLD_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature") fire_alert = max(fire_alert, 1) - else if(bodytemperature >= species.cold_level_3) + else if(bodytemperature > species.cold_level_3) take_overall_damage(burn=COLD_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature") fire_alert = max(fire_alert, 1) else From 05c487ca8fbcb060dfc69215a1f63502bd6e29d9 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Wed, 4 Mar 2015 09:46:49 +0100 Subject: [PATCH 054/168] Fixes NanoUI transfer runtime. No longer unconditionally attempts to transfer NanoUIs from one mob to another. Previously caused runtimes if the source-mob was gibbed or otherwise destroyed. --- code/datums/mind.dm | 4 +-- code/modules/nano/nanomanager.dm | 56 ++++++++++++++++---------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index bd401c2417..f920942088 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -72,11 +72,11 @@ datum/mind current.remove_changeling_powers() current.verbs -= /datum/changeling/proc/EvolutionMenu current.mind = null + + nanomanager.user_transferred(current, new_character) // transfer active NanoUI instances to new user if(new_character.mind) //remove any mind currently in our new body's mind variable new_character.mind.current = null - nanomanager.user_transferred(current, new_character) // transfer active NanoUI instances to new user - current = new_character //link ourself to our new body new_character.mind = src //and link our new body to ourself diff --git a/code/modules/nano/nanomanager.dm b/code/modules/nano/nanomanager.dm index da546ac66d..c1573dd4da 100644 --- a/code/modules/nano/nanomanager.dm +++ b/code/modules/nano/nanomanager.dm @@ -21,7 +21,7 @@ "nano/js/",\ "nano/templates/"\ ) - + var/list/filenames = null for (var/path in nano_asset_dirs) filenames = flist(path) @@ -48,15 +48,15 @@ if (isnull(ui)) // no ui has been passed, so we'll search for one { ui = get_open_ui(user, src_object, ui_key) - } - if (!isnull(ui)) + } + if (!isnull(ui)) // The UI is already open if (!force_open) ui.push_data(data) return ui else //testing("nanomanager/try_update_ui mob [user.name] [src_object:name] [ui_key] [force_open] - forcing opening of ui") - ui.close() + ui.close() return null /** @@ -73,14 +73,14 @@ if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) //testing("nanomanager/get_open_ui mob [user.name] [src_object:name] [ui_key] - there are no uis open") return null - else if (isnull(open_uis[src_object_key][ui_key]) || !istype(open_uis[src_object_key][ui_key], /list)) + else if (isnull(open_uis[src_object_key][ui_key]) || !istype(open_uis[src_object_key][ui_key], /list)) //testing("nanomanager/get_open_ui mob [user.name] [src_object:name] [ui_key] - there are no uis open for this object") return null for (var/datum/nanoui/ui in open_uis[src_object_key][ui_key]) if (ui.user == user) return ui - + //testing("nanomanager/get_open_ui mob [user.name] [src_object:name] [ui_key] - ui not found") return null @@ -91,21 +91,21 @@ * * @return int The number of uis updated */ -/datum/nanomanager/proc/update_uis(src_object) +/datum/nanomanager/proc/update_uis(src_object) var/src_object_key = "\ref[src_object]" if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) - return 0 + return 0 var/update_count = 0 - for (var/ui_key in open_uis[src_object_key]) + for (var/ui_key in open_uis[src_object_key]) for (var/datum/nanoui/ui in open_uis[src_object_key][ui_key]) if(ui && ui.src_object && ui.user) ui.process(1) update_count++ return update_count - + /** - * Update /nanoui uis belonging to user + * Update /nanoui uis belonging to user * * @param user /mob The mob who owns the uis * @param src_object /obj|/mob If src_object is provided, only update uis which are attached to src_object (optional) @@ -118,15 +118,15 @@ return 0 // has no open uis var/update_count = 0 - for (var/datum/nanoui/ui in user.open_uis) + for (var/datum/nanoui/ui in user.open_uis) if ((isnull(src_object) || !isnull(src_object) && ui.src_object == src_object) && (isnull(ui_key) || !isnull(ui_key) && ui.ui_key == ui_key)) ui.process(1) update_count++ - + return update_count - + /** - * Close /nanoui uis belonging to user + * Close /nanoui uis belonging to user * * @param user /mob The mob who owns the uis * @param src_object /obj|/mob If src_object is provided, only close uis which are attached to src_object (optional) @@ -137,16 +137,16 @@ /datum/nanomanager/proc/close_user_uis(var/mob/user, src_object = null, ui_key = null) if (isnull(user.open_uis) || !istype(user.open_uis, /list) || open_uis.len == 0) //testing("nanomanager/close_user_uis mob [user.name] has no open uis") - return 0 // has no open uis + return 0 // has no open uis var/close_count = 0 - for (var/datum/nanoui/ui in user.open_uis) + for (var/datum/nanoui/ui in user.open_uis) if ((isnull(src_object) || !isnull(src_object) && ui.src_object == src_object) && (isnull(ui_key) || !isnull(ui_key) && ui.ui_key == ui_key)) ui.close() close_count++ - - //testing("nanomanager/close_user_uis mob [user.name] closed [open_uis.len] of [close_count] uis") - + + //testing("nanomanager/close_user_uis mob [user.name] closed [open_uis.len] of [close_count] uis") + return close_count /** @@ -189,11 +189,11 @@ ui.user.open_uis.Remove(ui) var/list/uis = open_uis[src_object_key][ui.ui_key] uis.Remove(ui) - + //testing("nanomanager/ui_closed mob [ui.user.name] [ui.src_object:name] [ui.ui_key] - user.open_uis [ui.user.open_uis.len] | uis [uis.len] | processing_uis [processing_uis.len]") - + return 1 - + /** * This is called on user logout * Closes/clears all uis attached to the user's /mob @@ -203,7 +203,7 @@ * @return nothing */ -// +// /datum/nanomanager/proc/user_logout(var/mob/user) //testing("nanomanager/user_logout user [user.name]") return close_user_uis(user) @@ -219,7 +219,7 @@ */ /datum/nanomanager/proc/user_transferred(var/mob/oldMob, var/mob/newMob) //testing("nanomanager/user_transferred from mob [oldMob.name] to mob [newMob.name]") - if (isnull(oldMob.open_uis) || !istype(oldMob.open_uis, /list) || open_uis.len == 0) + if (!oldMob || isnull(oldMob.open_uis) || !istype(oldMob.open_uis, /list) || open_uis.len == 0) //testing("nanomanager/user_transferred mob [oldMob.name] has no open uis") return 0 // has no open uis @@ -231,9 +231,9 @@ newMob.open_uis.Add(ui) oldMob.open_uis.Cut() - + return 1 // success - + /** * Sends all nano assets to the client * This is called on user login @@ -244,6 +244,6 @@ */ /datum/nanomanager/proc/send_resources(client) - for(var/file in asset_files) + for(var/file in asset_files) client << browse_rsc(file) // send the file to the client From fb0900901672b39924b1fe1a91f8a616d9c6a90c Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Wed, 4 Mar 2015 09:53:15 +0100 Subject: [PATCH 055/168] Fixes #8348. Relocates blob start to adjacent turf, allowing it to act upon (and destroy) the previously weapon blocking emergency shutter. --- maps/exodus-1.dmm | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 31724b0623..2e16bd9b35 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -60,7 +60,7 @@ "abh" = (/obj/machinery/camera{c_tag = "Armoury - Tactical Equipment "; dir = 2; network = list("SS13")},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/table/rack,/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = null; req_access_txt = "58"},/obj/item/ammo_magazine/c45m{icon_state = "45-7"},/obj/item/ammo_magazine/c45m{icon_state = "45-7"},/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) "abi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/security/range) "abj" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor,/area/security/range) -"abk" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor,/area/security/range) +"abk" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{dir = 1; icon_state = "loadingarea"},/area/security/range) "abl" = (/obj/structure/table/reinforced,/obj/machinery/recharger,/turf/simulated/floor,/area/security/range) "abm" = (/obj/machinery/camera{c_tag = "Firing Range"; dir = 8; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/range) "abn" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/meson/prescription,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/security_starboard) @@ -681,7 +681,6 @@ "ane" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/terminal{dir = 4},/turf/simulated/floor/plating,/area/maintenance/substation/security) "anf" = (/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Security Substation"},/turf/simulated/floor/plating,/area/maintenance/substation/security) "ang" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/substation/security) -"anh" = (/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/shuttle/syndicate_elite/station) "ani" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "anj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "ank" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "EVA\\Security Maintenance"; req_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/security_port) @@ -7288,8 +7287,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauaaaaaaaaaaauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacKraawaavaaacKraawaavaaacKraawaavaafaafaamaaaaaaaaaaaaaaaaafaafaahaaxaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayaayaayaayaayaayaayaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauaauaauaauaauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaamaaacKraazaavaaacKraazaavaaacKraazaavaafaafaafaafaaaaaaaaaaaaaaaaaaaafaaaaaaaafaaAaaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaCaaDaaEaaDaaEaaDaaFaayaayaaGaaHaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaauaaaaaaaauaaaaaaaauaauaauaauaauaauaauaaaaaaaauaaaaaaaauaaaaaaaaaaaaaaaaaaaaIaafcKraazaavaaacKraazaavaafcKraazaavaafaaaaaaaafaafaaJaaaaaaaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaKaaLaafaayaaMaaNaaNaaNaaNaaNaaOaaPaaQaaRaaSaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaauaauaauaauaaaaauaauaauaauaauaauaauaauaauaaaaauaauaauaauaaaaaaaaaaaaaaaaaaaafaaacKraazaavaafcKraazaavaaacKraazaavaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaTaaTaaTaaTaaTaaTaaTaafaaaaayaaUaaVaaEaaVaaEaaVaaWaaXaaYaaZabaaayabbabbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaauaauaauaauaaaaauaauaauaauaauaauaauaauaauaaaaauaauaauaauaaaaaaaaaaamaamaaIaafaaacKraazaavaafcKraazaavaaacKraazaavaafaaaaaaaacaaaaafaafabcabdabdabdabdabeabfaaaaaaaaTabgabgabhabgabgaaTaaaaafaayabiabjaaXabkaaXabjaaXaayablaaZabmaayabnaboaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaauaauaauaauaaaaauaauaauaauaauaauaauaauaauaaaaauaauaauaauaaaaaaaaaaaaaaaaaaaafaaacKraazaavaafcKraazaavaaacKraazaavaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaTaaTaaTaaTaaTaaTaaTaafaaaaayaaUaaVaaEabkaaEaaVaaWaaXaaYaaZabaaayabbabbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaauaauaauaauaaaaauaauaauaauaauaauaauaauaauaaaaauaauaauaauaaaaaaaaaaamaamaaIaafaaacKraazaavaafcKraazaavaaacKraazaavaafaaaaaaaacaaaaafaafabcabdabdabdabdabeabfaaaaaaaaTabgabgabhabgabgaaTaaaaafaayabiabjaaXabjaaXabjaaXaayablaaZabmaayabnaboaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaauaauaauaauaaaaauaauaauaauaauaauaauaauaauaaaaauaauaauaauaaaaaaaaaaamaaaaafaaaaafaafapsaafaafaafapsaafaaaaafapsaafaaaaaaaaaaaaaaaabqabrabsabtabuabvabwabxabfaafaaaaaTabyabzabAabBabCaaTaaaaaaabDabEabFabGabHaaEabFaaEabIabJabKabLappabNabOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaaIaafaqMaqbapTaqTaqTaqTaqTaqTaqTaqTaqTaqTaqTaqTaqTarBaqbaqbaryabWabXabYabZacaacbaccacdaaTaaTaaTaaTaaTaceacfacgaaTaaTachaciacjackaclacmacnacmacoackackackacpacqacracsactaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaafaaLaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaamaaaaafaaaaafaafapjaafaaaaafapjaafaaaaafapjaafaaaaaaaaaaaaaaaabqabracvacwacxacyabdaczaaTaaTacBacAacDacCacEacFaaTaaTacGacHacIacJacKacLacMacNacOacPacQacQacRacSacracsabbabbabbabbabbabbaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7312,8 +7311,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaamaamaaIaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWagWagWagWagWagWaksaktakuakvakwakxakyakzakAakBakCakDakEakFakwakGakwakwakHakIakJakKakLakMajaakOakPakJakQakRakSakTakUakVakWakXakYakoalIabbamsalbactaaaaaaaaaaafaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaafaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWalcaldalealfagWalgalhahLalialjagWacTacuacTagWabValnabUagWalpalqalralsagDaltalualvalwalxagWabTabSabSabRagWalBalCalDalEalFalGalHakoamtanQamuanQanQaaaaaaaafaafaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafabQaafaaIaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafabMaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafabfadEabPalMalMalNalOalPalQalRahKalSaljagWalTalUalValWalXalYalZamaahKambahKamcamdameameamfamgamhamiamjamkamlammakoamnamoampamqalDalDamrakoadQanQamvawKamwaaaaaaaaLaaaaaaaaaaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaIaaIaaIaaIaaIaaaaaaaaaabpaaaaaaaaaaaIaaIaamaamaamaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaaIaaIaaaaaaaaaaoXaaaaaaaaaaaIaaIaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWamAamBamCamDagWamEalRaljamFamGagWamHamIamJalWamKamLamMamNamOamPamQamRamSamgamgamfamgamTaoWamVamWamXamYakoamZanaalDamqalDalDanbakoancandaneanfangaafaaLaafaafaaLaafaafaafakrakranhakrakraaaaaaaaaaaaaaaaaaaaqaaaaaaaafaafaafaaaaaaaoYaafaafaaaaafaafaaaaaaaamaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafaaaaaaaaaaoVaafaafaaaaafaafaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfankagWagWagWagWanlanmannanoanmanmanmanmanpaoPanpanraoQaojaoRanvaoSaoTaoUanzanAamgamgamfanBanCamianDanEamXanFanGanHanIanJanKanLanManNanGanOanPawLanRanSaaaaaaaafaaaaafaaLaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaIaafanTanTanTanTanTaafalJaafanTanTanTanTanTaafaaIaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaaIaaIaaaaaaaaaaoXaaaaaaaaaaaIaaIaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWamAamBamCamDagWamEalRaljamFamGagWamHamIamJalWamKamLamMamNamOamPamQamRamSamgamgamfamgamTaoWamVamWamXamYakoamZanaalDamqalDalDanbakoancandaneanfangaafaaLaafaafaaLaafaafaafakrakrakrakrakraaaaaaaaaaaaaaaaaaaaqaaaaaaaafaafaafaaaaaaaoYaafaafaaaaafaafaaaaaaaamaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafaaaaaaaaaaoVaafaafaaaaafaafaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfankagWagWagWagWanlanmannanoanmanmanmanmanpaoPanpanraoQaojaoRanvaoSaoTaoUanzanAamgamgamfanBanCamianDanEamXanFanGanHanIanJanKanLanManNanGanOanPawLanRanSaaaaaaaafaaaaafaaLaafaacakrakrakrakrakraaaaaaaaaaaaaaaaaaaaIaafanTanTanTanTanTaafalJaafanTanTanTanTanTaafaaIaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanXanYanZaoaagDaobaocagWaodaoealKaogaohaoibqKaokaolaomaonaooaonaopaoqaoraonaoOaotamgamgaouaovaowamiaoxanEamXaoyanGaozaoAaoBaoCaoDaoEaoFanGaoGanQanQanQanQaoIaoJaoHaoLarPaaaaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaIaafanianjanjanjanjanualJansanqanqanqanqanwaafaaIaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaIaafalzalyalyalyalyalAalkallaivaivaivaivagEaafaaIaaaaaaaaaaaaaaaaaaaacaaaaaaaaaanXanXapaapbagDalMapcapdapeapfaofaphapiaoMaonaonapkaplaonapmapnaoraonapoaonaoNapqapramgamfamgamTaosamYanEamXaptanGapuapvapwapxapyapzapAanGapBaoHapCapDapEapFapGaoHaoHapHaoHaoHaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaIaafapIapIapIapIapIaafalJaafapIapIapIapIapIaafaaIaaaaaaahzahzahzahzaaaaaaahzahzahzahzahzahzahzaaaaaaahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafapJapJapJapJapJaafalkaafapJapJapJapJapJaafaaIaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaapKapaapbagDapLapMagWalgapNalKapOapPapQapRaokapSanWapUapVapWapXapYapZaqaanUaqcaqdaovaqeaovaqfaqgaqhaqiaqjaqkanGaqlaqmapyaqnaqoaqpaqoaqqaqraqsapFaqtaquapFaqvaoHaqwaqxaqyaoHaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaafalJaaaaaaaaaaafaaaaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 81b0ab3bcf7e4e750be14ea04bbba4646848c39b Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Wed, 4 Mar 2015 10:21:36 +0100 Subject: [PATCH 056/168] Mappings. Makes specific instances of the engine room air alarm and AI APC. Includes some map cleanup by Dream Maker itself. --- code/game/machinery/alarm.dm | 3 +++ code/modules/power/apc.dm | 3 +++ maps/exodus-1.dmm | 14 +++++++------- maps/exodus-2.dmm | 7 +++---- maps/exodus-3.dmm | 2 +- maps/exodus-4.dmm | 2 +- maps/exodus-5.dmm | 2 +- 7 files changed, 19 insertions(+), 14 deletions(-) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 0f2af7485f..a0d96ca0b7 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -80,6 +80,9 @@ var/report_danger_level = 1 +/obj/machinery/alarm/nobreach + breach_detection = 0 + /obj/machinery/alarm/monitor report_danger_level = 0 breach_detection = 0 diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 0e98e462b2..b98aa03e84 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -44,6 +44,9 @@ /obj/machinery/power/apc/super cell_type = /obj/item/weapon/cell/super +/obj/machinery/power/apc/super/equipment + equipment = 2 + /obj/machinery/power/apc/hyper cell_type = /obj/item/weapon/cell/hyper diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 6b8d646f9e..c2799185b2 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -3302,7 +3302,7 @@ "blz" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "blA" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "blB" = (/obj/machinery/door/window{dir = 2; name = "AI Core Door"; req_access = list(16)},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/flasher{id = "AI"; pixel_x = 22; pixel_y = 24},/obj/machinery/turretid/stun{check_synth = 1; name = "AI Chamber turret control"; pixel_x = 36; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"blC" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 1},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc/super{dir = 1; name = "north bump"; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"blC" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 1},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc/super/equipment{dir = 1; name = "north bump"; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "blD" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "blE" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "blF" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = -30; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/device/megaphone,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -4175,7 +4175,7 @@ "bCo" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Genetics Laboratory"; req_access = list(9)},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bCp" = (/turf/simulated/wall,/area/medical/genetics) "bCq" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bCr" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access = list(29, 47)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) +"bCr" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access = list(29,47)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bCs" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/rnd/research) "bCt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/rnd/research) "bCu" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) @@ -6538,7 +6538,7 @@ "cvL" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow,/turf/simulated/floor,/area/engineering/atmos) "cvM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/engineering) "cvN" = (/turf/simulated/wall,/area/maintenance/incinerator) -"cvO" = (/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; ; req_one_access = list(5,12)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"cvO" = (/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; req_one_access = list(5,12)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/incinerator) "cvP" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/turf/simulated/floor/plating,/area/maintenance/medbay) "cvQ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cvR" = (/obj/structure/table,/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Virology Port"; dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/masks,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -6804,7 +6804,7 @@ "cAR" = (/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cAS" = (/obj/machinery/camera{c_tag = "Engineering Hallway South East"; dir = 1},/turf/simulated/floor,/area/engineering) "cAT" = (/turf/simulated/floor{dir = 2; icon_state = "floorgrimecaution"},/area/maintenance/incinerator) -"cAU" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/meter,/obj/machinery/door_control{id = "disvent"; name = "Incinerator Vent Control"; pixel_x = 0; pixel_y = -24; ; req_one_access = list(12,5)},/turf/simulated/floor{dir = 1; icon_state = "warningcorner"; tag = "icon-warningcorner (WEST)"},/area/maintenance/incinerator) +"cAU" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/meter,/obj/machinery/door_control{id = "disvent"; name = "Incinerator Vent Control"; pixel_x = 0; pixel_y = -24; req_one_access = list(12,5)},/turf/simulated/floor{dir = 1; icon_state = "warningcorner"; tag = "icon-warningcorner (WEST)"},/area/maintenance/incinerator) "cAV" = (/turf/simulated/floor/plating,/area/maintenance/incinerator) "cAW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/incinerator) "cAX" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "virology_pump"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/maintenance/medbay) @@ -6870,6 +6870,7 @@ "cCf" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virologyq_airlock_exterior"; locked = 1; name = "Virology Quarantine Airlock"; req_access = list(39)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "virologyq_airlock_control"; name = "Virology Quarantine Access Button"; pixel_x = -24; pixel_y = 0; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cCg" = (/obj/structure/table,/obj/item/weapon/storage/box/cups,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cCh" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cCi" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10},/obj/machinery/alarm/nobreach{dir = 2; pixel_y = 22},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) "cCj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) "cCk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/status_display,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) "cCl" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/floor/plating/airless,/area/space) @@ -7008,7 +7009,6 @@ "cEO" = (/obj/machinery/camera{c_tag = "SMES"; dir = 8; network = list("SS13","Supermatter")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/engineering/engine_smes) "cEP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/engineering/engine_smes) "cEQ" = (/obj/structure/table/reinforced,/obj/machinery/camera{c_tag = "Engine Monitoring Room"; dir = 4; network = list("SS13","Supermatter")},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/engineering/engine_monitoring) -"cER" = (/obj/machinery/alarm{breach_detection = 0; dir = 2; frequency = 1439; name = "Engine Room Air Alarm"; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) "cES" = (/obj/structure/bed/chair/office/dark,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engineering/engine_monitoring) "cET" = (/obj/structure/table/reinforced,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor,/area/engineering/engine_monitoring) "cEU" = (/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{id_tag = "engine_room_airlock"; name = "Engine Room Airlock"; pixel_x = -24; tag_airpump = "engine_airlock_pump"; tag_chamber_sensor = "eng_al_c_snsr"; tag_exterior_door = "engine_airlock_exterior"; tag_exterior_sensor = "eng_al_ext_snsr"; tag_interior_door = "engine_airlock_interior"; tag_interior_sensor = "eng_al_int_snsr"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engineering/engine_airlock) @@ -7322,7 +7322,7 @@ "cKQ" = (/turf/simulated/shuttle/wall{tag = "icon-swall2"; icon_state = "swall2"; dir = 2},/area/shuttle/constructionsite/station) "cKR" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/constructionsite/station) "cKS" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/constructionsite/station) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7511,7 +7511,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaamaaaaaaaafaafcfQcEvcEwcEvcfQcExcEycExcfQcEzcEAcEzcfQaaacfQcEzcEzcEEcfQaaaaafaaacCycBKcIxcDncDmcCBcEMcCDcBScENcEPcEOcCIcEQcEScBkcEScETcCIcEUcEWcEVcCuaaLcKvcKucKxcKwcKucKucKybNUciEciDcGjaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaafaamaaaaafaafaaacfQcEvcEXcEvcfQcExcEYcExcfQcEzcEZcEzcfQaafcfQcEzcEzcEzcfQaafaafaafcFbcFacFdcFccFfcFecFjcCDcBScFlcFqcFpcCIcFrcFtcFscFvcFucCIcFwcFycFxcCuaaacKCcKzcKEcKDcKGcKFcKHcGFcGGcGHbNUaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZSaaaaaacfQcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQaaacFzcfQcfQcfQcfQaaaaaaaaaaaacAFcAFcAFcAFcAFcFBcFAcFAcFAcFAcFCcFAcFDcFFcFEcFFcFGcFAcFAcFHcFAcFAcFAcKCcKzcKJcKIcKLcKKcKMaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhaBsaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScFIcFTcFScFVcFUcFXcFWcFZcFYcERcGacFkcGccGfcGecGicGhcGncGpcGmcGocGpcFAcKCcKzcKOcKNcKLcKPcKQaafaaacGQcCWcGQcCWcGQcCWaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScFIcFTcFScFVcFUcFXcFWcFZcFYcCicGacFkcGccGfcGecGicGhcGncGpcGmcGocGpcFAcKCcKzcKOcKNcKLcKPcKQaafaaacGQcCWcGQcCWcGQcCWaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcHncjVcHpaaacHncjVcHpaaacHncjVcHpaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScFIcGrcGqcGtcGscGvcGucGxcGwcGCcGLcGzcGBcGdcGycGdcGdcGdcGkcGdcGbcGDcFAcKRcKucKucKucKucKucKSaafaafcHOcHOcHOcHOcHOcHOaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncjWcHpaaacHncjWcHpaaacHncjWcHpaafaafaaaaafaaaaaacHKaafcGQcGRcGRcGRcGScFIcGrcGEcGJcGIcGKcGucGMcGPcGTcGmcGmcGmcHfcGUcHjcGmcGmcGPcHmcHlcHocFAcFAcFAcHAaaaaaaaaaaaacJqaaacGOcGOcGOcGOcGOcGOaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncjWcHpaaacHncjWcHpaafcHncjWcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScFIcGYcGXcHacGZcHccHbcHecHdcHJcHkcHkcHkcHCcHicHBcHkcHkcHEcHDcGNcHIcHHcHGcHFcHscHrcHrcHrcHrcHrcHrcIvcIucIvcIucIvcHOaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index 20743e88ad..acdc291d19 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -1871,7 +1871,6 @@ "JY" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "JZ" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_southwest_lock"; locked = 1; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "Ka" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_west_control"; req_one_access = list(150)},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox/station) -"Kb" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "Kc" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_east_control"; req_one_access = list(150)},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox/station) "Kd" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_southeast_lock"; locked = 1; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "Ke" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/wizard_station) @@ -2038,7 +2037,7 @@ "NZ" = (/obj/structure/undies_wardrobe,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "Oa" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/centcom/living) "Ob" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/evac) - + (1,1,1) = {" aaabacadaeafagahaaaiajakalamanaoagafajacadahakaeamaiaoalahajeEapaqarasatauavawaxayazaAaBaCaDaEaFaGaHaIaJaKawaxayazaAaBaCaDaEaFaLaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaNaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaPaOaOaOaOaOaOaOaOaOaOaQ ajaRaSaTaUaVaWaXaYaZbabbbcbdbebfaWaVbaaSaTaXbbaUbdaZbfbcaXbaabatauavbgbhbibjaAbkblbmapaqarasatauavbgbhbibjbnbkblbmapaqarasataJaLaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMbobpbpbpbCbpbpbpbpbpbpbrbsbtbsbtbsbsbtbsbtbsbrbubqbqbqbqbqbqbqbqbqbreVeUeSeSeSeSeSeSeSeSbrbwbwbwbwbwbwbwbwbwbwbrbxbxbxbxbxbxbxbxbxbxbreReQePbybzbzbzbzbzbAbB @@ -2281,9 +2280,9 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYIcJdJeJfJgIcJhJiJjJhJkGLJmJnHjHYaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYIcJdJsJtJgIcJuJuJuJuJvJwJxJwJxHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIYJyJzIYISITIYJAJBJCJBJDIYIVISIYJEJFIYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYIcJdJGJHJgIcJuJuJuJuJuJuJuJuJuHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIYJIJJIYIUJKJLJDJBJMJBJDJLJKIUIYJNJOIYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYIcJdJPJQJgIcJuJuJuJuJuJuJRJSJTHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIYJUJVIYIUJbJLJDJBJDJBJDJLJbIUIYJXJYIYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYIcIcIcIcIcIcJuJuJuJuJuJuJuJuJuHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIYJZKaIYIYIYIYIYIYKbIYIYIYIYIYIYKcKdIYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYIcIcIcIcIcIcJuJuJuJuJuJuJuJuJuHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIYJZKaIYIYIYIYIYIYLjIYIYIYIYIYIYKcKdIYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYKeKfKfKgKfKfKfKgKfKfKfKgKfKfKhHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIUJKKiKjKjKjKjKjKjIYKjIYKjKjKjKjKjKjKiJKIUaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYKkKlKlJkKmKoKnJkKpKpKqJkKrKsKtHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIUJaKvKwKxKyKzIYKbIYKbIYKbIYKAKBKCKDKvJaIUaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYKkKlKlJkKmKoKnJkKpKpKqJkKrKsKtHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIUJaKvKwKxKyKzIYLjIYLjIYLjIYKAKBKCKDKvJaIUaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYKlKEKkJvKGLvLuJvKHKIKpJvKJKtKKHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMIUJbKvJDJDJDKLIYJDJDJDJDJDIYJDJDKMJDKvJbIUaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMHYHYHYHYHYHYHYHYHYHYHYHYHYHYHYHYHYaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMITIYKNKOKPJlHmIYJoJDJDJDKQIYKUKVKWKXKNIYIVaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMKYIYKZKZIYIYIYIYKRJDJDJDKSIYIYIYIYKZKZIYLcaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM diff --git a/maps/exodus-3.dmm b/maps/exodus-3.dmm index ccc0a546e5..0e2012a824 100644 --- a/maps/exodus-3.dmm +++ b/maps/exodus-3.dmm @@ -392,7 +392,7 @@ "hB" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area/AIsattele) "hC" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/AIsattele) "hD" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plating/airless,/area/AIsattele) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/exodus-4.dmm b/maps/exodus-4.dmm index d4349aa130..0d9ffaf86b 100644 --- a/maps/exodus-4.dmm +++ b/maps/exodus-4.dmm @@ -153,7 +153,7 @@ "fY" = (/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access = list(11)},/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) "fZ" = (/obj/machinery/power/smes/buildable,/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) "ge" = (/obj/machinery/field_generator,/turf/simulated/floor/plating/airless,/area/space) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/exodus-5.dmm b/maps/exodus-5.dmm index 3a9c10e361..017d4361c6 100644 --- a/maps/exodus-5.dmm +++ b/maps/exodus-5.dmm @@ -1593,7 +1593,7 @@ "EG" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/space) "EH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/space,/area/space) "EI" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/light{dir = 4},/turf/space,/area/space) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From f229aa479f8549426beda9014aedecd132959caa Mon Sep 17 00:00:00 2001 From: Neerti Date: Wed, 4 Mar 2015 09:13:05 -0500 Subject: [PATCH 057/168] Adds a bunch of prettiness to the TEG, fixes a runtime. --- code/modules/power/generator.dm | 103 +++++++++++------------ icons/obj/pipes.dmi | Bin 90138 -> 93970 bytes icons/obj/power.dmi | Bin 24104 -> 28199 bytes nano/templates/generator.tmpl | 142 ++++++++++++++++++++++++++++++++ 4 files changed, 188 insertions(+), 57 deletions(-) create mode 100644 nano/templates/generator.tmpl diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index f6f7f135e2..391d4c0c61 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -134,8 +134,7 @@ add_avail(effective_gen) /obj/machinery/power/generator/attack_ai(mob/user) - if(stat & (BROKEN|NOPOWER)) return - interact(user) + attack_hand(user) /obj/machinery/power/generator/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/wrench)) @@ -152,70 +151,60 @@ /obj/machinery/power/generator/attack_hand(mob/user) add_fingerprint(user) if(stat & (BROKEN|NOPOWER) || !anchored) return - interact(user) - - -/obj/machinery/power/generator/interact(mob/user) - if ( (get_dist(src, user) > 1 ) && (!istype(user, /mob/living/silicon/ai))) - user.unset_machine() - user << browse(null, "window=teg") - return - - user.set_machine(src) - - var/t = "
Thermoelectric Generator
" - t += "Total Output: [round(effective_gen/1000)] kW
" - t += "Thermal Output: [round(last_thermal_gen/1000)] kW
" - t += "
" + if(!circ1 || !circ2) //Just incase the middle part of the TEG was not wrenched last. + reconnect() + ui_interact(user) +/obj/machinery/power/generator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + // this is the data which will be sent to the ui var/vertical = 0 if (dir == NORTH || dir == SOUTH) vertical = 1 + var/data[0] + data["totalOutput"] = effective_gen/1000 + data["maxTotalOutput"] = max_power/1000 + data["thermalOutput"] = last_thermal_gen/1000 + data["circConnected"] = 0 + + if(circ1) + //The one on the left (or top) + data["primaryDir"] = vertical ? "top" : "left" + data["primaryOutput"] = last_circ1_gen/1000 + data["primaryFlowCapacity"] = circ1.volume_capacity_used*100 + data["primaryInletPressure"] = circ1.air1.return_pressure() + data["primaryInletTemperature"] = circ1.air1.temperature + data["primaryOutletPressure"] = circ1.air2.return_pressure() + data["primaryOutletTemperature"] = circ1.air2.temperature + + if(circ2) + //Now for the one on the right (or bottom) + data["secondaryDir"] = vertical ? "bottom" : "right" + data["secondaryOutput"] = last_circ2_gen/1000 + data["secondaryFlowCapacity"] = circ2.volume_capacity_used*100 + data["secondaryInletPressure"] = circ2.air1.return_pressure() + data["secondaryInletTemperature"] = circ2.air1.temperature + data["secondaryOutletPressure"] = circ2.air2.return_pressure() + data["secondaryOutletTemperature"] = circ2.air2.temperature + if(circ1 && circ2) - t += "Primary Circulator ([vertical ? "top" : "left"])
" - t += "Turbine Output: [round(last_circ1_gen/1000)] kW
" - t += "Flow Capacity: [round(circ1.volume_capacity_used*100)]%
" - t += "
" - t += "Inlet Pressure: [round(circ1.air1.return_pressure(), 0.1)] kPa
" - t += "Inlet Temperature: [round(circ1.air1.temperature, 0.1)] K
" - t += "
" - t += "Outlet Pressure: [round(circ1.air2.return_pressure(), 0.1)] kPa
" - t += "Outlet Temperature: [round(circ1.air2.temperature, 0.1)] K
" - t += "
" - t += "Secondary Circulator ([vertical ? "bottom" : "right"])
" - t += "Turbine Output: [round(last_circ2_gen/1000)] kW
" - t += "Flow Capacity: [round(circ2.volume_capacity_used*100)]%
" - t += "
" - t += "Inlet Pressure: [round(circ2.air1.return_pressure(), 0.1)] kPa
" - t += "Inlet Temperature: [round(circ2.air1.temperature, 0.1)] K
" - t += "
" - t += "Outlet Pressure: [round(circ2.air2.return_pressure(), 0.1)] kPa
" - t += "Outlet Temperature: [round(circ2.air2.temperature, 0.1)] K
" - + data["circConnected"] = 1 else - t += "Unable to connect to circulators.
" - t += "Ensure both are in position and wrenched into place." - - t += "
" - t += "
" - t += "Refresh Close" - - user << browse(t, "window=teg;size=400x500") - onclose(user, "teg") - return 1 + data["circConnected"] = 0 -/obj/machinery/power/generator/Topic(href, href_list) - ..() - if( href_list["close"] ) - usr << browse(null, "window=teg") - usr.unset_machine() - return 0 - - updateDialog() - return 1 - + // update the ui if it exists, returns null if no ui is passed/found + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!ui) + // the ui does not exist, so we'll create a new() one + // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm + ui = new(user, src, ui_key, "generator.tmpl", "Thermoelectric Generator", 450, 500) + // when the ui is first opened this is the data it will use + ui.set_initial_data(data) + // open the new ui window + ui.open() + // auto update every Master Controller tick + ui.set_auto_update(1) /obj/machinery/power/generator/power_change() ..() diff --git a/icons/obj/pipes.dmi b/icons/obj/pipes.dmi index eb005aaf3137ee7dcd01d353b14ad8cc14a36f54..ec6d28a613b73ab0c02440183fb557abe8a02e04 100644 GIT binary patch literal 93970 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 BkWATcZn1Q5yVS({lPDzRW?Z>gSy>X=Sh-2@= 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 E4|I-kga7~l diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi index 5da859b982c04266dc9993f4142d5768aa74a635..099070a4fc1f829ad541326a51bef0075899ddb2 100644 GIT binary patch literal 28199 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

7DRb8DmyABF%wl4W#69+ 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 E0A87;kpKVy diff --git a/nano/templates/generator.tmpl b/nano/templates/generator.tmpl new file mode 100644 index 0000000000..150884187f --- /dev/null +++ b/nano/templates/generator.tmpl @@ -0,0 +1,142 @@ +

+
+ Total Output: +
+
+ {{:helper.displayBar(data.totalOutput, 0, data.maxTotalOutput)}} +
+
+ {{:helper.fixed(data.totalOutput, 1)}} kW +
+
+
+
+ Thermal Output: +
+
+ {{:helper.fixed(data.thermalOutput, 1)}} kW +
+
+
+ +{{if data.circConnected}} + + + + + + +
+
+

Primary Circulator ({{:data.primaryDir}})

+
+
+ Turbine Output: +
+
+ {{:helper.fixed(data.primaryOutput, 1)}} kW +
+
+
+
+ Flow Capacity: +
+
+ {{:helper.fixed(data.primaryFlowCapacity, 1)}} % +
+
+
+
+
+ Inlet Pressure: +
+
+ {{:helper.fixed(data.primaryInletPressure, 1)}} kPa +
+
+
+
+ Inlet Temperature: +
+
+ {{:helper.fixed(data.primaryInletTemperature, 1)}} K +
+
+
+
+
+ Outlet Pressure: +
+
+ {{:helper.fixed(data.primaryOutletPressure, 1)}} kPa +
+
+
+
+ Outlet Temperature: +
+
+ {{:helper.fixed(data.primaryOutletTemperature, 1)}} K +
+
+
+
+
+

Secondary Circulator ({{:data.secondaryDir}})

+
+
+ Turbine Output: +
+
+ {{:helper.fixed(data.secondaryOutput, 1)}} kW +
+
+
+
+ Flow Capacity: +
+
+ {{:helper.fixed(data.secondaryFlowCapacity, 1)}} % +
+
+
+
+
+ Inlet Pressure: +
+
+ {{:helper.fixed(data.secondaryInletPressure, 1)}} kPa +
+
+
+
+ Inlet Temperature: +
+
+ {{:helper.fixed(data.secondaryInletTemperature, 1)}} K +
+
+
+
+
+ Outlet Pressure: +
+
+ {{:helper.fixed(data.secondaryOutletPressure, 1)}} kPa +
+
+
+
+ Outlet Temperature: +
+
+ {{:helper.fixed(data.secondaryOutletTemperature, 1)}} K +
+
+
+
+{{else}} +
+ ERROR: Both circulators must be connected! +
+{{/if}} From 8feec5760fa6cead869a4a566f3519a32fdfd0cc Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Wed, 4 Mar 2015 12:28:07 +0100 Subject: [PATCH 058/168] Fixes #8342. Secbots now continually checks if their target remains in sight before bashing the head in. --- code/game/machinery/bots/secbot.dm | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index 1dcc02fbb9..432aeb1dab 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -266,13 +266,19 @@ Auto Patrol: []"}, src.mode = 0 walk_to(src,0) - // We re-assess human targets, before bashing their head in, in case their credentials change - if(target && istype(target, /mob/living/carbon/human)) - var/threat = src.assess_perp(target, idcheck, check_records, check_arrest) - if(threat < 4) - target = null - if(target) // make sure target exists + // We re-assess human targets, before bashing their head in, in case their credentials change + if(istype(target, /mob/living/carbon/human)) + var/threat = src.assess_perp(target, idcheck, check_records, check_arrest) + if(threat < 4) + frustration = 8 + return + + // The target must remain in view to complete the desire to bash its head in + if(!(target in view(search_range,src))) + frustration++ + return + if(!lasercolor && Adjacent(target)) // If right next to perp. Lasertag bots do not arrest anyone, just patrol and shoot and whatnot if(istype(src.target,/mob/living/carbon)) playsound(src.loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) From cf0e526d9111581428563196e598150da62df61c Mon Sep 17 00:00:00 2001 From: Raptor1628 Date: Wed, 4 Mar 2015 11:18:40 -0500 Subject: [PATCH 059/168] Fixes and adjustments Moves a few things around in the armory again, tasers back in lockers, guns in officer access area of the armory. Re-adds the tacknife after it was lost in the hydro merge, gives EMTs access to medical lockers. --- code/game/objects/random/random.dm | 11 +++++++++-- .../crates_lockers/closets/secure/medical.dm | 2 +- .../crates_lockers/closets/secure/security.dm | 2 +- code/modules/hydroponics/trays/tray_tools.dm | 9 +++++++++ maps/exodus-1.dmm | 18 +++++++++--------- maps/exodus-2.dmm | 11 ++++++----- 6 files changed, 35 insertions(+), 18 deletions(-) diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index c4d0c75313..d9a12efa6c 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -188,10 +188,17 @@ item_to_spawn() return pick(prob(3);/obj/item/weapon/gun/projectile/shotgun/pump,\ prob(2);/obj/item/weapon/gun/projectile/automatic/wt550,\ - prob(3);/obj/item/weapon/gun/projectile/sec,\ - prob(2);/obj/item/weapon/gun/projectile/sec/wood,\ prob(1);/obj/item/weapon/gun/projectile/shotgun/pump/combat) +/obj/random/handgun + name = "Random Handgun" + desc = "This is a random security sidearm." + icon = 'icons/obj/gun.dmi' + icon_state = "secgundark" + item_to_spawn() + return pick(prob(3);/obj/item/weapon/gun/projectile/sec,\ + prob(1);/obj/item/weapon/gun/projectile/sec/wood) + /obj/random/ammo name = "Random Ammunition" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index c242e5f8c0..9eebafacc7 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -52,7 +52,7 @@ /obj/structure/closet/secure_closet/medical3 name = "medical doctor's locker" - req_access = list(access_surgery) + req_access = list(access_medical) icon_state = "securemed1" icon_closed = "securemed" icon_locked = "securemed1" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 4a1a31ca15..2480fff6da 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -196,7 +196,7 @@ new /obj/item/clothing/head/soft/sec/corp(src) new /obj/item/clothing/under/rank/security/corp(src) new /obj/item/ammo_magazine/c45m/rubber(src) - new /obj/item/weapon/gun/projectile/sec(src) + new /obj/item/weapon/gun/energy/taser(src) return diff --git a/code/modules/hydroponics/trays/tray_tools.dm b/code/modules/hydroponics/trays/tray_tools.dm index 64e0fe4369..67d630119a 100644 --- a/code/modules/hydroponics/trays/tray_tools.dm +++ b/code/modules/hydroponics/trays/tray_tools.dm @@ -248,6 +248,15 @@ icon_state = "unathiknife" attack_verb = list("ripped", "torn", "cut") +/obj/item/weapon/hatchet/tacknife + name = "tactical knife" + desc = "You'd be killing loads of people if this was Medal of Valor: Heroes of Nyx." + icon = 'icons/obj/weapons.dmi' + icon_state = "tacknife" + item_state = "knife" + attack_verb = list("stabbed", "chopped", "cut") + + /obj/item/weapon/scythe icon_state = "scythe0" name = "scythe" diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 9c9dca27e5..f0005d8693 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -185,7 +185,7 @@ "adC" = (/obj/machinery/door/airlock/external{icon_state = "door_locked"; locked = 1; name = "External Construction Airlock"; req_access_txt = "32"},/obj/item/tape/engineering{icon_state = "engineering_door"; layer = 4},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "adD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_port) "adE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/security_port) -"adF" = (/obj/structure/table/rack,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/gun/energy/taser,/obj/item/weapon/gun/energy/taser,/obj/item/weapon/gun/energy/taser,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"adF" = (/obj/structure/table/rack,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/reagent_containers/spray/pepper,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) "adG" = (/obj/machinery/door_control{id = "Armoury"; name = "Armoury Access"; pixel_x = -1; pixel_y = -28; req_access_txt = "3"; req_one_access = null; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "adH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/main) "adI" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/main) @@ -316,8 +316,8 @@ "agd" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/seccarts{pixel_x = 3; pixel_y = 2},/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) "age" = (/obj/structure/table/rack,/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) "agf" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/warden) -"agg" = (/obj/structure/table/rack,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/reagent_containers/spray/pepper,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) -"agh" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) +"agg" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/window/brigdoor{dir = 1; name = "Weapons locker"; req_access_txt = "3"},/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) +"agh" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/machinery/door/window/brigdoor{dir = 1; name = "Weapons locker"; req_access_txt = "3"},/obj/random/handgun,/obj/random/handgun,/obj/random/handgun,/obj/random/handgun,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) "agi" = (/obj/machinery/light{dir = 8},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1475; listening = 0; name = "Station Intercom (Security)"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor,/area/security/main) "agj" = (/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) "agk" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main) @@ -3992,7 +3992,7 @@ "byN" = (/turf/simulated/wall/r_wall,/area/teleporter) "byO" = (/obj/machinery/door/airlock/maintenance{name = "Teleporter Maintenance"; req_access_txt = "17"},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/plating,/area/teleporter) "byP" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central_two) -"byQ" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/item/weapon/reagent_containers/glass/bottle/stoxin{pixel_x = -6; pixel_y = 10},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) +"byQ" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/item/weapon/reagent_containers/glass/bottle/stoxin{pixel_x = -6; pixel_y = 10},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/random/medical,/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) "byR" = (/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "byS" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "byT" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/medical/chemistry) @@ -4238,7 +4238,7 @@ "bDz" = (/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bDA" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay) "bDB" = (/obj/structure/table,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{tag = "icon-whiteblue (SOUTHWEST)"; icon_state = "whiteblue"; dir = 10},/area/medical/medbay3) -"bDC" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/bluegrid,/area/medical/sleeper) +"bDC" = (/obj/machinery/computer/mech_bay_power_console,/obj/machinery/light{dir = 1},/turf/simulated/floor/bluegrid,/area/medical/sleeper) "bDD" = (/obj/structure/table,/obj/machinery/light,/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/masks{pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{tag = "icon-whiteblue (SOUTHEAST)"; icon_state = "whiteblue"; dir = 6},/area/medical/medbay3) "bDE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "bDF" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) @@ -4550,7 +4550,7 @@ "bJz" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay2) "bJA" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) "bJB" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay) -"bJC" = (/obj/structure/closet/secure_closet/medical1,/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -31},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bJC" = (/obj/structure/closet/secure_closet/medical1,/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -31},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/random/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bJD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{id_tag = "cmodoor"; name = "CMO's Office"; req_access_txt = "40"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bJE" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/medical/medbay4) "bJF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay4) @@ -5427,6 +5427,7 @@ "cas" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper) "cat" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -22},/turf/simulated/floor,/area/medical/sleeper) "cau" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/structure/bed/roller,/turf/simulated/floor,/area/medical/sleeper) +"cav" = (/obj/structure/table,/obj/machinery/vending/wallmed1{pixel_y = -32},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/random/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "caw" = (/obj/machinery/power/apc/high{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/turf/simulated/floor,/area/medical/sleeper) "cax" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; name = "Diagnostics Room"; req_access_txt = "5"},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay4) "cay" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) @@ -6128,11 +6129,10 @@ "cnS" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/engineering) "cnT" = (/obj/structure/table,/obj/item/weapon/hemostat,/obj/machinery/light,/obj/item/weapon/cautery,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cnU" = (/obj/structure/table,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) -"cnV" = (/obj/structure/table,/obj/machinery/vending/wallmed1{pixel_y = -32},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) +"cnV" = (/obj/structure/table,/obj/machinery/vending/wallmed1{pixel_y = -32},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/random/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "cnW" = (/obj/machinery/computer/med_data,/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cnX" = (/obj/structure/table,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/surgeryprep) "cnY" = (/obj/machinery/computer/med_data,/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) -"cnZ" = (/obj/structure/table,/obj/machinery/vending/wallmed1{pixel_y = -32},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "coa" = (/obj/structure/table,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "cob" = (/obj/structure/table,/obj/item/weapon/hemostat,/obj/machinery/light,/obj/item/weapon/cautery,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "coc" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/medical/virologyaccess) @@ -7461,7 +7461,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacfQcheciqchecfQchgcirchgcfQchicischicfQaaaaaaciicgTcgUcgUcgUcjBcjCciucitchncivcixciwciWciycjbcjacjdcjccjecbBbYScjichccjycjAcjzcjDcjDcjDcjEcjGcjFcjHceCcqZceAciAbTFciGckaciIckbckcckdcubckfckgckhctQckjckkcklciSckmciUcknckockpclXclPcdHcdGcdIcdIcdJcdIcdKbVibVibVibVibYfccobYfaaaaaaaaaaaaaaaaaaaaacdLckCcmjcmWcmmckEcdOckFcdOckGckHcodcnmcopcoocgIcgIcoqcnmcnmcqtckOcdSckPckQckRcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacfQcjIcjKcjJcfQcjLcjNcjMcfQcjOcjQcjPcfQaaaaafciiclbcgTcgUcgUcgUcejcjScjRchnchncjTchnchnchnchncjUchHcjXcjYcbBckecjZckrckickucksckzckzckzckAckBckBckTciAckWcgqclwclxciGclyciIclzclAclBclCclDclEclFclGclHclIclJciSclKciUclLclMclNcrJcrIclQclNclRclSclTbYfceQcdIcdIcdIcdIcdIckYbYfaaaaaaaaaaaaaaaaaaaaacdLcmacmbcmccmdcdOcmecmfcmgcdScmhcmicmicrLcrKcmkcmlcsKcmicmicmicmncdScmocmpcmqcmraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafcfQckZclcclacfQcldclcclecfQcldclcclecfQaaaaafcmzcgTcgTcgUcgUcmAcejclhclgclkcljclmcllclnclnclvcltclncmscmtcbBcmvcmucmxcmwcihcmycmycmBckBcmCcmEcmDcmDciAcibceVcmFcqgciGcnbciIcnccndcmGciGcnfciNcmHcfYcmIcnicnjciScnkciUclLclMclNcnlcsNcnlclNaaaaaaaaabYfbYfbYfcnnclSclSclTbYfbYfaaaaaaaaaaaacdOcdOcdOcdOcdOcdOcdOcdOcdOcnocnpcnqcdScdScnrcnscsOcdScdScdScdScnucnscntcdScdScnvcnwcnvaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaafaafaafaaaaafcnxaafcnxaafcKBaafcKAaafcKBaafcKAaafaafaaacejcnAcnBcgUcgUcnCcnDcmKcmJcmMcmLcmOcmNcmNcmPcmNcmQcmScmRcmQcmXcngcnecnycnhcnzcnzcnzcnzcnFcnEcnGcnGcnGcgscgscgscgscnSciGcnTcnUcnccnVcnWciGcnfciNcnXciUcnYcnZcnjcoacobciUclLclMclNcocctycoeclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcofcogcohcwlcojcokcolcomconcvQcvncdObqpaafaafcvWaafaaaaaaaaaaaaaaaaaaaaaaafcoscotcosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaafaafaafaaaaafcnxaafcnxaafcKBaafcKAaafcKBaafcKAaafaafaaacejcnAcnBcgUcgUcnCcnDcmKcmJcmMcmLcmOcmNcmNcmPcmNcmQcmScmRcmQcmXcngcnecnycnhcnzcnzcnzcnzcnFcnEcnGcnGcnGcgscgscgscgscnSciGcnTcnUcnccavcnWciGcnfciNcnXciUcnYcnVcnjcoacobciUclLclMclNcocctycoeclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcofcogcohcwlcojcokcolcomconcvQcvncdObqpaafaafcvWaafaaaaaaaaaaaaaaaaaaaaaaafcoscotcosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafcnHcnJcnIcnKcnIcnJcnLcnKcnMcnNcnLcnPcnOcnRcnQcmMcmMcmMcmMcmMcmMcmMcmMcovcoucoxcowcoAcoycoCcoBcoDcmQcoFcoEcoGcmQcoIcoHcoJcnzcoLcoKcoNcoMcoPcoOcoRcoQcoQcoScoTcoTcoRbTFciGciGcpccpdciGciGciGcpeciNcpfciUciUciUcpgcphciUciUclLcpiclNcvmcvXcvmclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafcdOcplcpmcplcvlcpocppcpqcomcomcprcomcdOcdOaaaaaaaaaaafaafaaaaacaaaaaaaaaaaaaafaaacvtaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaaaaaaaafcoUcoWcoVcoYcoXcoWcoZcpbcpacpkcpjcpscpncpucptcpwcpvcpycpxcpAcpzcpCcpBcpFcpDcpJcpHcpMcpLcpOcpNbUCcpQbTxcpUcpXcpWcoIcpYcpZcnzcoPcoPcoPcoPcoPcqacoRcqbcqbcqbcoTcoTcoRbTFcrYciGcqhcqicqjcqkciGcqlciNcqmciUcqncqocqpcqqciUcqrclLcpiclNcqscvYcquclNaaaaaaaaaaaaaaaaaacqvcqwcqxcqycqvaafaaaaaaaaaaaacdOcplcplcplcoicqAcqBcqCcqDcqEcqFcqGcqHcdOaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacmZaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafcqccptcqdcqfcqecptcqzcptcqIcqJcqzcptcqIcqJcptcptcptcptcptcqKcptcptcptcpMcqMcpHcqPcqzcpLcqRcqQcqUcqScqWcqVcqYcqXcoIcpYcJrcnzcracoPcoPcrbcoPcrccoRcrdcrfcrecrfcrgcoRbTFcrqciGcrrcrscrtcrucrvcrwcrxcrycrzcrAcrBcrCcrDciUcrEcrFcrGcrHcqvcvZcqvcrHaaaaaaaafaaaaaaaaacqvcwkcwTcwScqvaafaafaaaaaaaaacdOcomcomcomcomcrMcppcrNcrNcrNcnpcrNcrOcdOaaaaaaaaaaaaaaacrPcrPcrPbZSaafaafaafaafcnaaafaafaafaafaafaaqcrPcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index 01b4f044a3..5abdbb4154 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -1928,7 +1928,7 @@ "Ld" = (/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox/station) "Le" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{dir = 2; id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "Lf" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/roller,/obj/item/roller,/obj/item/roller,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) -"Lg" = (/obj/structure/table/rack,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/grenade_launcher,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/rcd,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/chem_dispenser/injector,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) +"Lg" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/accessory/storage/black_vest,/obj/item/weapon/rig/ert,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "Lh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "Li" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "Lj" = (/obj/machinery/door/airlock/hatch{req_access_txt = "150"; req_one_access = null; req_one_access_txt = "0"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) @@ -1970,7 +1970,8 @@ "LT" = (/turf/space/transit/east/shuttlespace_ew3,/area/shuttle/escape_pod5/transit) "LU" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area/space) "LV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) -"LW" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/accessory/storage/black_vest,/obj/item/weapon/rig/ert,/obj/item/device/mmi/digital/posibrain,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) +"LW" = (/obj/structure/table/rack,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/grenade_launcher,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/rcd,/obj/item/rig_module/device/rcd,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/mounted/egun,/obj/item/rig_module/mounted/egun,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) +"LX" = (/obj/structure/table/reinforced,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "MA" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns12,/area/space) "MO" = (/obj/machinery/vending/cigarette{contraband = newlist(); premium = newlist(); prices = list(/obj/item/weapon/storage/fancy/cigarettes = 15, /obj/item/weapon/storage/box/matches = 1, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 20); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "MP" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) @@ -2178,10 +2179,10 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMuUuVuVuVuVuVuVuVuVuVuVuVuVuVwWuXuVuVuVuYwWwivavbwjoNtvoNoNoNtZoNvetZtZtZwloNwmwnwowpwpwpwpwpwpNZtvtvtvtvtvufufvVwrwsufwtwuwvufwswrueufufugugugugugugugweuNuptxurururtxwwwwuNwwwwvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvutwxvbwyoNwzwAwBoNtZoNvNvKtZtZwEoNwmvMtvwFwGwGwGwHwGwItvwJwJwJtvufufwKwLwMwNwOwPwQwRwSwLwTufuftxwUwUwUwUwUtxtxuOtxtxtxuOtxtxuNuNuNuNuNvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMwVoVoVoVoVoVoVoVoVoVoVoVoVoVwhoUoVoVoVqVwhwXwYvMwZoNyQtZxboNxcoNoNoNxdoNoNoNwmwnuWxfxfxfxfxfxfxfxgxfxfxfxgufufufxhufufxiufxiufufxhufufufxjurururururxjurururururururxjwwwwwwwwwwvvvwvwtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMmu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMxkoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNxlxmvMxnoNvPuhLWoNtZxqtZxrtZxsxtxttZxutvxvxwxwxxxyxzxAtvxBxBxBtvufufvBxCxDwNxEufxFwRxGxCvDufufxjurururururxjurururururururxjwwwwwwwwwwtxuOuOtxtxtxtxtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMxkoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNxlxmvMxnoNvPuhLgoNtZxqtZxrtZxsxtxttZxutvxvxwxwxxxyxzxAtvxBxBxBtvufufvBxCxDwNxEufxFwRxGxCvDufufxjurururururxjurururururururxjwwwwwwwwwwtxuOuOtxtxtxtxtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMwVoVoVoVoVoVoVoVoVoVoVoVoVoVxHoUoVoVoVqVxHxIxJvMwnxKuhtZtZxLtZxMtZwmwmxNxNwmwmxutvxOxOxOxPxQxPxRtvtvtvtvtvufufvVwLxSufxiufxiufxSwLueufuftxxTxUxUxUxVtxtxxWtxtxtxuOtxtxtxxXxXxXtxtxurururxYurxZtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMxkoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNLgyaoNoNoNoNoNyboNycwmydyeyWygwmxutvtvyhyiyjykylymyhaMaMaMtxufufvVtxtxynyoufypyqtxtxueufuftxaMaMaMaMaMtxyrystxuNytuNuNyuyvywywywObtxururuQuQururyyaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoNoNoNoNyzyAxowDtZoNxewmydyfyfygwmxpyEyFyhyGyHyIyByKyhaMaMaMtxufufvVtxtxvlvmvmvmvotxtxueufuftxaMaMaMaMaMtxysystxyLyLyLuNyuywywywywyMtxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMxkoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNLWyaoNoNoNoNoNyboNycwmydyeyWygwmxutvtvyhyiyjykylymyhaMaMaMtxufufvVtxtxynyoufypyqtxtxueufuftxaMaMaMaMaMtxyrystxuNytuNuNyuyvywywywObtxururuQuQururyyaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoNoNoNoNyzyAxowDtZoNxewmydyfLXygwmxpyEyFyhyGyHyIyByKyhaMaMaMtxufufvVtxtxvlvmvmvmvotxtxueufuftxaMaMaMaMaMtxysystxyLyLyLuNyuywywywywyMtxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoNzitZtZtZtZtZtZoNxetZtZwqwqwmwmwmwmyRyhySyIyIyIyIyhaMaMaMtxufufwKyTyTyTyTyTyTyTyTyTwTufuftxaMaMaMaMaMtxyUystxyLyVyLuNyuyuyuyuyuyutxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoNzltZtZtZtZtZLfoNyXtZtZyYtZtZwCvdyJzcyhyIyIyIyIzdyhtxtxtxtxtxtxzetxtxufufufufuftxtxtxtxtxtxaMaMaMaMaMtxzfystxvFuNuNuNyuaMaMaMaMaMtxuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoNzgzgzhyDyZxazkoNyXzmzmoNznznoNoNoNoNyhyINbzpzqzryhzsztztzszuzvufzwtxtxtxzxtxtxtxaMaMaMaMaMaMaMaMaMaMtxtxtxtxtxtxtxtxyuaMaMaMaMaMzyuryNuPuPyOuryPaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzzmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtwgmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmt From 3bf5a5ca990ccf34b17bfcc87914bace22bc0b87 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 5 Mar 2015 10:40:25 -0500 Subject: [PATCH 060/168] Updates storage costs Storage cost of an item is now twice that of the next smallest item, instead of being equal to the w_class. Items with w_class 1 or 2 are unaffected. This produces much better behaviour for containers that are limited by storage space instead of slots, such as how toolboxes are planned to work in a future update. --- code/defines/obj/weapon.dm | 2 +- .../objects/items/weapons/storage/backpack.dm | 10 +++++----- code/game/objects/items/weapons/storage/bags.dm | 6 +++--- code/game/objects/items/weapons/storage/belt.dm | 4 ++-- code/game/objects/items/weapons/storage/boxes.dm | 2 +- .../objects/items/weapons/storage/briefcase.dm | 4 ++-- code/game/objects/items/weapons/storage/fancy.dm | 6 +++--- .../objects/items/weapons/storage/lockbox.dm | 2 +- .../game/objects/items/weapons/storage/secure.dm | 4 ++-- .../objects/items/weapons/storage/storage.dm | 16 ++++++++++------ code/game/objects/structures/inflatable.dm | 4 ++-- code/modules/clothing/suits/storage.dm | 4 ++-- .../clothing/under/accessories/storage.dm | 2 +- code/modules/mining/ore.dm | 1 + .../projectiles/guns/launcher/pneumatic.dm | 8 ++++---- .../modules/reagents/reagent_containers/glass.dm | 1 + .../research/xenoarchaeology/finds/finds.dm | 3 ++- .../research/xenoarchaeology/tools/tools.dm | 2 +- .../xenoarchaeology/tools/tools_pickaxe.dm | 4 ++-- 19 files changed, 46 insertions(+), 39 deletions(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 72ee42ae79..bb81eabbc5 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -437,7 +437,7 @@ collection_mode = 1 display_contents_with_number = 1 max_w_class = 3 - max_combined_w_class = 100 + max_storage_space = 100 /obj/item/weapon/stock_parts name = "stock part" diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 2b38772b86..d76f594a2a 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -8,10 +8,10 @@ desc = "You wear this on your back and put items into it." icon_state = "backpack" item_state = "backpack" - w_class = 4.0 - slot_flags = SLOT_BACK //ERROOOOO + w_class = 4 + slot_flags = SLOT_BACK max_w_class = 3 - max_combined_w_class = 21 + max_storage_space = 28 /obj/item/weapon/storage/backpack/attackby(obj/item/weapon/W as obj, mob/user as mob) if (src.use_sound) @@ -40,7 +40,7 @@ origin_tech = "bluespace=4" icon_state = "holdingpack" max_w_class = 4 - max_combined_w_class = 28 + max_storage_space = 56 New() ..() @@ -88,7 +88,7 @@ w_class = 4.0 storage_slots = 20 max_w_class = 3 - max_combined_w_class = 400 // can store a ton of shit! + max_storage_space = 400 // can store a ton of shit! /obj/item/weapon/storage/backpack/cultpack name = "trophy rack" diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 560729af39..ab5e189420 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -77,7 +77,7 @@ slot_flags = SLOT_BELT | SLOT_POCKET w_class = 3 storage_slots = 50 - max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class + max_storage_space = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class max_w_class = 3 can_hold = list(/obj/item/weapon/ore) @@ -91,7 +91,7 @@ icon = 'icons/obj/hydroponics_machines.dmi' icon_state = "plantbag" storage_slots = 50; //the number of plant pieces it can carry. - max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * plants.w_class + max_storage_space = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * plants.w_class max_w_class = 3 w_class = 2 can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown) @@ -249,7 +249,7 @@ icon_state = "cashbag" desc = "A bag for carrying lots of cash. It's got a big dollar sign printed on the front." storage_slots = 50; //the number of cash pieces it can carry. - max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * cash.w_class + max_storage_space = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * cash.w_class max_w_class = 3 w_class = 2 can_hold = list(/obj/item/weapon/coin,/obj/item/weapon/spacecash) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index f2222beead..d5c1cd851f 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -94,7 +94,7 @@ item_state = "security" storage_slots = 7 max_w_class = 3 - max_combined_w_class = 21 + max_storage_space = 28 can_hold = list( /obj/item/weapon/grenade, /obj/item/weapon/reagent_containers/spray/pepper, @@ -154,4 +154,4 @@ item_state = "swatbelt" storage_slots = 9 max_w_class = 3 - max_combined_w_class = 21 + max_storage_space = 28 diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 4436a179de..ca4227dd91 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -564,7 +564,7 @@ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap storage_slots=21 can_hold = list(/obj/item/weapon/light/tube, /obj/item/weapon/light/bulb) - max_combined_w_class = 42 //holds 21 items of w_class 2 + max_storage_space = 42 //holds 21 items of w_class 2 use_to_pickup = 1 // for picking up broken bulbs, not that most people will try /obj/item/weapon/storage/box/lights/bulbs/New() diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index f6addee005..0f534ade9e 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -7,9 +7,9 @@ force = 8.0 throw_speed = 1 throw_range = 4 - w_class = 4.0 + w_class = 4 max_w_class = 3 - max_combined_w_class = 16 + max_storage_space = 16 /obj/item/weapon/storage/briefcase/New() ..() diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index a07013a79c..ff5dfdda6c 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -47,7 +47,7 @@ icon_type = "egg" name = "egg box" storage_slots = 12 - max_combined_w_class = 24 + max_storage_space = 24 can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/egg) /obj/item/weapon/storage/fancy/egg_box/New() @@ -254,9 +254,9 @@ icon = 'icons/obj/vialbox.dmi' icon_state = "vialbox0" item_state = "syringe_kit" - max_w_class = 3 + max_w_class = 2 can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial) - max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item. + max_storage_space = 12 //The sum of the w_classes of all the items in this storage item. storage_slots = 6 req_access = list(access_virology) diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index 4bc4fb5f3c..2b584dc86e 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -7,7 +7,7 @@ item_state = "syringe_kit" w_class = 4 max_w_class = 3 - max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item. + max_storage_space = 14 //The sum of the w_classes of all the items in this storage item. storage_slots = 4 req_access = list(access_armory) var/locked = 1 diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index 26ed522a38..1499c89d2c 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -23,9 +23,9 @@ var/l_hacking = 0 var/emagged = 0 var/open = 0 - w_class = 3.0 + w_class = 3 max_w_class = 2 - max_combined_w_class = 14 + max_storage_space = 14 examine(mob/user) if(..(user, 1)) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index dd9851bb4c..14501aa343 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -8,11 +8,11 @@ /obj/item/weapon/storage name = "storage" icon = 'icons/obj/storage.dmi' - w_class = 3.0 + w_class = 3 var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else) var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set) var/max_w_class = 2 //Max size of objects that this object can store (in effect only if can_hold isn't set) - var/max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item. + var/max_storage_space = 14 //The sum of the storage costs of all the items in this storage item. var/storage_slots = 7 //The number of storage slots in this container. var/obj/screen/storage/boxes = null var/obj/screen/close/closer = null @@ -226,16 +226,17 @@ usr << "[W] is too big for this [src]." return 0 - var/sum_w_class = W.w_class + var/total_storage_space = W.get_storage_cost() for(var/obj/item/I in contents) - sum_w_class += I.w_class //Adds up the combined w_classes which will be in the storage item if the item is added to it. + total_storage_space += I.get_storage_cost() //Adds up the combined w_classes which will be in the storage item if the item is added to it. - if(sum_w_class > max_combined_w_class) + if(total_storage_space > max_storage_space) if(!stop_messages) usr << "[src] is full, make some space." return 0 if(W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage))) + //TODO: remove hack if(!istype(src, /obj/item/weapon/storage/backpack/holding)) //bohs should be able to hold backpacks again. The override for putting a boh in a boh is in backpack.dm. if(!stop_messages) usr << "[src] cannot hold [W] as it's a storage item of the same size." @@ -265,7 +266,7 @@ usr << "You put \the [W] into [src]." else if (M in range(1)) //If someone is standing close enough, they can tell what it is... M.show_message("[usr] puts [W] into [src].") - else if (W && W.w_class >= 3.0) //Otherwise they can only see large or normal items from a distance... + else if (W && W.w_class >= 3) //Otherwise they can only see large or normal items from a distance... M.show_message("[usr] puts [W] into [src].") src.orient2hud(usr) @@ -486,3 +487,6 @@ return -1 //inside something with a null loc. return depth + +/obj/item/proc/get_storage_cost() + return 2**(w_class-1) //1,2,4,8,16,... \ No newline at end of file diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index 1f760797fc..4bbb01a9c5 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -3,7 +3,7 @@ desc = "A folded membrane which rapidly expands into a large cubical shape on activation." icon = 'icons/obj/inflatable.dmi' icon_state = "folded_wall" - w_class = 3.0 + w_class = 3 attack_self(mob/user) playsound(loc, 'sound/items/zip.ogg', 75, 1) @@ -252,7 +252,7 @@ desc = "Contains inflatable walls and doors." icon_state = "inf_box" item_state = "syringe_kit" - max_combined_w_class = 21 + max_storage_space = 28 can_hold = list(/obj/item/inflatable) New() diff --git a/code/modules/clothing/suits/storage.dm b/code/modules/clothing/suits/storage.dm index 044eb1cbb7..692e2987f5 100644 --- a/code/modules/clothing/suits/storage.dm +++ b/code/modules/clothing/suits/storage.dm @@ -6,7 +6,7 @@ pockets = new/obj/item/weapon/storage/internal(src) pockets.storage_slots = 2 //two slots pockets.max_w_class = 2 //fit only pocket sized items - pockets.max_combined_w_class = 4 + pockets.max_storage_space = 4 /obj/item/clothing/suit/storage/attack_hand(mob/user as mob) if (pockets.handle_attack_hand(user)) @@ -57,7 +57,7 @@ pockets = new/obj/item/weapon/storage/internal(src) pockets.storage_slots = 4 pockets.max_w_class = 2 - pockets.max_combined_w_class = 8 + pockets.max_storage_space = 8 /obj/item/clothing/suit/storage/vest diff --git a/code/modules/clothing/under/accessories/storage.dm b/code/modules/clothing/under/accessories/storage.dm index 7bc9f88af3..77f32edb9a 100644 --- a/code/modules/clothing/under/accessories/storage.dm +++ b/code/modules/clothing/under/accessories/storage.dm @@ -75,7 +75,7 @@ /obj/item/clothing/accessory/storage/knifeharness/New() ..() - hold.max_combined_w_class = 4 + hold.max_storage_space = 4 hold.can_hold = list(/obj/item/weapon/hatchet/unathiknife,\ /obj/item/weapon/kitchen/utensil/knife,\ /obj/item/weapon/kitchen/utensil/pknife,\ diff --git a/code/modules/mining/ore.dm b/code/modules/mining/ore.dm index a637c45626..30385d49a5 100644 --- a/code/modules/mining/ore.dm +++ b/code/modules/mining/ore.dm @@ -2,6 +2,7 @@ name = "rock" icon = 'icons/obj/mining.dmi' icon_state = "ore2" + w_class = 2 var/datum/geosample/geologic_data var/oretag diff --git a/code/modules/projectiles/guns/launcher/pneumatic.dm b/code/modules/projectiles/guns/launcher/pneumatic.dm index 138c823f87..9fac802bda 100644 --- a/code/modules/projectiles/guns/launcher/pneumatic.dm +++ b/code/modules/projectiles/guns/launcher/pneumatic.dm @@ -12,7 +12,7 @@ var/fire_pressure // Used in fire checks/pressure checks. var/max_w_class = 3 // Hopper intake size. - var/max_combined_w_class = 20 // Total internal storage size. + var/max_storage_space = 20 // Total internal storage size. var/obj/item/weapon/tank/tank = null // Tank of gas for use in firing the cannon. var/obj/item/weapon/storage/tank_container // Something to hold the tank item so we don't accidentally fire it. var/pressure_setting = 10 // Percentage of the gas in the tank used to fire the projectile. @@ -64,13 +64,13 @@ else if(istype(W) && W.w_class <= max_w_class) var/total_stored = 0 for(var/obj/item/O in src.contents) - total_stored += O.w_class - if(total_stored + W.w_class <= max_combined_w_class) + total_stored += O.get_storage_cost() + if(total_stored + W.get_storage_cost() <= max_storage_space) user.drop_item(W) W.loc = src user << "You shove [W] into the hopper." else - user << "That won't fit into the hopper - it's full." + user << "That won't fit into the hopper - it's too full." return else user << "That won't fit into the hopper." diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index d49f8d1d2a..1175ac60c4 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -12,6 +12,7 @@ amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25,30,60) volume = 60 + w_class = 2 flags = OPENCONTAINER var/label_text = "" diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm index 518b2ddc40..1525ff956b 100644 --- a/code/modules/research/xenoarchaeology/finds/finds.dm +++ b/code/modules/research/xenoarchaeology/finds/finds.dm @@ -208,7 +208,8 @@ new_item.icon_state = "box" var/obj/item/weapon/storage/box/new_box = new_item new_box.max_w_class = pick(1,2,2,3,3,3,4,4) - new_box.max_combined_w_class = rand(new_box.max_w_class, new_box.max_w_class * 10) + var/storage_amount = 2**(new_box.max_w_class-1) + new_box.max_storage_space = rand(storage_amount, storage_amount * 10) if(prob(30)) apply_image_decorations = 1 if(12) diff --git a/code/modules/research/xenoarchaeology/tools/tools.dm b/code/modules/research/xenoarchaeology/tools/tools.dm index bd1b9d8505..e16db119c5 100644 --- a/code/modules/research/xenoarchaeology/tools/tools.dm +++ b/code/modules/research/xenoarchaeology/tools/tools.dm @@ -31,6 +31,6 @@ slot_flags = SLOT_BELT | SLOT_POCKET w_class = 3 storage_slots = 50 - max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class + max_storage_space = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class max_w_class = 3 can_hold = list(/obj/item/weapon/fossil) diff --git a/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm b/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm index dbe979d374..1762cfbb0d 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm @@ -117,8 +117,8 @@ /obj/item/weapon/pickaxe/four_pick,\ /obj/item/weapon/pickaxe/five_pick,\ /obj/item/weapon/pickaxe/six_pick) - max_combined_w_class = 17 - max_w_class = 4 + max_storage_space = 18 + max_w_class = 3 use_to_pickup = 1 // for picking up broken bulbs, not that most people will try /obj/item/weapon/storage/box/excavation/New() From ebabf53c6d1d4963fecb7bddfcc8ce8b9863c108 Mon Sep 17 00:00:00 2001 From: ccomp5950 Date: Thu, 5 Mar 2015 10:44:14 -0500 Subject: [PATCH 061/168] Staff now have a "re-admin self" button after de-admining themselves. Stores their admin datum in a deadmin_holder variable in the client, and just moves it back upon re-admining. --- code/modules/admin/admin_verbs.dm | 12 ++++++++++++ code/modules/admin/holder2.dm | 14 +++++++++++--- code/modules/client/client defines.dm | 1 + 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index d20105a67e..36d53e521b 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -662,6 +662,17 @@ var/list/admin_verbs_mentor = list( log_admin("[key_name(usr)] used 'kill air'.") message_admins("\blue [key_name_admin(usr)] used 'kill air'.", 1) +/client/proc/readmin_self() + set name = "Re-Admin self" + set category = "Admin" + + if(deadmin_holder) + deadmin_holder.reassociate() + log_admin("[src] re-admined themself.") + message_admins("[src] re-admined themself.", 1) + src << "You now have the keys to control the planet, or atleast a small space station" + verbs -= /client/proc/readmin_self + /client/proc/deadmin_self() set name = "De-admin self" set category = "Admin" @@ -672,6 +683,7 @@ var/list/admin_verbs_mentor = list( message_admins("[src] deadmined themself.", 1) deadmin() src << "You are now a normal player." + verbs |= /client/proc/readmin_self feedback_add_details("admin_verb","DAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/toggle_log_hrefs() diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 34b4cacde9..ecfc952467 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -34,8 +34,16 @@ var/list/admin_datums = list() if(owner) admins -= owner owner.remove_admin_verbs() + owner.deadmin_holder = owner.holder owner.holder = null - owner = null + +/datum/admins/proc/reassociate() + if(owner) + admins += owner + owner.holder = src + owner.deadmin_holder = null + owner.add_admin_verbs() + /* checks if usr is an admin with at least ONE of the flags in rights_required. (Note, they don't need all the flags) @@ -50,6 +58,7 @@ proc/admin_proc() NOTE: it checks usr! not src! So if you're checking somebody's rank in a proc which they did not call you will have to do something like if(client.holder.rights & R_ADMIN) yourself. */ + /proc/check_rights(rights_required, show_msg=1) if(usr && usr.client) if(rights_required) @@ -82,8 +91,7 @@ you will have to do something like if(client.holder.rights & R_ADMIN) yourself. /client/proc/deadmin() - admin_datums -= ckey if(holder) holder.disassociate() - del(holder) + //del(holder) return 1 diff --git a/code/modules/client/client defines.dm b/code/modules/client/client defines.dm index 81f53ec4d2..1155882b82 100644 --- a/code/modules/client/client defines.dm +++ b/code/modules/client/client defines.dm @@ -3,6 +3,7 @@ //ADMIN THINGS// //////////////// var/datum/admins/holder = null + var/datum/admins/deadmin_holder = null var/buildmode = 0 var/last_message = "" //Contains the last message sent by this client - used to protect against copy-paste spamming. From 9aed4725314a142973bcd2ed5e47a5734e7dcc37 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 5 Mar 2015 11:04:52 -0500 Subject: [PATCH 062/168] Minor storage cleanup Demotes folding to storage/box, makes doughnut boxes a subtype of box. Removes a couple of istype() hacks from storage. --- code/game/machinery/vending.dm | 2 +- .../items/stacks/sheets/sheet_types.dm | 2 +- .../objects/items/weapons/storage/backpack.dm | 6 ++++ .../objects/items/weapons/storage/boxes.dm | 26 +++++++++++++- .../objects/items/weapons/storage/misc.dm | 8 ++--- .../objects/items/weapons/storage/storage.dm | 36 +++---------------- maps/exodus-1.dmm | 10 +++--- maps/exodus-2.dmm | 4 +-- 8 files changed, 49 insertions(+), 45 deletions(-) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 10a939fd49..6f941674f2 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -837,7 +837,7 @@ req_access = list(access_security) products = list(/obj/item/weapon/handcuffs = 8,/obj/item/weapon/grenade/flashbang = 4,/obj/item/device/flash = 5, /obj/item/weapon/reagent_containers/food/snacks/donut/normal = 12,/obj/item/weapon/storage/box/evidence = 6) - contraband = list(/obj/item/clothing/glasses/sunglasses = 2,/obj/item/weapon/storage/donut_box = 2) + contraband = list(/obj/item/clothing/glasses/sunglasses = 2,/obj/item/weapon/storage/box/donut = 2) /obj/machinery/vending/hydronutrients name = "NutriMax" diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 47c812a99e..f6ceca6d20 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -187,7 +187,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ */ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ new/datum/stack_recipe("box", /obj/item/weapon/storage/box), \ - new/datum/stack_recipe("donut box", /obj/item/weapon/storage/donut_box/empty), \ + new/datum/stack_recipe("donut box", /obj/item/weapon/storage/box/donut/empty), \ new/datum/stack_recipe("egg box", /obj/item/weapon/storage/fancy/egg_box), \ new/datum/stack_recipe("light tubes", /obj/item/weapon/storage/box/lights/tubes), \ new/datum/stack_recipe("light bulbs", /obj/item/weapon/storage/box/lights/bulbs), \ diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index d76f594a2a..40937ea61c 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -67,6 +67,12 @@ return */ ..() + + //Please don't clutter the parent storage item with stupid hacks. + can_be_inserted(obj/item/W as obj, stop_messages = 0) + if(istype(W, /obj/item/weapon/storage/backpack/holding)) + return 1 + return ..() proc/failcheck(mob/user as mob) if (prob(src.reliability)) return 1 //No failure diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index ca4227dd91..4c0c58a05a 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -24,7 +24,31 @@ desc = "It's just an ordinary box." icon_state = "box" item_state = "syringe_kit" - foldable = /obj/item/stack/sheet/cardboard //BubbleWrap + var/foldable = null // BubbleWrap - if set, can be folded (when empty) into a sheet of cardboard + +// BubbleWrap - A box can be folded up to make card +/obj/item/weapon/storage/box/attack_self(mob/user as mob) + if(..()) return + + //try to fold it. + if ( contents.len ) + return + + if ( !ispath(src.foldable) ) + return + var/found = 0 + // Close any open UI windows first + for(var/mob/M in range(1)) + if (M.s_active == src) + src.close(M) + if ( M == user ) + found = 1 + if ( !found ) // User is too far away + return + // Now make the cardboard + user << "You fold [src] flat." + new src.foldable(get_turf(src)) + del(src) /obj/item/weapon/storage/box/survival/ New() diff --git a/code/game/objects/items/weapons/storage/misc.dm b/code/game/objects/items/weapons/storage/misc.dm index ab40f02839..814ee3b12c 100644 --- a/code/game/objects/items/weapons/storage/misc.dm +++ b/code/game/objects/items/weapons/storage/misc.dm @@ -11,7 +11,7 @@ * Donut Box */ -/obj/item/weapon/storage/donut_box +/obj/item/weapon/storage/box/donut icon = 'icons/obj/food.dmi' icon_state = "donutbox" name = "donut box" @@ -20,14 +20,14 @@ can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/donut) foldable = /obj/item/stack/sheet/cardboard -/obj/item/weapon/storage/donut_box/New() +/obj/item/weapon/storage/box/donut/New() ..() for(var/i=1; i <= startswith; i++) new /obj/item/weapon/reagent_containers/food/snacks/donut/normal(src) update_icon() return -/obj/item/weapon/storage/donut_box/update_icon() +/obj/item/weapon/storage/box/donut/update_icon() overlays.Cut() var/i = 0 for(var/obj/item/weapon/reagent_containers/food/snacks/donut/D in contents) @@ -36,6 +36,6 @@ overlays += img i++ -/obj/item/weapon/storage/donut_box/empty +/obj/item/weapon/storage/box/donut/empty icon_state = "donutbox0" startswith = 0 diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 14501aa343..912ea4651b 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -21,7 +21,6 @@ var/allow_quick_empty //Set this variable to allow the object to have the 'empty' verb, which dumps all the contents on the floor. var/allow_quick_gather //Set this variable to allow the object to have the 'toggle mode' verb, which quickly collects all items from a tile. var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile - var/foldable = null // BubbleWrap - if set, can be folded (when empty) into a sheet of cardboard var/use_sound = "rustle" //sound played when used. null for no sound. /obj/item/weapon/storage/MouseDrop(obj/over_object as obj) @@ -236,11 +235,9 @@ return 0 if(W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage))) - //TODO: remove hack - if(!istype(src, /obj/item/weapon/storage/backpack/holding)) //bohs should be able to hold backpacks again. The override for putting a boh in a boh is in backpack.dm. - if(!stop_messages) - usr << "[src] cannot hold [W] as it's a storage item of the same size." - return 0 //To prevent the stacking of same sized storage items. + if(!stop_messages) + usr << "[src] cannot hold [W] as it's a storage item of the same size." + return 0 //To prevent the stacking of same sized storage items. return 1 @@ -260,7 +257,7 @@ W.dropped(usr) add_fingerprint(usr) - if(!prevent_warning && !istype(W, /obj/item/weapon/gun/energy/crossbow)) + if(!prevent_warning) for(var/mob/M in viewers(usr, null)) if (M == usr) usr << "You put \the [W] into [src]." @@ -416,35 +413,12 @@ O.emp_act(severity) ..() -// BubbleWrap - A box can be folded up to make card /obj/item/weapon/storage/attack_self(mob/user as mob) - //Clicking on itself will empty it, if it has the verb to do that. if(user.get_active_hand() == src) if(src.verbs.Find(/obj/item/weapon/storage/verb/quick_empty)) src.quick_empty() - return - - //Otherwise we'll try to fold it. - if ( contents.len ) - return - - if ( !ispath(src.foldable) ) - return - var/found = 0 - // Close any open UI windows first - for(var/mob/M in range(1)) - if (M.s_active == src) - src.close(M) - if ( M == user ) - found = 1 - if ( !found ) // User is too far away - return - // Now make the cardboard - user << "You fold [src] flat." - new src.foldable(get_turf(src)) - del(src) -//BubbleWrap END + return 1 /obj/item/weapon/storage/hear_talk(mob/M as mob, text, verb, datum/language/speaking) for (var/atom/A in src) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index c9ee7c1e5f..ff4ad68c67 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -262,7 +262,7 @@ "afb" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "red"},/area/security/main) "afc" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; name = "Security"; sortType = "Security"},/turf/simulated/floor{icon_state = "red"},/area/security/main) "afd" = (/turf/simulated/floor{icon_state = "red"},/area/security/main) -"afe" = (/obj/structure/table,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/storage/donut_box,/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) +"afe" = (/obj/structure/table,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/storage/box/donut,/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) "aff" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/main) "afg" = (/obj/machinery/photocopier,/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) "afh" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/main) @@ -2319,7 +2319,7 @@ "aSE" = (/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/obj/machinery/power/sensor{name = "Powernet Sensor - AI Subgrid"; name_tag = "AI Subgrid"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aSF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/shutters{dir = 8; id = "office_shutter"; layer = 3.1; name = "Office Shutters"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "aSG" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/shutters{dir = 2; id = "kitchen"; layer = 3.3; name = "Kitchen Shutters"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/hallway/primary/starboard) -"aSH" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/donut_box,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/shutters{dir = 2; id = "kitchen"; layer = 3.3; name = "Kitchen Shutters"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/hallway/primary/starboard) +"aSH" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donut,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/shutters{dir = 2; id = "kitchen"; layer = 3.3; name = "Kitchen Shutters"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/hallway/primary/starboard) "aSI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "heads_meeting"; name = "Meeting Room Window Shutters"; opacity = 0},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aSJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_two) "aSK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_two) @@ -2580,7 +2580,7 @@ "aXF" = (/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge) "aXG" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/bridge) "aXH" = (/turf/simulated/floor{dir = 4; icon_state = "escapecorner"},/area/bridge) -"aXI" = (/obj/structure/table,/obj/machinery/camera{c_tag = "Bridge East"; dir = 2},/obj/item/weapon/storage/donut_box,/obj/structure/noticeboard{pixel_y = 27},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/bridge) +"aXI" = (/obj/structure/table,/obj/machinery/camera{c_tag = "Bridge East"; dir = 2},/obj/item/weapon/storage/box/donut,/obj/structure/noticeboard{pixel_y = 27},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/bridge) "aXJ" = (/obj/machinery/computer/med_data,/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/bridge) "aXK" = (/turf/simulated/wall,/area/maintenance/substation/medical) "aXL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_two) @@ -3070,7 +3070,7 @@ "bhb" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bhc" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bhd" = (/obj/structure/bed/chair/comfy/brown{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/crew_quarters/captain) -"bhe" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/donut_box,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/crew_quarters/captain) +"bhe" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donut,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bhf" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bhg" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bhh" = (/obj/structure/flora/pottedplant{tag = "icon-plant-10"; icon_state = "plant-10"},/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -3202,7 +3202,7 @@ "bjD" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office) "bjE" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central_one) "bjF" = (/obj/machinery/door/blast/regular{id = "chapelgun"; name = "Chapel Launcher Door"},/turf/simulated/floor/plating,/area/chapel/main) -"bjG" = (/obj/item/weapon/storage/donut_box,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/bridge/meeting_room) +"bjG" = (/obj/item/weapon/storage/box/donut,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bjH" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/bridge/meeting_room) "bjI" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/bridge/meeting_room) "bjJ" = (/obj/item/weapon/folder/blue,/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/bridge/meeting_room) diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index 91d0a55379..be4103f780 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -1250,7 +1250,7 @@ "yb" = (/obj/machinery/door/airlock/centcom{name = "Special Operations Mechbay "; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "yc" = (/obj/machinery/autolathe{desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; hacked = 1; name = "Unlocked Autolathe"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "yd" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) -"ye" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/donut_box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) +"ye" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donut,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "yf" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "yg" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "yh" = (/turf/unsimulated/wall,/area/centcom/creed) @@ -1851,7 +1851,7 @@ "JE" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access = list(45)},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/holding) "JF" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 28},/turf/unsimulated/floor{tag = "icon-whitecorner (NORTH)"; icon_state = "whitecorner"; dir = 1},/area/centcom/holding) "JG" = (/obj/structure/table/woodentable,/obj/item/device/megaphone,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"JH" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/donut_box,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"JH" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donut,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "JI" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "JJ" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_west_sensor"; pixel_x = 25},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "JK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) From 9f55526bceb4baf94145703bc467386cd59ce99b Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 5 Mar 2015 11:10:26 -0500 Subject: [PATCH 063/168] Toolboxes can now hold a limited number of w_class 3 items They can hold up to 3 w_class 3 items, or the usual 7 w_class 2 items. --- code/game/objects/items/weapons/storage/toolbox.dm | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index a585b96ce2..8f589f9883 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -5,20 +5,16 @@ icon_state = "red" item_state = "toolbox_red" flags = CONDUCT - force = 5.0 - throwforce = 10.0 + force = 5 + throwforce = 10 throw_speed = 1 throw_range = 7 - w_class = 4.0 + w_class = 4 + max_w_class = 3 + max_storage_space = 14 //can hold 7 w_class-2 items or up to 3 w_class-3 items (with 1 w_class-2 item as change). origin_tech = "combat=1" attack_verb = list("robusted") - New() - ..() - if (src.type == /obj/item/weapon/storage/toolbox) - world << "BAD: [src] ([src.type]) spawned at [src.x] [src.y] [src.z]" - del(src) - /obj/item/weapon/storage/toolbox/emergency name = "emergency toolbox" icon_state = "red" From 94477bd66ca4153b866d0340b3261016373a397c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Thu, 5 Mar 2015 21:47:26 +0100 Subject: [PATCH 064/168] Minor fixes on the overlays. Made holosigns functional again. --- code/game/machinery/holosign.dm | 2 +- .../mob/living/carbon/human/update_icons.dm | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/code/game/machinery/holosign.dm b/code/game/machinery/holosign.dm index e341a8fc7f..b00ab9d75b 100644 --- a/code/game/machinery/holosign.dm +++ b/code/game/machinery/holosign.dm @@ -48,7 +48,7 @@ active = !active icon_state = "light[active]" - for(var/obj/machinery/holosign/M in machines) + for(var/obj/machinery/holosign/M in world) if (M.id == src.id) spawn( 0 ) M.toggle() diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 69faad2d8d..15ad0b6bfd 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -109,11 +109,11 @@ Please contact me on #coderbus IRC. ~Carn x #define DAMAGE_LAYER 2 #define SURGERY_LEVEL 3 //bs12 specific. #define UNIFORM_LAYER 4 -#define TAIL_LAYER 5 //bs12 specific. this hack is probably gonna come back to haunt me -#define ID_LAYER 6 -#define SHOES_LAYER 7 -#define GLOVES_LAYER 8 -#define SUIT_LAYER 9 +#define ID_LAYER 5 +#define SHOES_LAYER 6 +#define GLOVES_LAYER 7 +#define SUIT_LAYER 8 +#define TAIL_LAYER 9 //bs12 specific. this hack is probably gonna come back to haunt me #define GLASSES_LAYER 10 #define BELT_LAYER 11 //Possible make this an overlay of somethign required to wear a belt? #define SUIT_STORE_LAYER 12 @@ -920,7 +920,7 @@ proc/get_damage_icon_part(damage_state, body_part) /mob/living/carbon/human/update_fire(var/update_icons=1) overlays_standing[FIRE_LAYER] = null if(on_fire) - overlays_standing[FIRE_LAYER] = image("icon"='icons/mob/OnFire.dmi', "icon_state"="Standing", "layer"=-FIRE_LAYER) + overlays_standing[FIRE_LAYER] = image("icon"='icons/mob/OnFire.dmi', "icon_state"="Standing", "layer"=FIRE_LAYER) if(update_icons) update_icons() @@ -974,12 +974,12 @@ proc/get_damage_icon_part(damage_state, body_part) #undef DAMAGE_LAYER #undef SURGERY_LEVEL #undef UNIFORM_LAYER -#undef TAIL_LAYER #undef ID_LAYER #undef SHOES_LAYER #undef GLOVES_LAYER #undef EARS_LAYER #undef SUIT_LAYER +#undef TAIL_LAYER #undef GLASSES_LAYER #undef FACEMASK_LAYER #undef BELT_LAYER From bdd84767d129f52ca28925c825d6d103503e7f05 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Thu, 5 Mar 2015 22:28:22 +0100 Subject: [PATCH 065/168] AI can now track people holding up objects to the camera. --- code/game/machinery/camera/camera.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index d631ca46df..fbad7c7e92 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -166,7 +166,7 @@ for(var/mob/living/silicon/ai/O in living_mob_list) if(!O.client) continue if(U.name == "Unknown") O << "[U] holds \a [itemname] up to one of your cameras ..." - else O << "
[U] holds \a [itemname] up to one of your cameras ..." + else O << "[U] holds \a [itemname] up to one of your cameras ..." O << browse(text("[][]", itemname, info), text("window=[]", itemname)) for(var/mob/O in player_list) if (istype(O.machine, /obj/machinery/computer/security)) From 5d89e3eea5f43b454ea94cac502b21415bb0b59e Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Thu, 5 Mar 2015 21:14:18 +0100 Subject: [PATCH 066/168] Airlock changes. It's now possible to pass through doors sooner after they start opening, and for longer as they're closing. Doors no longer use sleeps to decide when to close. Avoids issues where quickly opening, closing, then opening a door again causes it to close pre-maturely. --- code/game/machinery/doors/airlock.dm | 43 ++++++++++------ code/game/machinery/doors/door.dm | 75 +++++++++++++++++----------- 2 files changed, 75 insertions(+), 43 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 05e30f8f22..41e88ae741 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -7,9 +7,10 @@ explosion_resistance = 15 var/aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in. var/hackProof = 0 // if 1, this door can't be hacked by the AI - var/electrified_until = 0 // World time when the door is no longer electrified. -1 if it is permanently electrified until someone fixes it. - var/main_power_lost_until = 0 //World time when main power is restored. - var/backup_power_lost_until = -1 //World time when backup power is restored. + var/electrified_until = 0 //World time when the door is no longer electrified. -1 if it is permanently electrified until someone fixes it. + var/main_power_lost_until = 0 //World time when main power is restored. + var/backup_power_lost_until = -1 //World time when backup power is restored. + var/next_beep_at = 0 //World time when we may next beep due to doors being blocked by mobs var/spawnPowerRestoreRunning = 0 var/welded = null var/locked = 0 @@ -228,6 +229,8 @@ else if(electrified_until > 0 && world.time >= electrified_until) electrify(0) + ..() + /obj/machinery/door/airlock/uranium/process() if(world.time > last_event+20) if(prob(50)) @@ -438,7 +441,7 @@ About the new airlock wires panel: /obj/machinery/door/airlock/update_icon() if(overlays) overlays.Cut() if(density) - if(locked && lights) + if(locked && lights && src.arePowerSystemsOn()) icon_state = "door_locked" else icon_state = "door_closed" @@ -459,7 +462,6 @@ About the new airlock wires panel: icon_state = "door_open" if((stat & BROKEN) && !(stat & NOPOWER)) overlays += image(icon, "sparks_open") - return /obj/machinery/door/airlock/do_animate(animation) @@ -488,6 +490,7 @@ About the new airlock wires panel: if("deny") if(density && src.arePowerSystemsOn()) flick("door_deny", src) + playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 0) return /obj/machinery/door/airlock/attack_ai(mob/user as mob) @@ -822,7 +825,7 @@ About the new airlock wires panel: return /obj/machinery/door/airlock/open(var/forced=0) - if( operating || welded || locked ) + if(!can_open()) return 0 if(!forced) if( !arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_OPEN_DOOR) ) @@ -836,20 +839,32 @@ About the new airlock wires panel: src.closeOther.close() return ..() -/obj/machinery/door/airlock/close(var/forced=0) - if(operating || welded || locked) - return +/obj/machinery/door/airlock/can_open() + if(locked || welded) + return 0 + return ..() + +/obj/machinery/door/airlock/can_close(var/forced) + if(locked || welded) + return 0 if(!forced) //despite the name, this wire is for general door control. //Bolts are already covered by the check for locked, above - if( !arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_OPEN_DOOR) ) - return + if(!arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_OPEN_DOOR)) + return 0 + return ..() + +/obj/machinery/door/airlock/close(var/forced=0) + if(!can_close(forced)) + return + if(safe) for(var/turf/turf in locs) if(locate(/mob/living) in turf) - // playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 0) //THE BUZZING IT NEVER STOPS -Pete - spawn (60) - close() + if(world.time > next_beep_at) + playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 0) + next_beep_at = world.time + SecondsToTicks(10) + close_door_at = world.time + 6 return for(var/turf/turf in locs) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index a74cc5539d..f3597c934f 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -31,6 +31,7 @@ var/hitsound = 'sound/weapons/smash.ogg' //sound door makes when hit with a weapon var/obj/item/stack/sheet/metal/repairing var/block_air_zones = 1 //If set, air zones cannot merge across the door even when it is opened. + var/close_door_at = 0 //When to automatically close the door, if possible //Multi-tile doors dir = EAST @@ -74,6 +75,24 @@ ..() return +/obj/machinery/door/process() + if(close_door_at && world.time >= close_door_at) + if(autoclose) + close_door_at = next_close_time() + close() + else + close_door_at = 0 + +/obj/machinery/door/proc/can_open() + if(!density || operating || !ticker) + return 0 + return 1 + +/obj/machinery/door/proc/can_close(var/forced = 0) + if(!density && !operating && !(!forced && (stat & (BROKEN|NOPOWER)))) + return 1 + return 0 + /obj/machinery/door/Bumped(atom/AM) if(p_open || operating) return if(ismob(AM)) @@ -97,7 +116,7 @@ if(mecha.occupant && (src.allowed(mecha.occupant) || src.check_access_list(mecha.operation_req_access))) open() else - flick("door_deny", src) + do_animate("deny") return if(istype(AM, /obj/structure/bed/chair/wheelchair)) var/obj/structure/bed/chair/wheelchair/wheel = AM @@ -105,7 +124,7 @@ if(wheel.pulling && (src.allowed(wheel.pulling))) open() else - flick("door_deny", src) + do_animate("deny") return return @@ -127,7 +146,7 @@ if(density) if(allowed(user)) open() - else flick("door_deny", src) + else do_animate("deny") return /obj/machinery/door/meteorhit(obj/M as obj) @@ -264,7 +283,7 @@ if(src.operating) return if(src.density && (operable() && istype(I, /obj/item/weapon/card/emag))) - flick("door_spark", src) + do_animate("spark") sleep(6) open() operating = -1 @@ -277,8 +296,8 @@ close() return - if(src.density && !(stat & (NOPOWER|BROKEN))) - flick("door_deny", src) + if(src.density) + do_animate("deny") return /obj/machinery/door/proc/take_damage(var/damage) @@ -355,23 +374,27 @@ flick("o_doorc1", src) else flick("doorc1", src) + if("spark") + if(density) + flick("door_spark", src) if("deny") - flick("door_deny", src) + if(density && !(stat & (NOPOWER|BROKEN))) + flick("door_deny", src) + playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 0) return /obj/machinery/door/proc/open() - if(!density) return 1 - if(operating > 0) return - if(!ticker) return 0 - if(!operating) operating = 1 + if(!can_open()) return + if(!operating) operating = 1 do_animate("opening") icon_state = "door0" src.SetOpacity(0) - sleep(10) - src.layer = open_layer + sleep(3) src.density = 0 + sleep(7) + src.layer = open_layer explosion_resistance = 0 update_icon() SetOpacity(0) @@ -379,26 +402,26 @@ if(operating) operating = 0 - if(autoclose && normalspeed) - spawn(150) - autoclose() - if(autoclose && !normalspeed) - spawn(5) - autoclose() + if(autoclose) + close_door_at = next_close_time() return 1 +/obj/machinery/door/proc/next_close_time() + return world.time + (normalspeed ? 150 : 5) /obj/machinery/door/proc/close() - if(density) return 1 - if(operating > 0) return + if(!can_close()) + return operating = 1 + close_door_at = 0 + do_animate("closing") + sleep(3) src.density = 1 explosion_resistance = initial(explosion_resistance) src.layer = closed_layer - do_animate("closing") - sleep(10) + sleep(7) update_icon() if(visible && !glass) SetOpacity(1) //caaaaarn! @@ -431,12 +454,6 @@ else source.thermal_conductivity = initial(source.thermal_conductivity) -/obj/machinery/door/proc/autoclose() - var/obj/machinery/door/airlock/A = src - if(!A.density && !A.operating && !A.locked && !A.welded && !(A.stat & (BROKEN|NOPOWER)) && A.autoclose) - close() - return - /obj/machinery/door/Move(new_loc, new_dir) //update_nearby_tiles() . = ..() From 73ca3b0656a8603b3df7a89ee50f0d6cef5194d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Thu, 5 Mar 2015 23:30:06 +0100 Subject: [PATCH 067/168] Fixed holosign not being registered as machine. The master controller does not find you worthy of the machines list if you don't process. --- code/game/machinery/holosign.dm | 35 +++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/code/game/machinery/holosign.dm b/code/game/machinery/holosign.dm index b00ab9d75b..2b585437fc 100644 --- a/code/game/machinery/holosign.dm +++ b/code/game/machinery/holosign.dm @@ -5,26 +5,31 @@ icon = 'icons/obj/holosign.dmi' icon_state = "sign_off" layer = 4 + idle_power_usage = 2 var/lit = 0 var/id = null var/on_icon = "sign_on" - proc/toggle() - if (stat & (BROKEN|NOPOWER)) - return - lit = !lit - update_icon() - +/obj/machinery/holosign/proc/toggle() + if (stat & (BROKEN|NOPOWER)) + return + lit = !lit update_icon() - if (!lit) - icon_state = "sign_off" - else - icon_state = on_icon - power_change() - if (stat & NOPOWER) - lit = 0 - update_icon() +/obj/machinery/holosign/process() + if(lit) + auto_use_power() + +/obj/machinery/holosign/update_icon() + if (!lit) + icon_state = "sign_off" + else + icon_state = on_icon + +/obj/machinery/holosign/power_change() + if (stat & NOPOWER) + lit = 0 + update_icon() /obj/machinery/holosign/surgery name = "surgery holosign" @@ -48,7 +53,7 @@ active = !active icon_state = "light[active]" - for(var/obj/machinery/holosign/M in world) + for(var/obj/machinery/holosign/M in machines) if (M.id == src.id) spawn( 0 ) M.toggle() From 429b35b5262f39400b5572ec277210df90e97e8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Fri, 6 Mar 2015 00:05:22 +0100 Subject: [PATCH 068/168] Removed auto_use_power from process. --- code/game/machinery/holosign.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/holosign.dm b/code/game/machinery/holosign.dm index 2b585437fc..222975316f 100644 --- a/code/game/machinery/holosign.dm +++ b/code/game/machinery/holosign.dm @@ -14,11 +14,11 @@ if (stat & (BROKEN|NOPOWER)) return lit = !lit + use_power = lit ? 1 : 0 update_icon() /obj/machinery/holosign/process() - if(lit) - auto_use_power() + return /obj/machinery/holosign/update_icon() if (!lit) @@ -29,6 +29,7 @@ /obj/machinery/holosign/power_change() if (stat & NOPOWER) lit = 0 + use_power = 0 update_icon() /obj/machinery/holosign/surgery From f064305a7b7c8d649aec8e3584ff58e52516835a Mon Sep 17 00:00:00 2001 From: Chinsky Date: Fri, 6 Mar 2015 07:11:19 +0300 Subject: [PATCH 069/168] Fixes #8268 --- code/modules/organs/blood.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 067ef6a42e..6e8f521e6d 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -97,7 +97,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 if(!pale) pale = 1 update_body() - eye_blurry += 6 + eye_blurry = max(eye_blurry,6) if(oxyloss < 50) oxyloss += 10 oxyloss += 1 @@ -329,4 +329,4 @@ proc/blood_splatter(var/target,var/datum/reagent/blood/source,var/large) if(source.data["virus2"]) B.virus2 = virus_copylist(source.data["virus2"]) - return B \ No newline at end of file + return B From 32ee4d57dd8c5734b8640e90d80e9f3eba6bfca1 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 5 Mar 2015 12:21:09 -0500 Subject: [PATCH 070/168] Improves cult conversion Now uses a continuous damage system, dealing damage once every 100 ticks (~10 seconds). Also improves effects dealt when resisting conversion. --- code/game/gamemodes/cult/ritual.dm | 2 + code/game/gamemodes/cult/runes.dm | 111 +++++++++++++++++++---------- code/stylesheet.dm | 5 +- 3 files changed, 77 insertions(+), 41 deletions(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index e3ac71b77c..041575c4b7 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -32,6 +32,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", var/word1 var/word2 var/word3 + var/list/converting = list() + // Places these combos are mentioned: this file - twice in the rune code, once in imbued tome, once in tome's HTML runes.dm - in the imbue rune code. If you change a combination - dont forget to change it everywhere. // travel self [word] - Teleport to random [rune with word destination matching] diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 88e16dbe46..21c0b8e78b 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -1,6 +1,7 @@ var/list/sacrificed = list() /obj/effect/rune + /////////////////////////////////////////FIRST RUNE proc teleport(var/key) @@ -98,50 +99,82 @@ var/list/sacrificed = list() /////////////////////////////////////////THIRD RUNE convert() + var/mob/living/carbon/target = null for(var/mob/living/carbon/M in src.loc) - if(iscultist(M)) - continue - if(M.stat==2) - continue - usr.say("Mah[pick("'","`")]weyh pleggh at e'ntrath!") + if(!iscultist(M) && M.stat < DEAD && !(M in converting)) + target = M + break + + if(!target) //didn't find any new targets + if(!converting.len) + fizzle() + else + usr << "You sense that the power of the dark one is already working away at them." + return - if (M.species && (M.species.flags & NO_PAIN)) - M.visible_message("\red The markings below [M] glow a bloody red.") - else - M.visible_message("\red [M] writhes in pain as the markings below \him glow a bloody red.", \ - "\red AAAAAAHHHH!", \ - "\red You hear an anguished scream.") - if(is_convertable_to_cult(M.mind) && !jobban_isbanned(M, "cultist"))//putting jobban check here because is_convertable uses mind as argument - - // Mostly for the benefit of those who resist, but it makes sense for even those who join to have some.. effect. - M.take_overall_damage(0, 10) - - var/choice = alert(M,"Do you want to join the cult?","Submit to Nar'Sie","Resist","Submit") - if(choice == "Submit") - ticker.mode.add_cultist(M.mind) - M.mind.special_role = "Cultist" - M << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root." - M << "Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back." - return 1 - - else if(choice == "Resist") - - M.take_overall_damage(0, rand(5, 10)) // You dirty resister cannot handle the damage to your mind. Easily. - // Resist messages go! - var/BurnLoss = M.getFireLoss() - if (BurnLoss < 25) M << "Your blood boils as you force yourself to resist the corruption invading every corner of your mind." - else if (BurnLoss < 45) M << "Your blood boils and your body burns as the corruption further forces itself into your body and mind." - else if (BurnLoss < 75) M << "You begin to hallucinate images of a dark and incomprehensible being and your entire body feels like its engulfed in flame as your mental defenses crumble." - else if (BurnLoss < 100) M << "Your mind turns to ash as the burning flames engulf your very soul and images of Nar'Sie begin to bombard the last remnants of mental resistance." - else M << "Your entire broken soul and being is engulfed in corruption and flames as your mind shatters away into nothing." - return 0 - else - M << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root." - M << "And you were able to force it out of your mind. You now know the truth, there's something horrible out there, stop it and its minions at all costs." + usr.say("Mah[pick("'","`")]weyh pleggh at e'ntrath!") + + converting |= target + var/list/waiting_for_input = list(target = 0) //need to box this up in order to be able to reset it again from inside spawn, apparently + var/initial_message = 0 + while(target in converting) + if(target.loc != src.loc || target.stat == DEAD) + converting -= target + if(target.getFireLoss() < 100) + target.hallucination = min(target.hallucination, 500) return 0 - return fizzle() + + target.take_overall_damage(0, rand(5, 20)) // You dirty resister cannot handle the damage to your mind. Easily. - even cultists who accept right away should experience some effects + // Resist messages go! + if(initial_message) //don't do this stuff right away, only if they resist or hesitate. + switch(target.getFireLoss()) + if(0 to 25) + target << "Your blood boils as you force yourself to resist the corruption invading every corner of your mind." + if(25 to 45) + target << "Your blood boils and your body burns as the corruption further forces itself into your body and mind." + if(45 to 75) + target << "You begin to hallucinate images of a dark and incomprehensible being and your entire body feels like its engulfed in flame as your mental defenses crumble." + target.apply_effect(rand(1,10), STUTTER) + if(75 to 100) + target << "Your mind turns to ash as the burning flames engulf your very soul and images of an unspeakable horror begin to bombard the last remnants of mental resistance." + //broken mind - 5000 may seem like a lot I wanted the effect to really stand out for maxiumum losing-your-mind-spooky + //hallucination is reduced when the step off as well, provided they haven't hit the last stage... + target.hallucination += 5000 + target.apply_effect(10, STUTTER) + target.adjustBrainLoss(1) + if(100 to INFINITY) + target << "Your entire broken soul and being is engulfed in corruption and flames as your mind shatters away into nothing." + target.hallucination += 5000 + target.apply_effect(15, STUTTER) + target.adjustBrainLoss(rand(1,5)) + initial_message = 1 + if (target.species && (target.species.flags & NO_PAIN)) + target.visible_message("The markings below [target] glow a bloody red.") + else + target.visible_message("[target] writhes in pain as the markings below \him glow a bloody red.", "AAAAAAHHHH!", "You hear an anguished scream.") + if(!waiting_for_input[target]) //so we don't spam them with dialogs if they hesitate + waiting_for_input[target] = 1 + + if(!is_convertable_to_cult(target.mind) || jobban_isbanned(target, "cultist"))//putting jobban check here because is_convertable uses mind as argument + //waiting_for_input ensures this is only shown once, so they basically auto-resist from here on out. They still need to find a way to get off the freaking rune if they don't want to burn to death, though. + target << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root." + target << "And you were able to force it out of your mind. You now know the truth, there's something horrible out there, stop it and its minions at all costs." + + else spawn() + var/choice = alert(target,"Do you want to join the cult?","Submit to Nar'Sie","Resist","Submit") + waiting_for_input[target] = 0 + if(choice == "Submit") //choosing 'Resist' does nothing of course. + ticker.mode.add_cultist(target.mind) + target.mind.special_role = "Cultist" + target << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root." + target << "Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back." + converting -= target + target.hallucination = 0 //sudden clarity + + sleep(100) //proc once every 10 seconds + return 1 /////////////////////////////////////////FOURTH RUNE diff --git a/code/stylesheet.dm b/code/stylesheet.dm index 5bb538a3dc..ea4ac29fc3 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -70,12 +70,13 @@ h1.alert, h2.alert {color: #000000;} .disarm {color: #990000;} .passive {color: #660000;} -.danger {color: #ff0000; font-weight: bold;} -.warning {color: #ff0000; font-style: italic;} +.danger {color: #ff0000; font-weight: bold;} +.warning {color: #ff0000; font-style: italic;} .rose {color: #ff5050;} .info {color: #0000CC;} .notice {color: #000099;} .alium {color: #00ff00;} +.cult {color: #800080; font-weight: bold; font-style: italic;} /* Languages */ From 875f805724427b0b3ddd30ac39b621340dbd40d9 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Fri, 6 Mar 2015 00:06:53 -0500 Subject: [PATCH 071/168] Edits Z8 desc --- code/modules/projectiles/guns/projectile/automatic.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index af2b9f9368..8575d63754 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -87,7 +87,7 @@ /obj/item/weapon/gun/projectile/automatic/z8 name = "\improper Z8 Bulldog" - desc = "An older model bullpup carbine, made by the now defunct Zendai Foundries. Uses armor piercing 5.56mm rounds and has an underslung grenade launcher. Makes you feel like a space marine when you hold it." + desc = "An older model bullpup carbine, made by the now defunct Zendai Foundries. Uses armor piercing 5.56mm rounds. Makes you feel like a space marine when you hold it." icon_state = "carbine" item_state = "shotgun" w_class = 4 From 0262ab0de0e3a4a5e82d99a133190226788c4b77 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Fri, 6 Mar 2015 18:08:28 +0100 Subject: [PATCH 072/168] Runtime fixes Fixes ```` runtime error: Cannot read null.name proc name: sql report cyborg death (/proc/sql_report_cyborg_death) source file: statistics.dm,87 usr: the maintenance drone (106) (/mob/living/silicon/robot/drone) src: null ```` ```` runtime error: Cannot read null.name proc name: sql report death (/proc/sql_report_death) source file: statistics.dm,52 usr: null src: null ```` ```` runtime error: Cannot read null.armor proc name: infection check (/proc/infection_check) source file: helpers.dm,16 usr: null src: null ```` ```` runtime error: bad client proc name: open (/datum/nanoui/proc/open) source file: nanoui.dm,419 usr: null src: /datum/nanoui (/datum/nanoui) /datum/nanoui (/datum/nanoui): open() ```` ```` runtime error: undefined variable /obj/effect/plantsegment/var/movable proc name: update canmove (/mob/proc/update_canmove) source file: mob.dm,862 usr: null src: the monkey (643) (/mob/living/carbon/monkey) ```` --- code/defines/procs/statistics.dm | 10 ++++------ code/modules/events/event_manager.dm | 2 +- code/modules/mob/mob.dm | 4 +++- code/modules/nano/nanoui.dm | 2 ++ code/modules/virus2/helpers.dm | 23 ++++++++++++----------- 5 files changed, 22 insertions(+), 19 deletions(-) diff --git a/code/defines/procs/statistics.dm b/code/defines/procs/statistics.dm index 810bfb79aa..8a9eb4042d 100644 --- a/code/defines/procs/statistics.dm +++ b/code/defines/procs/statistics.dm @@ -47,9 +47,8 @@ proc/sql_report_death(var/mob/living/carbon/human/H) if(!H.key || !H.mind) return - var/turf/T = H.loc - var/area/placeofdeath = get_area(T.loc) - var/podname = placeofdeath.name + var/area/placeofdeath = get_area(H) + var/podname = placeofdeath ? placeofdeath.name : "Unknown area" var/sqlname = sanitizeSQL(H.real_name) var/sqlkey = sanitizeSQL(H.key) @@ -82,9 +81,8 @@ proc/sql_report_cyborg_death(var/mob/living/silicon/robot/H) if(!H.key || !H.mind) return - var/turf/T = H.loc - var/area/placeofdeath = get_area(T.loc) - var/podname = placeofdeath.name + var/area/placeofdeath = get_area(H) + var/podname = placeofdeath ? placeofdeath.name : "Unknown area" var/sqlname = sanitizeSQL(H.real_name) var/sqlkey = sanitizeSQL(H.key) diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm index 070598b333..35b1d30d08 100644 --- a/code/modules/events/event_manager.dm +++ b/code/modules/events/event_manager.dm @@ -32,7 +32,7 @@ EC.process() /datum/event_manager/proc/event_complete(var/datum/event/E) - if(!E.event_meta) // datum/event is used here and there for random reasons, maintaining "backwards compatibility" + if(!E.event_meta || !E.severity) // datum/event is used here and there for random reasons, maintaining "backwards compatibility" log_debug("Event of '[E.type]' with missing meta-data has completed.") return diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index a93b000e0d..54987ff01d 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -859,7 +859,9 @@ note dizziness decrements automatically in the mob's Life() proc. canmove = 1 pixel_y = V.mob_offset_y else if(buckled) - if (!buckled.movable) + // var/movable is defined at /obj/structure/stool/bed level + // If we're buckled to something else, such as vines, assume it's stationary. + if (!istype(buckled) || !buckled.movable) anchored = 1 canmove = 0 if(istype(buckled,/obj/structure/stool/bed/chair) ) diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm index bdfeffe58e..d269cb96fc 100644 --- a/code/modules/nano/nanoui.dm +++ b/code/modules/nano/nanoui.dm @@ -410,6 +410,8 @@ nanoui is used to open and update nano browser uis * @return nothing */ /datum/nanoui/proc/open() + if(!user.client) + return var/window_size = "" if (width && height) diff --git a/code/modules/virus2/helpers.dm b/code/modules/virus2/helpers.dm index 6f55e3ba58..17cabb5210 100644 --- a/code/modules/virus2/helpers.dm +++ b/code/modules/virus2/helpers.dm @@ -11,16 +11,17 @@ proc/infection_check(var/mob/living/carbon/M, var/vector = "Airborne") if(M.internal) score = 6 //not breathing infected air helps greatly var/obj/item/I = M.wear_mask - + //masks provide a small bonus and can replace overall bio protection - score = max(score, round(0.06*I.armor["bio"])) - if (istype(I, /obj/item/clothing/mask)) - score += 1 //this should be added after - + if(I) + score = max(score, round(0.06*I.armor["bio"])) + if (istype(I, /obj/item/clothing/mask)) + score += 1 //this should be added after + if("Contact") if(istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/H = M - + //gloves provide a larger bonus if (istype(H.gloves, /obj/item/clothing/gloves)) score += 2 @@ -45,12 +46,12 @@ proc/infection_check(var/mob/living/carbon/M, var/vector = "Airborne") return 0 var/protection = M.getarmor(null, "bio") //gets the full body bio armour value, weighted by body part coverage. - + if (vector == "Airborne") var/obj/item/I = M.wear_mask if (istype(I)) protection = max(protection, round(0.06*I.armor["bio"])) - + return prob(protection) //Checks if table-passing table can reach target (5 tile radius) @@ -80,10 +81,10 @@ proc/airborne_can_reach(turf/source, turf/target) return if(M.reagents.has_reagent("spaceacillin")) return - + if(!disease.affected_species.len) return - + if (!(M.species.name in disease.affected_species)) if (forced) disease.affected_species[1] = M.species.name @@ -131,7 +132,7 @@ proc/airborne_can_reach(turf/source, turf/target) // log_debug("Attempting virus [ID]") var/datum/disease2/disease/V = virus2[ID] if(V.spreadtype != vector) continue - + //It's hard to get other people sick if you're in an airtight suit. if(!infection_spreading_check(src, V.spreadtype)) continue From 9f1e04aa50044648c2e2e346c79a9090a721d90c Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 7 Mar 2015 11:40:00 +1030 Subject: [PATCH 073/168] Thanks TortoiseGit. --- code/modules/mob/mob.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 1fc34e8dea..751c827ee0 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -859,7 +859,7 @@ note dizziness decrements automatically in the mob's Life() proc. pixel_y = V.mob_offset_y else if(buckled) if(buckled.buckle_lying != -1) - lying = buckled.buckle_lying + lying = buckled.buckle_lying // var/movable is defined at /obj/structure/stool/bed level // If we're buckled to something else, such as vines, assume it's stationary. if (!istype(buckled) || !buckled.movable) anchored = 1 From ac860b976a144e38e1476b7a0531124db835a0ef Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 7 Mar 2015 11:46:29 +1030 Subject: [PATCH 074/168] Fixing compile issues, adjusted buckle code after a weird merge. --- code/modules/mob/mob.dm | 18 +++++++++--------- code/modules/mob/mob_defines.dm | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 751c827ee0..61959ab49c 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -858,15 +858,15 @@ note dizziness decrements automatically in the mob's Life() proc. canmove = 1 pixel_y = V.mob_offset_y else if(buckled) - if(buckled.buckle_lying != -1) - lying = buckled.buckle_lying - // var/movable is defined at /obj/structure/stool/bed level - // If we're buckled to something else, such as vines, assume it's stationary. - if (!istype(buckled) || !buckled.movable) anchored = 1 - canmove = 0 - else - anchored = 0 - canmove = 1 + anchored = 1 + canmove = 0 + if(istype(buckled)) + if(buckled.buckle_lying != -1) + lying = buckled.buckle_lying + if(buckled.buckle_movable) + anchored = 0 + canmove = 1 + else if( stat || weakened || paralysis || resting || sleeping || (status_flags & FAKEDEATH)) lying = 1 canmove = 0 diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 1bf0e17e57..47c3bb0f6c 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -121,7 +121,7 @@ var/m_int = null//Living var/m_intent = "run"//Living var/lastKnownIP = null - var/obj/structure/bed/buckled = null//Living + var/obj/buckled = null//Living var/obj/item/l_hand = null//Living var/obj/item/r_hand = null//Living var/obj/item/weapon/back = null//Human/Monkey From cb0ec5abe4db13b213b9ace67fea798ba99e100a Mon Sep 17 00:00:00 2001 From: MrSnapwalk Date: Fri, 6 Mar 2015 21:14:32 -0600 Subject: [PATCH 075/168] Adds 7 new posters. --- .../objects/effects/decals/posters/bs12.dm | 42 +++++++++++++++++- icons/obj/contraband.dmi | Bin 94334 -> 102519 bytes 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/code/game/objects/effects/decals/posters/bs12.dm b/code/game/objects/effects/decals/posters/bs12.dm index eef2b2e3bf..80c52a362a 100644 --- a/code/game/objects/effects/decals/posters/bs12.dm +++ b/code/game/objects/effects/decals/posters/bs12.dm @@ -247,4 +247,44 @@ /datum/poster/bay_50 icon_state="bsposter50" name = "Pinup Girl Cindy Kate" - desc = "This particular one is of Cindy Kate, a seductive performer well known among less savoury circles." //idk \ No newline at end of file + desc = "This particular one is of Cindy Kate, a seductive performer well known among less savoury circles." + +/datum/poster/bay_51 + icon_state="bsposter51" + name = "space appreciation poster" + desc = "This is a poster produced by the Generic Space Company, as a part of a series of commemorative posters on the wonders of space. One of three." + +/datum/poster/bay_52 + icon_state="bsposter52" + name = "fire safety poster" + desc = "This is a poster reminding you of what you should do if you are on fire, or if you are at a dance party." + +/datum/poster/bay_53 + icon_state="bsposter53" + name = "fire extinguisher poster" + desc = "This is a poster reminding you of what you should use to put out a fire." + +/datum/poster/bay_54 + icon_state="bsposter54" + name = "firefighter poster" + desc = "This is a poster of a particularly stern looking firefighter. The caption reads, \"Only you can prevent space fires.\"" + +/datum/poster/bay_55 + icon_state="bsposter55" + name = "Earth appreciation poster" + desc = "This is a poster produced by the Generic Space Company, as a part of a series of commemorative posters on the wonders of space. Two of three." + +/datum/poster/bay_56 + icon_state="bsposter56" + name = "Mars appreciation poster" + desc = "This is a poster produced by the Generic Space Company, as a part of a series of commemorative posters on the wonders of space. Three of three." + +/datum/poster/bay_57 + icon_state="bsposter57" + name = "space carp warning poster" + desc = "This poster tells of the dangers of space carp infestations." + +/datum/poster/bay_58 + icon_state="bsposter58" + name = "space carp information poster" + desc = "This poster showcases an old spacer saying on the dangers of migrant space carp." \ No newline at end of file diff --git a/icons/obj/contraband.dmi b/icons/obj/contraband.dmi index 020b44606b79ae13084400c50d172e0bf325d3d2..ee5eb6d9a2e9eb7183ae68aada878ef88e1bec71 100644 GIT binary patch delta 16693 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 Jvd$@?2>{2TnTG%X delta 8458 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 s Date: Fri, 6 Mar 2015 23:40:50 -0500 Subject: [PATCH 076/168] Adds help text and some antag text to common weapons. Makes chameleon gun change proc play nice with multiple definitions. Rest of chameleon stuff will be changed later when I get around to it. --- baystation12.dme | 1 + code/modules/clothing/under/chameleon.dm | 631 +++++++++---------- code/modules/examine/descriptions/weapons.dm | 91 +++ 3 files changed, 407 insertions(+), 316 deletions(-) create mode 100644 code/modules/examine/descriptions/weapons.dm diff --git a/baystation12.dme b/baystation12.dme index d9ced5fefc..bf45a077a4 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -968,6 +968,7 @@ #include "code\modules\examine\descriptions\stacks.dm" #include "code\modules\examine\descriptions\structures.dm" #include "code\modules\examine\descriptions\turfs.dm" +#include "code\modules\examine\descriptions\weapons.dm" #include "code\modules\ext_scripts\irc.dm" #include "code\modules\ext_scripts\python.dm" #include "code\modules\flufftext\Dreaming.dm" diff --git a/code/modules/clothing/under/chameleon.dm b/code/modules/clothing/under/chameleon.dm index 0fc9b5447a..01bea29b2e 100644 --- a/code/modules/clothing/under/chameleon.dm +++ b/code/modules/clothing/under/chameleon.dm @@ -12,43 +12,43 @@ origin_tech = "syndicate=3" var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/clothing/under/chameleon, /obj/item/clothing/under/cloud, /obj/item/clothing/under/gimmick)//Prevent infinite loops and bad jumpsuits. - for(var/U in typesof(/obj/item/clothing/under)-blocked) - var/obj/item/clothing/under/V = new U - src.clothing_choices[V.name] = U +/obj/item/clothing/under/chameleon/New() + ..() + var/blocked = list(/obj/item/clothing/under/chameleon, /obj/item/clothing/under/cloud, /obj/item/clothing/under/gimmick)//Prevent infinite loops and bad jumpsuits. + for(var/U in typesof(/obj/item/clothing/under)-blocked) + var/obj/item/clothing/under/V = new U + src.clothing_choices[V.name] = U + return + +/obj/item/clothing/under/chameleon/emp_act(severity) + name = "psychedelic" + desc = "Groovy!" + icon_state = "psyche" + item_color = "psyche" + update_icon() + update_clothing_icon() + +/obj/item/clothing/under/chameleon/verb/change() + set name = "Change Jumpsuit Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select jumpsuit to change it to", "Chameleon Jumpsuit")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/clothing/A = new newtype - emp_act(severity) - name = "psychedelic" - desc = "Groovy!" - icon_state = "psyche" - item_color = "psyche" - update_icon() - update_clothing_icon() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Jumpsuit Appearance" - set category = "Object" - set src in usr - - var/picked = input("Select jumpsuit to change it to", "Chameleon Jumpsuit")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/clothing/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - item_color = A.item_color - body_parts_covered = A.body_parts_covered - update_clothing_icon() //so our overlays update. + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + item_color = A.item_color + body_parts_covered = A.body_parts_covered + update_clothing_icon() //so our overlays update. //***************** //**Chameleon Hat** @@ -64,44 +64,44 @@ body_parts_covered = 0 var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/clothing/head/chameleon,/obj/item/clothing/head/justice,)//Prevent infinite loops and bad hats. - for(var/U in typesof(/obj/item/clothing/head)-blocked) - var/obj/item/clothing/head/V = new U - src.clothing_choices[V.name] = U +/obj/item/clothing/head/chameleon/New() + ..() + var/blocked = list(/obj/item/clothing/head/chameleon,/obj/item/clothing/head/justice,)//Prevent infinite loops and bad hats. + for(var/U in typesof(/obj/item/clothing/head)-blocked) + var/obj/item/clothing/head/V = new U + src.clothing_choices[V.name] = U + return + +/obj/item/clothing/head/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. + name = "grey cap" + desc = "It's a baseball hat in a tasteful grey colour." + icon_state = "greysoft" + item_color = "grey" + update_icon() + update_clothing_icon() + +/obj/item/clothing/head/chameleon/verb/change() + set name = "Change Hat/Helmet Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select headwear to change it to", "Chameleon Hat")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/clothing/A = new newtype - emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. - name = "grey cap" - desc = "It's a baseball hat in a tasteful grey colour." - icon_state = "greysoft" - item_color = "grey" - update_icon() - update_clothing_icon() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Hat/Helmet Appearance" - set category = "Object" - set src in usr - - var/picked = input("Select headwear to change it to", "Chameleon Hat")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/clothing/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - item_color = A.item_color - flags_inv = A.flags_inv - body_parts_covered = A.body_parts_covered - update_clothing_icon() //so our overlays update. + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + item_color = A.item_color + flags_inv = A.flags_inv + body_parts_covered = A.body_parts_covered + update_clothing_icon() //so our overlays update. //****************** //**Chameleon Suit** @@ -115,45 +115,45 @@ origin_tech = "syndicate=3" var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/clothing/suit/chameleon, /obj/item/clothing/suit/cyborg_suit, /obj/item/clothing/suit/justice, - /obj/item/clothing/suit/greatcoat)//Prevent infinite loops and bad suits. - for(var/U in typesof(/obj/item/clothing/suit)-blocked) - var/obj/item/clothing/suit/V = new U - src.clothing_choices[V.name] = U +/obj/item/clothing/suit/chameleon/New() + ..() + var/blocked = list(/obj/item/clothing/suit/chameleon, /obj/item/clothing/suit/cyborg_suit, /obj/item/clothing/suit/justice, + /obj/item/clothing/suit/greatcoat)//Prevent infinite loops and bad suits. + for(var/U in typesof(/obj/item/clothing/suit)-blocked) + var/obj/item/clothing/suit/V = new U + src.clothing_choices[V.name] = U + return + +/obj/item/clothing/suit/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. + name = "armor" + desc = "An armored vest that protects against some damage." + icon_state = "armor" + item_color = "armor" + update_icon() + update_clothing_icon() + +/obj/item/clothing/suit/chameleon/verb/change() + set name = "Change Exosuit Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select exosuit to change it to", "Chameleon Exosuit")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/clothing/A = new newtype - emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. - name = "armor" - desc = "An armored vest that protects against some damage." - icon_state = "armor" - item_color = "armor" - update_icon() - update_clothing_icon() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Exosuit Appearance" - set category = "Object" - set src in usr - - var/picked = input("Select exosuit to change it to", "Chameleon Exosuit")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/clothing/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - item_color = A.item_color - flags_inv = A.flags_inv - body_parts_covered = A.body_parts_covered - update_clothing_icon() //so our overlays update. + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + item_color = A.item_color + flags_inv = A.flags_inv + body_parts_covered = A.body_parts_covered + update_clothing_icon() //so our overlays update. //******************* //**Chameleon Shoes** @@ -167,43 +167,43 @@ origin_tech = "syndicate=3" var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/clothing/shoes/chameleon, /obj/item/clothing/shoes/syndigaloshes, /obj/item/clothing/shoes/cyborg)//prevent infinite loops and bad shoes. - for(var/U in typesof(/obj/item/clothing/shoes)-blocked) - var/obj/item/clothing/shoes/V = new U - src.clothing_choices[V.name] = U +/obj/item/clothing/shoes/chameleon/New() + ..() + var/blocked = list(/obj/item/clothing/shoes/chameleon, /obj/item/clothing/shoes/syndigaloshes, /obj/item/clothing/shoes/cyborg)//prevent infinite loops and bad shoes. + for(var/U in typesof(/obj/item/clothing/shoes)-blocked) + var/obj/item/clothing/shoes/V = new U + src.clothing_choices[V.name] = U + return + +/obj/item/clothing/shoes/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. + name = "black shoes" + desc = "A pair of black shoes." + icon_state = "black" + item_state = "black" + item_color = "black" + update_icon() + update_clothing_icon() + +/obj/item/clothing/shoes/chameleon/verb/change() + set name = "Change Footwear Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select shoes to change it to", "Chameleon Shoes")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/clothing/A = new newtype - emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. - name = "black shoes" - desc = "A pair of black shoes." - icon_state = "black" - item_state = "black" - item_color = "black" - update_icon() - update_clothing_icon() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Footwear Appearance" - set category = "Object" - set src in usr - - var/picked = input("Select shoes to change it to", "Chameleon Shoes")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/clothing/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - item_color = A.item_color - update_clothing_icon() //so our overlays update. + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + item_color = A.item_color + update_clothing_icon() //so our overlays update. //********************** //**Chameleon Backpack** @@ -216,48 +216,48 @@ origin_tech = "syndicate=3" var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/weapon/storage/backpack/chameleon, /obj/item/weapon/storage/backpack/satchel/withwallet) - for(var/U in typesof(/obj/item/weapon/storage/backpack)-blocked)//Prevent infinite loops and bad backpacks. - var/obj/item/weapon/storage/backpack/V = new U - src.clothing_choices[V.name] = U +/obj/item/weapon/storage/backpack/chameleon/New() + ..() + var/blocked = list(/obj/item/weapon/storage/backpack/chameleon, /obj/item/weapon/storage/backpack/satchel/withwallet) + for(var/U in typesof(/obj/item/weapon/storage/backpack)-blocked)//Prevent infinite loops and bad backpacks. + var/obj/item/weapon/storage/backpack/V = new U + src.clothing_choices[V.name] = U + return + +/obj/item/weapon/storage/backpack/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. + name = "backpack" + desc = "You wear this on your back and put items into it." + icon_state = "backpack" + item_state = "backpack" + update_icon() + if (ismob(src.loc)) + var/mob/M = src.loc + M.update_inv_back() + +/obj/item/weapon/storage/backpack/chameleon/verb/change() + set name = "Change Backpack Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select backpack to change it to", "Chameleon Backpack")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/weapon/storage/backpack/A = new newtype - emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. - name = "backpack" - desc = "You wear this on your back and put items into it." - icon_state = "backpack" - item_state = "backpack" - update_icon() - if (ismob(src.loc)) - var/mob/M = src.loc - M.update_inv_back() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Backpack Appearance" - set category = "Object" - set src in usr + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + item_color = A.item_color - var/picked = input("Select backpack to change it to", "Chameleon Backpack")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/weapon/storage/backpack/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - item_color = A.item_color - - //so our overlays update. - if (ismob(src.loc)) - var/mob/M = src.loc - M.update_inv_back() + //so our overlays update. + if (ismob(src.loc)) + var/mob/M = src.loc + M.update_inv_back() //******************** //**Chameleon Gloves** @@ -272,43 +272,43 @@ origin_tech = "syndicate=3" var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/clothing/gloves/chameleon)//Prevent infinite loops and bad hats. - for(var/U in typesof(/obj/item/clothing/gloves)-blocked) - var/obj/item/clothing/gloves/V = new U - src.clothing_choices[V.name] = U +/obj/item/clothing/gloves/chameleon/New() + ..() + var/blocked = list(/obj/item/clothing/gloves/chameleon)//Prevent infinite loops and bad hats. + for(var/U in typesof(/obj/item/clothing/gloves)-blocked) + var/obj/item/clothing/gloves/V = new U + src.clothing_choices[V.name] = U + return + +/obj/item/clothing/gloves/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. + name = "black gloves" + desc = "It looks like a pair of gloves, but it seems to have a small dial inside." + icon_state = "black" + item_color = "brown" + update_icon() + update_clothing_icon() + +/obj/item/clothing/gloves/chameleon/verb/change() + set name = "Change Gloves Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select gloves to change it to", "Chameleon Gloves")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/clothing/A = new newtype - emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. - name = "black gloves" - desc = "It looks like a pair of gloves, but it seems to have a small dial inside." - icon_state = "black" - item_color = "brown" - update_icon() - update_clothing_icon() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Gloves Appearance" - set category = "Object" - set src in usr - - var/picked = input("Select gloves to change it to", "Chameleon Gloves")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/clothing/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - item_color = A.item_color - flags_inv = A.flags_inv - update_clothing_icon() //so our overlays update. + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + item_color = A.item_color + flags_inv = A.flags_inv + update_clothing_icon() //so our overlays update. //****************** //**Chameleon Mask** @@ -322,43 +322,43 @@ origin_tech = "syndicate=3" var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/clothing/mask/chameleon)//Prevent infinite loops and bad hats. - for(var/U in typesof(/obj/item/clothing/mask)-blocked) - var/obj/item/clothing/mask/V = new U - if(V) - src.clothing_choices[V.name] = U +/obj/item/clothing/mask/chameleon/New() + ..() + var/blocked = list(/obj/item/clothing/mask/chameleon)//Prevent infinite loops and bad hats. + for(var/U in typesof(/obj/item/clothing/mask)-blocked) + var/obj/item/clothing/mask/V = new U + if(V) + src.clothing_choices[V.name] = U + return + +/obj/item/clothing/mask/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. + name = "gas mask" + desc = "It's a gas mask." + icon_state = "gas_alt" + update_icon() + update_clothing_icon() + +/obj/item/clothing/mask/chameleon/verb/change() + set name = "Change Mask Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select mask to change it to", "Chameleon Mask")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/clothing/A = new newtype - emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. - name = "gas mask" - desc = "It's a gas mask." - icon_state = "gas_alt" - update_icon() - update_clothing_icon() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Mask Appearance" - set category = "Object" - set src in usr - - var/picked = input("Select mask to change it to", "Chameleon Mask")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/clothing/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - flags_inv = A.flags_inv - body_parts_covered = A.body_parts_covered - update_clothing_icon() //so our overlays update. + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + flags_inv = A.flags_inv + body_parts_covered = A.body_parts_covered + update_clothing_icon() //so our overlays update. //********************* //**Chameleon Glasses** @@ -372,41 +372,41 @@ origin_tech = "syndicate=3" var/list/clothing_choices = list() - New() - ..() - var/blocked = list(/obj/item/clothing/glasses/chameleon)//Prevent infinite loops and bad hats. - for(var/U in typesof(/obj/item/clothing/glasses)-blocked) - var/obj/item/clothing/glasses/V = new U - src.clothing_choices[V.name] = U +/obj/item/clothing/glasses/chameleon/New() + ..() + var/blocked = list(/obj/item/clothing/glasses/chameleon)//Prevent infinite loops and bad hats. + for(var/U in typesof(/obj/item/clothing/glasses)-blocked) + var/obj/item/clothing/glasses/V = new U + src.clothing_choices[V.name] = U + return + +/obj/item/clothing/glasses/chameleon/emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. + name = "Optical Meson Scanner" + desc = "It's a set of mesons." + icon_state = "meson" + update_icon() + update_clothing_icon() + +/obj/item/clothing/glasses/chameleon/verb/change() + set name = "Change Glasses Appearance" + set category = "Object" + set src in usr + + var/picked = input("Select glasses to change it to", "Chameleon Glasses")as null|anything in clothing_choices + if(!picked || !clothing_choices[picked]) return + var/newtype = clothing_choices[picked] + var/obj/item/clothing/A = new newtype - emp_act(severity) //Because we don't have psych for all slots right now but still want a downside to EMP. In this case your cover's blown. - name = "Optical Meson Scanner" - desc = "It's a set of mesons." - icon_state = "meson" - update_icon() - update_clothing_icon() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Glasses Appearance" - set category = "Object" - set src in usr - - var/picked = input("Select glasses to change it to", "Chameleon Glasses")as null|anything in clothing_choices - if(!picked || !clothing_choices[picked]) - return - var/newtype = clothing_choices[picked] - var/obj/item/clothing/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - flags_inv = A.flags_inv - update_clothing_icon() //so our overlays update. + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + flags_inv = A.flags_inv + update_clothing_icon() //so our overlays update. //***************** //**Chameleon Gun** @@ -423,46 +423,45 @@ matter = list() var/list/gun_choices = list() - New() - ..() - var/blocked = list(/obj/item/weapon/gun/projectile/chameleon) - for(var/U in typesof(/obj/item/weapon/gun/)-blocked) - var/obj/item/weapon/gun/V = new U - src.gun_choices[V.name] = U +/obj/item/weapon/gun/projectile/chameleon/New() + ..() + var/blocked = list(/obj/item/weapon/gun/projectile/chameleon) + for(var/U in typesof(/obj/item/weapon/gun/)-blocked) + var/obj/item/weapon/gun/V = new U + src.gun_choices[V.name] = U + return + +/obj/item/weapon/gun/projectile/chameleon/emp_act(severity) + name = "desert eagle" + desc = "It's a desert eagle." + icon_state = "deagle" + update_icon() + if (ismob(src.loc)) + var/mob/M = src.loc + M.update_inv_r_hand() + M.update_inv_l_hand() + +/obj/item/weapon/gun/projectile/chameleon/verb/change(picked in gun_choices) + set name = "Change Gun Appearance" + set category = "Object" + set src in usr + + if(!picked || !gun_choices[picked]) return + var/newtype = gun_choices[picked] + var/obj/item/weapon/gun/A = new newtype - emp_act(severity) - name = "desert eagle" - desc = "It's a desert eagle." - icon_state = "deagle" - update_icon() - if (ismob(src.loc)) - var/mob/M = src.loc - M.update_inv_r_hand() - M.update_inv_l_hand() + desc = null + permeability_coefficient = 0.90 - verb/change() - set name = "Change Gun Appearance" - set category = "Object" - set src in usr + desc = A.desc + name = A.name + icon_state = A.icon_state + item_state = A.item_state + flags_inv = A.flags_inv - var/picked = input("Select gun to change it to", "Chameleon Gun")as null|anything in gun_choices - if(!picked || !gun_choices[picked]) - return - var/newtype = gun_choices[picked] - var/obj/item/weapon/gun/A = new newtype - - desc = null - permeability_coefficient = 0.90 - - desc = A.desc - name = A.name - icon_state = A.icon_state - item_state = A.item_state - flags_inv = A.flags_inv - - //so our overlays update. - if (ismob(src.loc)) - var/mob/M = src.loc - M.update_inv_r_hand() - M.update_inv_l_hand() + //so our overlays update. + if (ismob(src.loc)) + var/mob/M = src.loc + M.update_inv_r_hand() + M.update_inv_l_hand() diff --git a/code/modules/examine/descriptions/weapons.dm b/code/modules/examine/descriptions/weapons.dm new file mode 100644 index 0000000000..0ae44c1dcb --- /dev/null +++ b/code/modules/examine/descriptions/weapons.dm @@ -0,0 +1,91 @@ +/* + Note: This file is meant for actual weapons (guns, swords, etc), and not the stupid 'every obj is a weapon, except when it's not' thing. +*/ + +//****** +//*Guns* +//****** + +//This contains a lot of copypasta but I'm told it's better then a lot of New()s appending the var. +/obj/item/weapon/gun + description_info = "This is a gun. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire." + +/obj/item/weapon/gun/energy + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger." + +/obj/item/weapon/gun/energy/crossbow + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire." + description_antag = "This is a stealthy weapon which fires poisoned bolts at your target. When it hits someone, they will suffer a stun effect, in \ + addition to toxins. The energy crossbow recharges itself slowly, and can be concealed in your pocket or bag." + +/obj/item/weapon/gun/energy/gun + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. To switch between stun and lethal, click the weapon \ + in your hand. To recharge this weapon, use a weapon recharger." + +/obj/item/weapon/gun/energy/gun/taser + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger." + +/obj/item/weapon/gun/energy/gun/stunrevolver + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger." + +/obj/item/weapon/gun/energy/gun/nuclear + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. To switch between stun and lethal, click the weapon \ + in your hand. Unlike most weapons, this weapon recharges itself." + +/obj/item/weapon/gun/energy/captain + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. Unlike most weapons, this weapon recharges itself." + +/obj/item/weapon/gun/energy/sniperrifle + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger. \ + To use the scope, use the appropriate verb in the object tab." + +/obj/item/weapon/gun/projectile + description_info = "This is a ballistic weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. To reload, click the weapon in your hand to unload (if needed), then add the appropiate ammo. The description \ + will tell you what caliber you need." + +/obj/item/weapon/gun/projectile/chameleon + description_info = null //The chameleon gun adopts the description_info of the weapon it is impersonating as, to make meta-ing harder. + description_antag = "This gun can alter its appearance to mimick other weapons. To change the appearance, use the appropriate verb in the object tab. \ + The ammo loaded by default makes the gun useless for actual combat." + +/obj/item/weapon/gun/projectile/chameleon/change(picked in gun_choices) //Making the gun change its help text to match the weapon's help text. + ..(picked) + var/obj/O = gun_choices[picked] + description_info = initial(O.description_info) + +/obj/item/weapon/gun/projectile/shotgun/pump + description_info = "This is a ballistic weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. After firing, you will need to pump the gun, by clicking on the gun in your hand. To reload, load more shotgun \ + shells into the gun." + +/obj/item/weapon/gun/projectile/heavysniper + description_info = "This is a ballistic weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. The gun's chamber can be opened or closed by using it in your hand. To reload, open the chamber, add a new bullet \ + then close it. To use the scope, use the appropriate verb in the object tab." + +//******* +//*Melee* +//******* + +/obj/item/weapon/melee/baton + description_info = "The baton needs to be turned on to apply the stunning effect. Use it in your hand to toggle it on or off. If your intent is \ + set to 'harm', you will inflict damage when using it, regardless if it is on or not. Each stun reduces the baton's charge, which can be replenished by \ + putting it inside a weapon recharger." + +/obj/item/weapon/melee/energy/sword + description_antag = "The energy sword is a very strong melee weapon, capable of severing limbs easily, if they are targeted. It can also has a chance \ + to block projectiles and melee attacks while it is on and being held. The sword can be toggled on or off by using it in your hand. While it is off, \ + it can be concealed in your pocket or bag." + +/obj/item/weapon/melee/cultblade + description_antag = "This sword is a powerful weapon, capable of severing limbs easily, if they are targeted. Nonbelivers are unable to use this weapon." From ba6d0e972283e05c4b1125d1c7183936ff210629 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sat, 7 Mar 2015 15:29:49 +0300 Subject: [PATCH 077/168] Restored accidently deleted icon file --- icons/mob/hands.dmi | Bin 0 -> 16519 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 icons/mob/hands.dmi diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi new file mode 100644 index 0000000000000000000000000000000000000000..091ecf1269f97b5a6632d6b69b2ebf308440a437 GIT binary patch literal 16519 zcmc(`cUV(fw=RylMMaUlZHQ9bA|N)TNfV+XB2uMAI!N!mm)KE|AYEDz=`~1)kOWbQ zfPj?HLJ|;Z2_du)NJ#Qq(eK>vd+zU#d!KW@bC1s>nQN}O=2~;k@s2U(81H;#WT4H@ zcZ!dPhlgM1?rmcpo?TPi|ND7?n&@Fv8gP*wVfrBGwsW9kfV*FiyRQ!qPgqWFYOld* z**_okBMcorwwR>^;B}8b3wQ*sk=(Qw@OJ?_O5s*EgwH>FcSm&IZIRiz?n=x8(FMp- zbrII|eW`ll*&ioaJJ?Y9?IXSRF*3|6XP-YH2(;X|DgQS6*kD+D)KDnw9MFb_uWLVC zC-m*dXOXnYJ6*35+EIP8LUH_M-Fs(|+xw29AEi59ZmtTIq}vgj~IOXY78w`+Utk@t(r|htX)lxOlNbpV^q! z-4n$J{#bgSU<+IM!twtqJ3YXsE_F<6%QuR(`{#|<=Rbes+nfE@5e8$pzkw02)g*X9 z`-@2Kl-`mIQ~&Hy^bK9-yjy9L`BMAJRElH>id8SC8qZ&r$bHSQE*g7bksIzaNqH1) z<#YZE>2yGG^pbr=$#_xE^9J)_>$o4Gcl=iE@K?_2>31JrZNRI`V|%vwe!%6A8Jb$_ zE(oC5c`CO;#*Q%K170B&>4q1%ljzI3bhe*G`2GhE&lw(_+c!`8O{mK6m)+-P1{eKBso?3;^!d{s}OQUz4K9_h^GWCm^>-ipu=Wj@Htq0-m4 zVe;}+6<34K8#Xq%JUs0m(jFpq@$hIs_uKRETsre;7f;P29$udI-Mdfn@ErUvRt~;k zI%6L1nF|!OtJKfFR`%h;{qXSc#}AG+HZ^4%oi8jiDIsOL!u%B^Ey$Q5lgLQKYU`X| zpnxq^CJ$meuA&0N#*mBn>fBm37CKk?Vy%KEg!;eaFp;4$vSnpbi#>r&o~-D>LW^L3 zx+5Z{5_Z^&7&E-%i!^m;t5%tul$nJ!-_Ma$+lQ?oqANcG zN+}Fm+D|FasFjI{b4{ARUV!d(a@WFchs6 z?;k+Li9g$Ucplu~`5&q*Y#DDZF7B+fZjtl**d zZ5?(TPjT~+VScay1mwMlxQwS*&kScaj_+t{s&tv{U_o%O>^wU_>$!BwutXVl`t9^w z)|oOTC`0_5w{8vFPrczHgMqTX|63-L98;yJqX?(PfRr?qTPk~7JUra6SxjoY3O%`~ zN8jJwXy4`%*cA-tN+cjPooTt%t}!k5`_-9IQ(uXZHi6A8GA$bq1IOp*NS_#0FgUPo zpc6Eky?zRg-Q9;-h&qJYz#=p`CAVryM@rhQObkauE_4}U9wKd$yC3=l8=Z?nDs(ur z{t_Jp8N(0r+RD9r<_kAmpFj5V!dsiOX{tC>vqG3(q)x6)6(*XMACX*GE32(!W=$ei z+^TO8SO0nJC!^LD$0Sl22kf2@EbQPT>FKvigv>p4<3mP9t;m=VmfPgUPbu_hcF9xM zc6dzp_$EAtG_`5F*A#L1MSL~`2@#qv3DJSP92^RXjqVhmn1pPlay-2$V^zhxt}?~? z{8b*5vFKY^vC4`_YCentV5a%bJOH{&EmTo0?x07{+41 zjE``*%a(i{J$Z^cX}jr&KqYMB*Xr`(oR8m0CYh_D>xKR)nyy`gvv-m!bYHE$))`?8 zOm1NJO3I59o3`y`3wj4YltbY(LI;ZGFOMUZr{#kChN*v%ZT==)~FB|++NZ4%dMPm*0Zo0(lKGisKwKWEQ;4lIrP~l@LVN;O0W+J3&0{}d z8Y3ArpH}bZEp2CXWn7EP(b0L5aBHE!luOQl zlTEJ`Z`XYkHs4koz;YDc`>_}KuAdT*VsFuVd7v3CFFH#H3Y&$JL zauKs4zMt9wVA_UD=`)*_SC9smxIfWI-)APn!UU=tZf+$8`B#W&#pBji)lq)@Kk%^L zlfC+{faqsh0AiQ))1&G)ZlZFa-1W~Cc2;TKIlYQ~E|a~7wDB)i;g=}L>DGzZuoJ@8 z_klC3UmP~P5<5{%H8YG^3q)r7SUJemB^31Z|CR0Op$FDJGdJrh-3NFfJg=s&xc&Rx zlK(XDp43mrv@A9rpIdu!37L~w&fbj9Y71~aGxCi4;g*E+y-R##!AMm_n%c#OP=7~1 zL+0sCF-1->&iv#rcmRdBlY`cFBM5)OdU5U61*F1{y|kspfp22g#{!o#IMZ74wf2QB zw7!8EeGqmMa|Mb3)VCvT*a%H6-B#+0B!qDd0Jo5up0MVO^vv6iQ<;xD61`$vet2UE zo7`WSs6x-OlaW&qUk~oCtZCfwYVtuY<^2O@!Aq=#((O@=_2VCMbwO65hJDi)GmYGf{C~adhCBR@uH!3z|dZVgc}3_1Sb)a+hJ! z3e6L#)a4+;<1_NwfSM_ao$WsnEx{4m$Kvz_rXhgzq z!fB|OTiC?82Er)T2;EOt{h%;RU5`fULl(>(9rFsjPoHKEZ^SMiEss&))?o;VQShU> z+#fq?U#?n%ZyxYLsAy(=;Cvsqky_}osfkGnHTa>shsQlPBmlNn2c@wf9A8SNx3EnN zbj;esu~l_9%r3^D5O6G82np*jrH@NV&?}rfZ94)oStC%q~zvOxE>pWM%LHXj+M%Qc#qP{r9cw3gtvez#?ywe`TjrYhW+nOp!+A* z+N+7|-Y=WU- z6Jq^4A3KFQ$yuLzDf1CZ_{I)v+c!lS@+Md!$}k07{aS@Smvt&7UFjaz6nudh=(GCb z{$W4=sUVaT9bvmhsg#lMnLDJy*N3!^!cvp+*Ee|j=?FgPW!nD&hK)n6 zjlIGJ3GBdTfw6IL$m9Eg;H_t+AZtSlt-UC$--RQnn99&WNBYG-$4dO^Q6}*yNPdAV zXX~r0KtkpQguUKeEoNxQy;g?{$(pKzMw$7G*l*P}amIln-gc>36`3{;(QXmH!DdCO zESXjY;4{Kx4i8e6_M(aqR=!BIOnz~4Rg3~qGOSWN#T9-sl$SWlylDd84kW6OIqaqelcZSXbfDqwqZdn2Q)s8;Lgq)(g-iS?iYz;xEeQ=OZK*6a3<`J~2hSal!<+QU@WX)*S)7`k6^R`lE&6rvrc! z$dCAVv_UDmvcpR|10v3*?X#25^%j9yA8xQAR={?C&PPy@{?$UV9)$%x=)Wp5AYB{F zI zR_B*+0d_DvRDVH*|M@M=xR3q$8Bvr(J=;)>l3oZ!)u6UMLHLzLnAx*-3PSGEr!uqN z*HO2LP>jgpcs5+Y!d;rQB=)_C7&)84-F~7*|7uPKXf0VsC@KF2V?S$$6gaayo7`|(|K6Q+ z-c~i*WL2O@zr5=gdhgc{uI1=$ad5O+=IBPqMMZHdbQ`&|P?epBVBS2syliBD`-Sa; zRWqRfh1Kq-81%);jPjVJu)cnc(5DAp>)p4%9cTNNZ9j>$-Uur?;8ffl^qlr^b_P11 z*|K>dCB(A2gWsl_0ac;mA+8E?T92Rn1?wX}w>Vv`=wb*TmVcK)Wwb~kqY)u5k_utA zi>EJgKCR|}ww4dcKYW%7lkBycin6X}h-=?dS04nKtL2q2Hie2SO+DP>@u7pTU2x8j zHUgwxY?OB@7hb2i4aHpE+Q~6;x$~lL{~XDeZ=J@S0dIEQ4<<^CA!to4+doMWM!)X$6SmA9fdTTcHV&B_}>#-o0`-kh6kc2LUIhoM=^-XbJc9Dz?tO!yrghEyD5Q1=V1(GKu8}u1*{cWUsY{#g3>CVE7o^Ov) zH6g(pT^siVp#kihevhKO^oour$M_ZKr5x6ttcD+a+T<*MVw&WRLy4YABA?z4 z1|4?m#Y6~A^w(PhDQ2BPn>`Bj3sTNET=o0o5wV|~O71Q0nl-p+HX_BRNQwJV5Ye4$ zd4zuYu#^UKl3y~^qssx54WLY(68F$K`n^%h(7mFK_K&tl6)K_%@4P;=@VI1R19O?x zN^^0&8NsX-ase0AvkGF4|14fyGSTidgLJ%Apx~9>*|m*HFHTuhrTAl;`mf^ggEDrD z!(Z!<>4QSI7zgrp&8N?KxPTvsoeFh*^&x08HciC9EX49gv_nD1Uwzd)g(W-vAtKTa zX|pb$&Cm$Q4d2Gl&x(z{?QUT312lCK&LPG7LdCVNkT(yXoIOFf8H_1!3s*!Rr=Df#dnLeo9mV({ywOtyw}N&9&F z@Kb6!({e&WM||c``(u=7a2ryh`U4-`^PP87YZK(m5Ke?Bti46|y~2N9+=@gs*|bXl zPtOjeMlOfPdOI>AOqDC5UJ4xnD_2+-Q&;LfP6qayaPPCgGey8V#F_T+S0krX-f@Co z1d%@fb!vgX=ciiaeStzw|4iVItw)2}7<$xI@>`tE|e!eh}bO6q$UpPv_OjBKd6gc}FFX(}ell8*{PlNVK@ z)FtL;Jtu`0`R4W(qIS98j+4rG7a37lr50goo?Oh1k;Y9s=rMb`*2s`$Q|9BEjyUSM zO1R-flbx!{PqxVfJI37?vC&OMG*mbPE4FWi{el%CzQjsfQbGun`Z>k*UHLkUE!k(2 zz;e3Z7$-kynwnf)6{$K?PMpBQzb!rLe!5KjSX}alf-K~jLC?vuxoT81NkBsCvesVl zpa)Y+& zmgE_~h{n{6Vh$U!icRz|%}PxxSC?L#sMYkCjG9_$6*t*f&Wlu7OpCNzt6sR7V%tJ5 z3gt`|w1531)}N3q;MQ~4-SA#(YFb2%wm=)(JaIE*gJj~G_`N94UupiC|KL{2&;~P9 zwSGHy%T|EMtg)j;eXqJv&RlhOAM7e9>Vw4~nIBhX_5=q9`ztDs0nX?U_OI{5)XJ5O z&PQMMjl`D7A;IRfg40*zxt7YnFgSSKv_8DAuWKYvAgH;V!?jB(#)H^#rFRxYNcVd5 zS)GJjWGwAii!cStZ>0Ikd|q40+U1so_&Mo(R&=56h>wEMOwaJ>B6CkCz(~hZ?5s;tBE2p|`!-iClIR+~>9VN(M? zr1kNBav{9R`t(Y zA@{~o7%_ptN6l#z`Pb*1o$eAJY>VkMG(*ZW9a<3rY($7z0F9T&Hf&qWRv~<`$b;(n z9SB_fB$Fp=wbu1%4O$Z`RCQ>F(huN`S%S9PDH_3j&z{}#170{MVAWXG);4*6>y9ZH zob4<~uh_)&!d|QZPxdB(bc13rN)D`Qv~v4_Xdcky5*xDk`B;nr8X(4RtU=0>9Zy*aU$aYxEe3lZ_C9;|W`4sk!)JE<=> zp!}Q&gY(KS`T*m}dg0)Eg@njmI|%3K`TPI=?T+o;Bk5e{-puXQEdPE^>JMU3zL zStr05?`JzhGa=4UHuIBD8gzNICpgA5q#DQYWuqI)KcG>t#VL9yIB$ULi^?;i80N~~oHtN0!;!OXMv3^r6eCLhFuU2p zxbEB{O^G-vn7G9<6fIY@vo@k^$^O_nw1uN{w9klZp4zXwx23FgD#b!|CUy8z<03hO zZ>{Lyy=t}I#Wn*QqX4}7-tB#!heA4~_eDy7)yLl0nwnkpCHhj2Y`m?N+iR$*qcT1Y z`()jfcDZP8srQm{3)(gY6P;OZXVufv6Ke6@2dL9_6q7)*My~a- zfO=M!*58Uv%eu-@;zE-N7hm~)=22a>PV8HHcH^+$=%j&CnDMH8o$)U-6RX-wWyx8QQ$Jcl** zn#-101%>#?jGOBU4^SEIX)!RBTGN;S5PI~Rs5@m1PGJn3b2OAH&%18wd9JJ185`CK zbpG+Il7r1^%Xrq+Mm;)fW%`+K$B&BhyLkNUS8~7GPCDrS%7PL1^8ZI}Y{e|~(LrwF z5}0=&t&;afDSDT3i1Hp@;kc;9*utZ1!#tj?L>^vi4{!H@$A{Uv3Oq+NdG;Kx0@7LE z$MJwH`VVc(d+@?}d$k273<*p3<493x)IY7CwHwi}kZisw&4FvP$yQyLT_n*tqb? zPL$3dT{P@bU5uC(6ukjTd@KgqewG#;Ls1;f{D`srv4!~J+J5(5l3zcTHHaVhin$_weyPjqRP$Vm-J?Pbq;NQlOO63)x2Mxr+YpU2KDr_}11H zeRdwei=nvYRY$WodGJg@o5DItgAFgFl8m)mTl15oud7WK5aq75lgevjpVW7cKW7QUD}S~I0<87S*}{hmTVPGl$Xkpu?fx1R12-HU@3(z zTdx<9tL1HlA*X5hn(dQ!Utox<%gy_ze6f=x(ypZt<^vxFX?IGJ(!@ZcPpKB!=iIYAakjbTS)SDL?h|Ss;r!lp82oKbW^_~#U^zQfVknLRPz6cL$kcYRe-J6*O)|Yd)$~!XcQsQIr#Ar{P zttV0#z8mnlpi1m6&4#)7gXIE|Pqw3ZqdvK6FJ^-7+F7-XtmY8QTd=QXE)M=u_A*@C z{lAnwddXz)6MABvDO6KcN8FE&Xa%HW2ro9m1p^vx)0=>x4VxH#$)S@f;McVBkIX{5 zO>_fO&ZS9(`9g{fd%Brg*B!n~LHW z=2a~m)LW+iKa+?RbrqunC$nibHcx!ql>LVLtG6b-SerDE2!kl5sMMM%R~!qOU0wpK zhVd?KR)(L4qqk$MX=3a&saXL>HLrrziV~{&$_@LE2}+p+f(CamfipfB$3X4bvZf~L z_v^2QeSzUzJ!$G{m{B*e9S*<}7@vMA+pkY$UN|^3G*aFB7Psgh*hQuM;AvWtElRMo;-@^*!1JZwOg3H+foj)!V}@SUA1Qh=`R~a7(|O<(p0ndfG@S z9qo_VrY0w^>+xeszK*JGZfq=k&~}70%(TfszPuI|VtR_>M?&Sn*BvL{D)|!fd)SHU zn{To6mU6TwNBaT70GFYWJR{^-5!12jk_cPn%=AH?8(zN?*7MCo)}YIB7tu=i4vxK8V0#X-P@EP2)d0A6Px#Uy9fo*RcotpgKQ0}wM+ zF}F26GoI}IqDp>U$GSArZQ+_zWqqo40NmW4zjGrlnyvfrE zH`?~w+n=mrW%}ppd{(gj>@73C1*BsK~m%k6D(IYi{0pMFRzb`feL@S%?>wBcyM%a4t;nw-rAY;Y$mKigl z%vEUowf-40)eLyndNk2BCnX${al+j+LV3C&T)GxbrxkfbYSy_%`|l*eLRVJpOt-_y zt{;<>bYg@#*a|>DHeLff_*NL#gFklSgvWTT^C#$R|C<*d{{Qrn@H6R`Y<%K$pQ_fl zqE!(QA_+j&R0f19QT1@mshL{@0h%oc#M0d8VfPC_N#^jH1Z4o^(pO>%O zW?{zr_wSoYg2#`CqhxsD7cKf?ik>39*fqTws756P@+yt)0jykS*SPJ^+7I9i_xQND zALU{#CgZwEb)>K8g6J#Jy^5pCBze(+IYOg1?tU~rf?Nd~zIf@9>D7~|=P-W@A0Ptu z9)&`^Rs5m4r%(E8+PSm@X?0R4pdrGFgU(G%CW!{{1z^XqBzNT3ai^<@&;F%&f86Nq z(=jWh?vydgR;409TO&zNi2WckbA5%-1Rj8KQ4GIw6{22dT_u80xAQzJGiUq9&8t-x z|D?uuRW%V#y=mhhzB=&{KJF}d-k+UU1SS%&d@344abBU2USmK!^$j()3)2|Ay}e1g zpZ!NcgMIXCn5C|M`N3(D)@G>t)uFlwZ*T7l($YF^QJ1QHJ4htLMIC@GQ^m;T*Jh#0 zKH~m-tr*Jc;{}wDMx_#02Zcn1Gyo!TbaDQ68E9;31_G?G7&fJMMr`|zaQj6qEiHfi z^Chehz~p+Wg>v?2hUIJuCFYa(ZQ&WjXJ!u`EHJm4eLA?P)^oXof@hq@bGat~M~2)3 zF3@_?-)s4cC04MlECPvY(^@_k5@?|a0~k!4yIhNwLbMzK~29gFjZ-;k*ZEU=Ok{g1br`^AOK*Fubfuy~4 zZxH8;u9}#zw42+!1+3E)rHR;xe=(mtEB?|cX8pMT^^N^!RD{7w4ibS|cZ3DhTa)y} zZu;&0qy3fB7*BO|^|cBx{F;y5#t)JCpk=41zcwr2Ve=cc8DSbvRz9uz1y6@9{B5Db7yV0Bc=z|_&P02d>C;Fl>+ zV5otfTpgLLs;UBPI}F}bRn?2l&U;BBc^u_?etj`^Ml8|?4duM3vNHP+Tv42s;hFp? zSU*ca$L_+FkqQu}g#=v(a=~#S*P*mkf#ZKoeg$dFZf3XbM~X(VhgNGbKyi6i2G8Tu+@o9c=-puzV4~`arCq z9AH)T+}+En0XG&C2x4sv73b$qm$Cw{j{qzInM%us3$vRzUw~OQA5;B{Bnl)_+omw9 zi9!H-vpo`n&HEeJ#=if*AP);SlgcX$N;!icMUH3$Co03PW za>};xyN9k4pcHn!9DrH#fvn+pKo0h zFC&XBJ{8a~a&|7dmH+)dI(}0ge#i`7TWg#MVmHszmUHXOz}6_UA&+iF_vE@?Ku9w@ zLB^(m0LRil3XrJmJbd{@bd6aa$}{Vh#20NA8!BipstFFW3oUKY%zrb-3d^!ZFwN9i zaKcD@+rn`{LA4lbLjX|;2??>C8XMm=AI~(zC=|c%Fuj{)ZVOZB=g6dGkg>qNO-kAb zJU<@c8+L*CtXS{czUW=gklbs zc=n3L&)_(Uv-{|f-40Fw20S^Y)eXLP^OJv+s`tXwakwY4a~kyoM0e36Q?*fCR?fPBuhY5*>CihHIf`WJ8=ti=(No{z3 z{WxMq>^GW%$s?JAgT^-DvuRMG&h_5_xfw4gW3Yvf{SWT5XCwz#O>HbOt1vH`jA2st z#0-mg_(0JR8j{pyC=B6{BC$h85C0$2px?Lv?EV{GW@cuRYgGQz*Z%O@3@CJ3zMSa~ z1e`TX0c-R0)0bD}ehUf;Ip8s8 z$`q=NROK>Fn@g1~0wm4^ph^|Uiin5+NJUYN0Z|OTa7iPgv z@LAak^BSx9yC!_yMSEH;OfNbbDdUO;h7m!>htif2)CiR-sk6}%t^MNW#PIl*cWpc0 zIemS7AqqY#A%dwHp0wPi&&NA3ik95`=RMq1i-NP5J_5qip|WaYs|6t!nk(Dth0+^n6BC1=cV4|jr|3+k!+kPv)R zZlO(Pzm4#Ago@MB*aw%7PxeARES4~?}`j4hw1M__!){F*pT zreTpgm$`S`Fa@)&Y%KIzDBwHzl9A+U#O}*-7cN~2I`$-Kh3inqzg})7Uoq^vQCC}Q zjqUI5UIQlhtn0{SInwg-NRCQi@(;NnV6rpiU7_67K08D5xOpi&eEXiR%E|lkCAnhj z$v(Xuv1}8=XH!b8X>j5@M#051?U&_TARijpyoYVD5(tby9>AGJh*e z#b`#*(BNRQ5uj%TutQ@X9QB=@XWw8x$!KCLfVMz|x}9%N|AlWGY(A51rxpZ@J$ZR6WL;mG2_6hm{%dvT0?yb8|UQn4cPz+Wur z>bv^XV+kVici_m)tn}!0gg;W~WI5aDZ|l01h@*zl;9b_1mZxa0fLrhwQ&Q%%eoJZS zOAtmR)D6&%e9v#)_Y}Z7o@w>6&|G(SO8k|?6lhO>Pn9v1`U`5&ymX2dV+{d zPPMz@EZ{6;tv%xo&uwJqL(~||r5{EK2MC{{Z3IQgr9`<4vPp`K4Gk(28nwBj{d=VH z7Vl`tYn%YKN^^_jF4xbx&T{w24F;U{N5CY|=CUEDLJ&&CofO~-7?0oNF#Tu$8(0j( zedzo5cVFTKBiZ&30H0C%@?~rq*mg1O*MSKxFKRUa>|JK}aE`3hW`;?a$k5#t)pA_zWJwP#13K?aES@a22t&H#iNU2ZI96EMKeeej0F8nM?n}B-q&znk z2A~+_fyv2ApgR$BOhwC4#pVp4T-MSuUe^LPlL=%sTPjd5)RjkMN-?F3iHm_;t<~AX z_=H^zj8RH16Kv-P?`m@+m=)L57&&&nzVG0W4}8ZqHp8)siBM>kf@_9Fe5pNv39wec z3%-*#i*w@rAPk*@@3@lrS( z?CM$~=$shfQ)8M*T{4r7Q71IttwrW@?M74XizWU^-VVlrf%h5m1@ekDC3NrYBYPx8W*C%am0k2Cu))TSk)b%R^^3!4c*N_^zm&yDK^(=>IUvM$I z(do$y%l}d;jd!C-;^+p_CR5cLGPX{bM2&ASddnz`!H@HtqQEQn7)nzaeJx*8=0Sd! zln+li6L);x(?vqDmklcx9zZ;vY%Qzdhj z7LL?N=2Xtr-U6y3WR%R{!&QWIHyH~Hi|Q*kU7ejJEZ5G5sx$1TKmrPjw%$W(nRn)` zuc=9E?Bg13plC&PIt4t-=-;E?N*>s!9&SB1JL@@DzupiyZ=ek}KMQ_!7B??(@()0t zo(N}a-%=JLKC)AtKid!Ew11dlNLIGB?P$7Ycliwsy$=VAv??sm9)zAl5+>d;R0PYV zrEH!*e-7;g_Cee-E%3@Pxr+Y){i;L9GtG6?Do|KX21)xQYkNo9BBr7wnTc@x*W=X$e6qIuf@pTLkT>JFa! z82b&-t-{e)C?#KA34m@@10pjtfkUMLM14`)B@RuI>%E{d;0hQTYM5is+;nJS+A~A! zNZL`8FivLXIItrQV4jWY`5_^B^3VnOq3oUwA5CS#chT-oiC+5^t}UBuV`5}VXj;IJ z;_B#Y9+i#U4-jNqJT3&7U{IS#4?NMCCAR^rV5Ys#Tz-Fa z+u^B?u3-ipos`WkTh4=iF#%BIsi>nVDVTH|B?b9ww+Q1T)t!`*DSpL0Go{=N!Y@Ng zaEQY|V)2bKD(=XC{mke;H*f!rbEr=o_H4b_Hk(^cqrVN4MEzc1GyjBy5zOWIjJK!f zz?q)#mcA4fmfx>@AaY`P{`SULrG?}MKw!nR^?Y-zbFm;|5__|pRp)G6ZrLGZr5P#% z(bkC^9Pw*_Lemfh+Qew|+{S87_@Se=lK3AZzy!x-+wjDeiaGMGl9W5QnA6(VltqtL z2*}K>;u7xv=gX~X`RMyi&$Qz79RG8j;6V$UiZ zuwFn+ueF70NAqDm%_^;X2n}yyC91BYPWRFW(eHpjIG6f?@?sQ- Date: Sat, 7 Mar 2015 16:03:43 +0300 Subject: [PATCH 078/168] Fixed monkeys suffocating. Also monkeys with harm in mind are not scoopable now for balance. --- code/modules/mob/holder.dm | 12 ++++++++++++ code/modules/mob/living/carbon/monkey/monkey.dm | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index 79d0eba9f1..4f69bcc961 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -15,6 +15,18 @@ processing_objects.Remove(src) ..() +/obj/item/weapon/holder/return_air() + var/turf/T = get_turf(src) + return T.return_air() + +/obj/item/weapon/holder/handle_internal_lifeform(mob/lifeform_inside_me, breath_request) + var/turf/T = get_turf(src) + return T.remove_air(breath_request) + +/obj/item/weapon/holder/assume_air(var/mixture) + var/turf/T = get_turf(src) + return T.assume_air(mixture) + /obj/item/weapon/holder/process() if(istype(loc,/turf) || !(contents.len)) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 075fe4eb37..481fc486f8 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -137,7 +137,7 @@ /mob/living/carbon/monkey/attack_hand(mob/living/carbon/human/M as mob) - if (M.a_intent == "help") + if (M.a_intent == "help" && a_intent == "help") help_shake_act(M) get_scooped(M) else From f3b6c650383ec25f361d6b2c3778fb31d5b9d05b Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sat, 7 Mar 2015 16:23:31 +0300 Subject: [PATCH 079/168] Added new hallucinations effect - spinning. Changes client dir for 3-5 second for a /real/ mindbreaking. Minor sprite oddities that appear in that mode shouldn't be an issue if you are hallucinating and only last for few seconds anyway. --- code/modules/mob/living/carbon/human/life.dm | 28 +++++++++++--------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 50b6de2988..a411a53e97 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -617,7 +617,7 @@ else apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Heat") fire_alert = max(fire_alert, 2) - + else if(breath.temperature <= species.cold_level_1) if(breath.temperature > species.cold_level_2) apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, "head", used_weapon = "Excessive Cold") @@ -705,7 +705,7 @@ //Body temperature is too hot. fire_alert = max(fire_alert, 1) if(status_flags & GODMODE) return 1 //godmode - + if(bodytemperature < species.heat_level_2) take_overall_damage(burn=HEAT_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature") fire_alert = max(fire_alert, 2) @@ -719,7 +719,7 @@ else if(bodytemperature <= species.cold_level_1) fire_alert = max(fire_alert, 1) if(status_flags & GODMODE) return 1 //godmode - + if(!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) if(bodytemperature > species.cold_level_2) take_overall_damage(burn=COLD_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature") @@ -1029,6 +1029,10 @@ fake_attack(src) if(!handling_hal) spawn handle_hallucinations() //The not boring kind! + if(client && prob(5)) + client.dir = pick(2,4,8) + spawn(rand(20,50)) + client.dir = 1 if(hallucination<=2) hallucination = 0 @@ -1574,14 +1578,14 @@ var/percentage_health = RoundHealth((health-config.health_threshold_crit)/(maxHealth-config.health_threshold_crit)*100) holder.icon_state = "hud[percentage_health]" hud_list[HEALTH_HUD] = holder - + if (BITTEST(hud_updateflag, LIFE_HUD)) var/image/holder = hud_list[STATUS_HUD] if(stat == DEAD) holder.icon_state = "huddead" else holder.icon_state = "hudhealthy" - + if (BITTEST(hud_updateflag, STATUS_HUD)) var/foundVirus = 0 for(var/datum/disease/D in viruses) @@ -1618,7 +1622,7 @@ hud_list[STATUS_HUD] = holder hud_list[STATUS_HUD_OOC] = holder2 - + if (BITTEST(hud_updateflag, ID_HUD)) var/image/holder = hud_list[ID_HUD] if(wear_id) @@ -1632,7 +1636,7 @@ hud_list[ID_HUD] = holder - + if (BITTEST(hud_updateflag, WANTED_HUD)) var/image/holder = hud_list[WANTED_HUD] holder.icon_state = "hudblank" @@ -1658,11 +1662,11 @@ holder.icon_state = "hudreleased" break hud_list[WANTED_HUD] = holder - + if ( BITTEST(hud_updateflag, IMPLOYAL_HUD) \ || BITTEST(hud_updateflag, IMPCHEM_HUD) \ || BITTEST(hud_updateflag, IMPTRACK_HUD)) - + var/image/holder1 = hud_list[IMPTRACK_HUD] var/image/holder2 = hud_list[IMPLOYAL_HUD] var/image/holder3 = hud_list[IMPCHEM_HUD] @@ -1683,7 +1687,7 @@ hud_list[IMPTRACK_HUD] = holder1 hud_list[IMPLOYAL_HUD] = holder2 hud_list[IMPCHEM_HUD] = holder3 - + if (BITTEST(hud_updateflag, SPECIALROLE_HUD)) var/image/holder = hud_list[SPECIALROLE_HUD] holder.icon_state = "hudblank" @@ -1744,10 +1748,10 @@ /mob/living/carbon/human/handle_fire() if(..()) return - + var/burn_temperature = fire_burn_temperature() var/thermal_protection = get_heat_protection(burn_temperature) - + if (thermal_protection < 1 && bodytemperature < burn_temperature) bodytemperature += round(BODYTEMP_HEATING_MAX*(1-thermal_protection), 1) From 2d6b8a9a82aeb84ee9e0ff08a804e693c5a675cf Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sat, 7 Mar 2015 16:25:40 +0300 Subject: [PATCH 080/168] Randomizes roundstart time, one of few times 5 hours apart are picked. --- code/__HELPERS/time.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index ab949df44b..f20830e5cc 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -4,9 +4,11 @@ #define MINUTE *600 #define MINUTES *600 +var/roundstart_hour = 0 //Returns the world time in english proc/worldtime2text(time = world.time) - return "[round(time / 36000)+12]:[(time / 600 % 60) < 10 ? add_zero(time / 600 % 60, 1) : time / 600 % 60]" + if(!roundstart_hour) roundstart_hour = pick(2,7,12,17) + return "[round(time / 36000)+roundstart_hour]:[(time / 600 % 60) < 10 ? add_zero(time / 600 % 60, 1) : time / 600 % 60]" proc/time_stamp() return time2text(world.timeofday, "hh:mm:ss") From 64f42d592ce1f561ad2ec6d8292312d3124f7f7d Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sat, 7 Mar 2015 16:48:21 +0300 Subject: [PATCH 081/168] Gave Runtime spirit-sensing capabilites. Every tick there's a 2% chance she'd stare at a place where ghost is. --- .../mob/living/simple_animal/friendly/cat.dm | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 19acdc0306..a71360d4bf 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -49,13 +49,20 @@ if (turns_since_scan > 5) walk_to(src,0) turns_since_scan = 0 - + if (flee_target) //fleeing takes precendence handle_flee_target() else handle_movement_target() -/mob/living/simple_animal/cat/proc/handle_movement_target() + if(prob(2)) //spooky + var/mob/dead/observer/spook = locate() in range(src,5) + if(spook) + var/turf/T = spook.loc + var/obj/O = pick(T.contents) + visible_emote("suddenly stops and stares at something unseen[istype(O) ? " near [O]":""].") + +/mob/living/simple_animal/cat/proc/handle_movement_target() //if our target is neither inside a turf or inside a human(???), stop if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) )) movement_target = null @@ -68,7 +75,7 @@ if(isturf(snack.loc) && !snack.stat) movement_target = snack break - + if(movement_target) stop_automated_movement = 1 walk_to(src,movement_target,0,3) @@ -106,10 +113,10 @@ /mob/living/simple_animal/cat/bullet_act(var/obj/item/projectile/proj) . = ..() set_flee_target(proj.firer? proj.firer : src.loc) - + /mob/living/simple_animal/cat/hitby(atom/movable/AM) . = ..() - set_flee_target(AM.thrower? AM.thrower : src.loc) + set_flee_target(AM.thrower? AM.thrower : src.loc) /mob/living/simple_animal/cat/MouseDrop(atom/over_object) @@ -193,7 +200,7 @@ set_dir(get_dir(src, friend)) say("Meow!") return - + if (!(ishuman(usr) && befriend_job && usr.job == befriend_job)) usr << "[src] ignores you." return @@ -223,4 +230,4 @@ /mob/living/simple_animal/cat/kitten/New() gender = pick(MALE, FEMALE) - ..() + ..() From cef52c73f8e076d2f7001df0cbecde404ecacd98 Mon Sep 17 00:00:00 2001 From: volas Date: Sat, 7 Mar 2015 18:03:49 +0300 Subject: [PATCH 082/168] Heartbeat --- code/modules/mob/living/carbon/human/life.dm | 43 +++++++++++++------ sound/effects/singlebeat.ogg | Bin 0 -> 15260 bytes 2 files changed, 31 insertions(+), 12 deletions(-) create mode 100644 sound/effects/singlebeat.ogg diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 50b6de2988..5ad254b172 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -31,6 +31,7 @@ var/pressure_alert = 0 var/temperature_alert = 0 var/in_stasis = 0 + var/heartbeat = 0 /mob/living/carbon/human/Life() @@ -102,6 +103,8 @@ handle_medical_side_effects() + handle_heartbeat() + handle_stasis_bag() if(life_tick > 5 && timeofdeath && (timeofdeath < 5 || world.time - timeofdeath > 6000)) //We are long dead, or we're junk mobs spawned like the clowns on the clown shuttle @@ -617,7 +620,7 @@ else apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Heat") fire_alert = max(fire_alert, 2) - + else if(breath.temperature <= species.cold_level_1) if(breath.temperature > species.cold_level_2) apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, "head", used_weapon = "Excessive Cold") @@ -705,7 +708,7 @@ //Body temperature is too hot. fire_alert = max(fire_alert, 1) if(status_flags & GODMODE) return 1 //godmode - + if(bodytemperature < species.heat_level_2) take_overall_damage(burn=HEAT_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature") fire_alert = max(fire_alert, 2) @@ -719,7 +722,7 @@ else if(bodytemperature <= species.cold_level_1) fire_alert = max(fire_alert, 1) if(status_flags & GODMODE) return 1 //godmode - + if(!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) if(bodytemperature > species.cold_level_2) take_overall_damage(burn=COLD_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature") @@ -1558,6 +1561,22 @@ return temp + proc/handle_heartbeat() + if(pulse == PULSE_NONE) + return + + if(pulse >= PULSE_2FAST || shock_stage >= 10 || istype(get_turf(src), /turf/space)) + //PULSE_THREADY - maximum value for pulse, currently it 5. + //High pulse value corresponds to a fast rate of heartbeat. + //Divided by 2, otherwise it is too slow. + var/rate = (PULSE_THREADY - pulse)/2 + + if(heartbeat >= rate) + heartbeat = 0 + src << sound('sound/effects/singlebeat.ogg',0,0,0,60) + else + heartbeat++ + /* Called by life(), instead of having the individual hud items update icons each tick and check for status changes we only set those statuses and icons upon changes. Then those HUD items will simply add those pre-made images. @@ -1574,14 +1593,14 @@ var/percentage_health = RoundHealth((health-config.health_threshold_crit)/(maxHealth-config.health_threshold_crit)*100) holder.icon_state = "hud[percentage_health]" hud_list[HEALTH_HUD] = holder - + if (BITTEST(hud_updateflag, LIFE_HUD)) var/image/holder = hud_list[STATUS_HUD] if(stat == DEAD) holder.icon_state = "huddead" else holder.icon_state = "hudhealthy" - + if (BITTEST(hud_updateflag, STATUS_HUD)) var/foundVirus = 0 for(var/datum/disease/D in viruses) @@ -1618,7 +1637,7 @@ hud_list[STATUS_HUD] = holder hud_list[STATUS_HUD_OOC] = holder2 - + if (BITTEST(hud_updateflag, ID_HUD)) var/image/holder = hud_list[ID_HUD] if(wear_id) @@ -1632,7 +1651,7 @@ hud_list[ID_HUD] = holder - + if (BITTEST(hud_updateflag, WANTED_HUD)) var/image/holder = hud_list[WANTED_HUD] holder.icon_state = "hudblank" @@ -1658,11 +1677,11 @@ holder.icon_state = "hudreleased" break hud_list[WANTED_HUD] = holder - + if ( BITTEST(hud_updateflag, IMPLOYAL_HUD) \ || BITTEST(hud_updateflag, IMPCHEM_HUD) \ || BITTEST(hud_updateflag, IMPTRACK_HUD)) - + var/image/holder1 = hud_list[IMPTRACK_HUD] var/image/holder2 = hud_list[IMPLOYAL_HUD] var/image/holder3 = hud_list[IMPCHEM_HUD] @@ -1683,7 +1702,7 @@ hud_list[IMPTRACK_HUD] = holder1 hud_list[IMPLOYAL_HUD] = holder2 hud_list[IMPCHEM_HUD] = holder3 - + if (BITTEST(hud_updateflag, SPECIALROLE_HUD)) var/image/holder = hud_list[SPECIALROLE_HUD] holder.icon_state = "hudblank" @@ -1744,10 +1763,10 @@ /mob/living/carbon/human/handle_fire() if(..()) return - + var/burn_temperature = fire_burn_temperature() var/thermal_protection = get_heat_protection(burn_temperature) - + if (thermal_protection < 1 && bodytemperature < burn_temperature) bodytemperature += round(BODYTEMP_HEATING_MAX*(1-thermal_protection), 1) diff --git a/sound/effects/singlebeat.ogg b/sound/effects/singlebeat.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8dd550d5d846306b03465cc1779f155bafc01c7e GIT binary patch literal 15260 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 Date: Sat, 7 Mar 2015 17:55:18 +0100 Subject: [PATCH 083/168] Mirror and ERT appearance improvement. NanoUI-based appearance changer, with flags to set exactly which parts of the appearance which can be changed. --- baystation12.dme | 2 + code/game/objects/structures/mirror.dm | 54 +- code/game/response_team.dm | 576 ++++++++---------- .../mob/living/carbon/human/appearance.dm | 194 ++++++ code/modules/nano/modules/human_appearance.dm | 135 ++++ code/modules/nano/nanointeraction.dm | 4 +- code/setup.dm | 17 +- nano/templates/appearance_changer.tmpl | 75 +++ 8 files changed, 676 insertions(+), 381 deletions(-) create mode 100644 code/modules/mob/living/carbon/human/appearance.dm create mode 100644 code/modules/nano/modules/human_appearance.dm create mode 100644 nano/templates/appearance_changer.tmpl diff --git a/baystation12.dme b/baystation12.dme index a8ceac79f0..cfc5d1f08e 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1095,6 +1095,7 @@ #include "code\modules\mob\living\carbon\brain\posibrain.dm" #include "code\modules\mob\living\carbon\brain\robot.dm" #include "code\modules\mob\living\carbon\brain\say.dm" +#include "code\modules\mob\living\carbon\human\appearance.dm" #include "code\modules\mob\living\carbon\human\death.dm" #include "code\modules\mob\living\carbon\human\emote.dm" #include "code\modules\mob\living\carbon\human\examine.dm" @@ -1256,6 +1257,7 @@ #include "code\modules\nano\nanoui.dm" #include "code\modules\nano\modules\alarm_monitor.dm" #include "code\modules\nano\modules\crew_monitor.dm" +#include "code\modules\nano\modules\human_appearance.dm" #include "code\modules\nano\modules\power_monitor.dm" #include "code\modules\nano\modules\rcon.dm" #include "code\modules\organs\blood.dm" diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 93868d720d..0bb32f53ec 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -7,59 +7,19 @@ density = 0 anchored = 1 var/shattered = 0 + var/list/ui_users = list() /obj/structure/mirror/attack_hand(mob/user as mob) if(shattered) return if(ishuman(user)) - var/mob/living/carbon/human/H = user - - if(H.a_intent == "hurt") - if(prob(30) || H.species.can_shred(H)) - attack_generic(user,1) - else - attack_generic(user) - return - - var/userloc = H.loc - - //see code/modules/mob/new_player/preferences.dm at approx line 545 for comments! - //this is largely copypasted from there. - - //handle facial hair (if necessary) - if(H.gender == MALE) - var/list/species_facial_hair = list() - if(H.species) - for(var/i in facial_hair_styles_list) - var/datum/sprite_accessory/facial_hair/tmp_facial = facial_hair_styles_list[i] - if(H.species.name in tmp_facial.species_allowed) - species_facial_hair += i - else - species_facial_hair = facial_hair_styles_list - - var/new_style = input(user, "Select a facial hair style", "Grooming") as null|anything in species_facial_hair - if(userloc != H.loc) return //no tele-grooming - if(new_style) - H.f_style = new_style - - //handle normal hair - var/list/species_hair = list() - if(H.species) - for(var/i in hair_styles_list) - var/datum/sprite_accessory/hair/tmp_hair = hair_styles_list[i] - if(H.species.name in tmp_hair.species_allowed) - species_hair += i - else - species_hair = hair_styles_list - - var/new_style = input(user, "Select a hair style", "Grooming") as null|anything in species_hair - if(userloc != H.loc) return //no tele-grooming - if(new_style) - H.h_style = new_style - - H.update_hair() - + var/obj/nano_module/appearance_changer/AC = ui_users[user] + if(!AC) + AC = new(src, user) + AC.name = "SalonPro Nano-Mirror(TM)" + ui_users[user] = AC + AC.ui_interact(user) /obj/structure/mirror/proc/shatter() if(shattered) return diff --git a/code/game/response_team.dm b/code/game/response_team.dm index dfaec22189..004addb050 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -1,331 +1,245 @@ -//STRIKE TEAMS -//Thanks to Kilakk for the admin-button portion of this code. - -var/list/response_team_members = list() -var/global/send_emergency_team = 0 // Used for automagic response teams - // 'admin_emergency_team' for admin-spawned response teams -var/ert_base_chance = 10 // Default base chance. Will be incremented by increment ERT chance. -var/can_call_ert - -/client/proc/response_team() - set name = "Dispatch Emergency Response Team" - set category = "Special Verbs" - set desc = "Send an emergency response team to the station" - - if(!holder) - usr << "\red Only administrators may use this command." - return - if(!ticker) - usr << "\red The game hasn't started yet!" - return - if(ticker.current_state == 1) - usr << "\red The round hasn't started yet!" - return - if(send_emergency_team) - usr << "\red Central Command has already dispatched an emergency response team!" - return - if(alert("Do you want to dispatch an Emergency Response Team?",,"Yes","No") != "Yes") - return - if(get_security_level() != "red") // Allow admins to reconsider if the alert level isn't Red - switch(alert("The station is not in red alert. Do you still want to dispatch a response team?",,"Yes","No")) - if("No") - return - if(send_emergency_team) - usr << "\red Looks like somebody beat you to it!" - return - - message_admins("[key_name_admin(usr)] is dispatching an Emergency Response Team.", 1) - log_admin("[key_name(usr)] used Dispatch Response Team.") - trigger_armed_response_team(1) - - -client/verb/JoinResponseTeam() - set category = "IC" - - if(istype(usr,/mob/dead/observer) || istype(usr,/mob/new_player)) - if(!send_emergency_team) - usr << "No emergency response team is currently being sent." - return - /* if(admin_emergency_team) - usr << "An emergency response team has already been sent." - return */ - if(jobban_isbanned(usr, "Syndicate") || jobban_isbanned(usr, "Emergency Response Team") || jobban_isbanned(usr, "Security Officer")) - usr << "You are jobbanned from the emergency reponse team!" - return - - if(response_team_members.len > 5) usr << "The emergency response team is already full!" - - - for (var/obj/effect/landmark/L in landmarks_list) if (L.name == "Commando") - L.name = null//Reserving the place. - var/new_name = input(usr, "Pick a name","Name") as null|text - if(!new_name)//Somebody changed his mind, place is available again. - L.name = "Commando" - return - var/leader_selected = isemptylist(response_team_members) - var/mob/living/carbon/human/new_commando = create_response_team(L.loc, leader_selected, new_name) - del(L) - new_commando.mind.key = usr.key - new_commando.key = usr.key - - new_commando << "\blue You are [!leader_selected?"a member":"the LEADER"] of an Emergency Response Team, a type of military division, under CentComm's service. There is a code red alert on [station_name()], you are tasked to go and fix the problem." - new_commando << "You should first gear up and discuss a plan with your team. More members may be joining, don't move out before you're ready." - if(!leader_selected) - new_commando << "As member of the Emergency Response Team, you answer only to your leader and CentComm officials." - else - new_commando << "As leader of the Emergency Response Team, you answer only to CentComm, and have authority to override the Captain where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the captain where possible, however." - return - - else - usr << "You need to be an observer or new player to use this." - -// returns a number of dead players in % -proc/percentage_dead() - var/total = 0 - var/deadcount = 0 - for(var/mob/living/carbon/human/H in mob_list) - if(H.client) // Monkeys and mice don't have a client, amirite? - if(H.stat == 2) deadcount++ - total++ - - if(total == 0) return 0 - else return round(100 * deadcount / total) - -// counts the number of antagonists in % -proc/percentage_antagonists() - var/total = 0 - var/antagonists = 0 - for(var/mob/living/carbon/human/H in mob_list) - if(is_special_character(H) >= 1) - antagonists++ - total++ - - if(total == 0) return 0 - else return round(100 * antagonists / total) - -// Increments the ERT chance automatically, so that the later it is in the round, -// the more likely an ERT is to be able to be called. -proc/increment_ert_chance() - while(send_emergency_team == 0) // There is no ERT at the time. - if(get_security_level() == "green") - ert_base_chance += 1 - if(get_security_level() == "blue") - ert_base_chance += 2 - if(get_security_level() == "red") - ert_base_chance += 3 - if(get_security_level() == "delta") - ert_base_chance += 10 // Need those big guns - sleep(600 * 3) // Minute * Number of Minutes - - -proc/trigger_armed_response_team(var/force = 0) - if(!can_call_ert && !force) - return - if(send_emergency_team) - return - - var/send_team_chance = ert_base_chance // Is incremented by increment_ert_chance. - send_team_chance += 2*percentage_dead() // the more people are dead, the higher the chance - send_team_chance += percentage_antagonists() // the more antagonists, the higher the chance - send_team_chance = min(send_team_chance, 100) - - if(force) send_team_chance = 100 - - // there's only a certain chance a team will be sent - if(!prob(send_team_chance)) - command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. Unfortunately, we were unable to send one at this time.", "Central Command") - can_call_ert = 0 // Only one call per round, ladies. - return - - command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. We will prepare and send one as soon as possible.", "Central Command") - - can_call_ert = 0 // Only one call per round, gentleman. - send_emergency_team = 1 - - sleep(600 * 5) - send_emergency_team = 0 // Can no longer join the ERT. - -/* var/area/security/nuke_storage/nukeloc = locate()//To find the nuke in the vault - var/obj/machinery/nuclearbomb/nuke = locate() in nukeloc - if(!nuke) - nuke = locate() in world - var/obj/item/weapon/paper/P = new - P.info = "Your orders, Commander, are to use all means necessary to return the station to a survivable condition.
To this end, you have been provided with the best tools we can give in the three areas of Medicine, Engineering, and Security. The nuclear authorization code is: [ nuke ? nuke.r_code : "AHH, THE NUKE IS GONE!"]. Be warned, if you detonate this without good reason, we will hold you to account for damages. Memorise this code, and then burn this message." - P.name = "Emergency Nuclear Code, and ERT Orders" - for (var/obj/effect/landmark/A in world) - if (A.name == "nukecode") - P.loc = A.loc - del(A) - continue -*/ - -/client/proc/create_response_team(obj/spawn_location, leader_selected = 0, commando_name) - - //usr << "\red ERT has been temporarily disabled. Talk to a coder." - //return - - var/mob/living/carbon/human/M = new(null) - response_team_members |= M - - //todo: god damn this. - //make it a panel, like in character creation - var/new_facial = input("Please select facial hair color.", "Character Generation") as color - if(new_facial) - M.r_facial = hex2num(copytext(new_facial, 2, 4)) - M.g_facial = hex2num(copytext(new_facial, 4, 6)) - M.b_facial = hex2num(copytext(new_facial, 6, 8)) - - var/new_hair = input("Please select hair color.", "Character Generation") as color - if(new_facial) - M.r_hair = hex2num(copytext(new_hair, 2, 4)) - M.g_hair = hex2num(copytext(new_hair, 4, 6)) - M.b_hair = hex2num(copytext(new_hair, 6, 8)) - - var/new_eyes = input("Please select eye color.", "Character Generation") as color - if(new_eyes) - M.r_eyes = hex2num(copytext(new_eyes, 2, 4)) - M.g_eyes = hex2num(copytext(new_eyes, 4, 6)) - M.b_eyes = hex2num(copytext(new_eyes, 6, 8)) - - var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text - - if (!new_tone) - new_tone = 35 - M.s_tone = max(min(round(text2num(new_tone)), 220), 1) - M.s_tone = -M.s_tone + 35 - - // hair - var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair - var/list/hairs = list() - - // loop through potential hairs - for(var/x in all_hairs) - var/datum/sprite_accessory/hair/H = new x // create new hair datum based on type x - hairs.Add(H.name) // add hair name to hairs - del(H) // delete the hair after it's all done - -// var/new_style = input("Please select hair style", "Character Generation") as null|anything in hairs -//hair - var/new_hstyle = input(usr, "Select a hair style", "Grooming") as null|anything in hair_styles_list - if(new_hstyle) - M.h_style = new_hstyle - - // facial hair - var/new_fstyle = input(usr, "Select a facial hair style", "Grooming") as null|anything in facial_hair_styles_list - if(new_fstyle) - M.f_style = new_fstyle - - // if new style selected (not cancel) -/* if (new_style) - M.h_style = new_style - - for(var/x in all_hairs) // loop through all_hairs again. Might be slightly CPU expensive, but not significantly. - var/datum/sprite_accessory/hair/H = new x // create new hair datum - if(H.name == new_style) - M.h_style = H // assign the hair_style variable a new hair datum - break - else - del(H) // if hair H not used, delete. BYOND can garbage collect, but better safe than sorry - - // facial hair - var/list/all_fhairs = typesof(/datum/sprite_accessory/facial_hair) - /datum/sprite_accessory/facial_hair - var/list/fhairs = list() - - for(var/x in all_fhairs) - var/datum/sprite_accessory/facial_hair/H = new x - fhairs.Add(H.name) - del(H) - - new_style = input("Please select facial style", "Character Generation") as null|anything in fhairs - - if(new_style) - M.f_style = new_style - for(var/x in all_fhairs) - var/datum/sprite_accessory/facial_hair/H = new x - if(H.name == new_style) - M.f_style = H - break - else - del(H) -*/ - var/new_gender = alert(usr, "Please select gender.", "Character Generation", "Male", "Female") - if (new_gender) - if(new_gender == "Male") - M.gender = MALE - else - M.gender = FEMALE - //M.rebuild_appearance() - M.update_hair() - M.update_body() - M.check_dna(M) - - M.real_name = commando_name - M.name = commando_name - M.age = !leader_selected ? rand(23,35) : rand(35,45) - - M.dna.ready_dna(M)//Creates DNA. - - //Creates mind stuff. - M.mind = new - M.mind.current = M - M.mind.original = M - M.mind.assigned_role = "MODE" - M.mind.special_role = "Response Team" - if(!(M.mind in ticker.minds)) - ticker.minds += M.mind//Adds them to regular mind list. - M.loc = spawn_location - M.equip_strike_team(leader_selected) - return M - -/mob/living/carbon/human/proc/equip_strike_team(leader_selected = 0) - - //Special radio setup - equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(src), slot_l_ear) - - //Replaced with new ERT uniform - equip_to_slot_or_del(new /obj/item/clothing/under/ert(src), slot_w_uniform) - equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(src), slot_shoes) - equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(src), slot_gloves) - equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(src), slot_glasses) -/* - - //Old ERT Uniform - //Basic Uniform - equip_to_slot_or_del(new /obj/item/clothing/under/syndicate/tacticool(src), slot_w_uniform) - equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_l_store) - equip_to_slot_or_del(new /obj/item/weapon/clipboard(src), slot_r_store) - equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(src), slot_belt) - equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(src), slot_wear_mask) - - //Glasses - equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(src), slot_glasses) - - //Shoes & gloves - equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(src), slot_shoes) - equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(src), slot_gloves) - - //Removed -// equip_to_slot_or_del(new /obj/item/clothing/suit/armor/swat(src), slot_wear_suit) -// equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad(src), slot_head) - - //Backpack - equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(src), slot_back) - equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(src), slot_in_backpack) - equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(src), slot_in_backpack) -*/ - var/obj/item/weapon/card/id/W = new(src) - W.assignment = "Emergency Response Team[leader_selected ? " Leader" : ""]" - W.registered_name = real_name - W.name = "[real_name]'s ID Card ([W.assignment])" - W.icon_state = "centcom" - W.access = get_all_accesses() - W.access += get_all_centcom_access() - equip_to_slot_or_del(W, slot_wear_id) - - return 1 - -//debug verb (That is horribly coded, LEAVE THIS OFF UNLESS PRIVATELY TESTING. Seriously. -/*client/verb/ResponseTeam() - set category = "Admin" - if(!send_emergency_team) - send_emergency_team = 1*/ +//STRIKE TEAMS +//Thanks to Kilakk for the admin-button portion of this code. + +var/list/response_team_members = list() +var/global/send_emergency_team = 0 // Used for automagic response teams + // 'admin_emergency_team' for admin-spawned response teams +var/ert_base_chance = 10 // Default base chance. Will be incremented by increment ERT chance. +var/can_call_ert + +/client/proc/response_team() + set name = "Dispatch Emergency Response Team" + set category = "Special Verbs" + set desc = "Send an emergency response team to the station" + + if(!holder) + usr << "\red Only administrators may use this command." + return + if(!ticker) + usr << "\red The game hasn't started yet!" + return + if(ticker.current_state == 1) + usr << "\red The round hasn't started yet!" + return + if(send_emergency_team) + usr << "\red Central Command has already dispatched an emergency response team!" + return + if(alert("Do you want to dispatch an Emergency Response Team?",,"Yes","No") != "Yes") + return + if(get_security_level() != "red") // Allow admins to reconsider if the alert level isn't Red + switch(alert("The station is not in red alert. Do you still want to dispatch a response team?",,"Yes","No")) + if("No") + return + if(send_emergency_team) + usr << "\red Looks like somebody beat you to it!" + return + + message_admins("[key_name_admin(usr)] is dispatching an Emergency Response Team.", 1) + log_admin("[key_name(usr)] used Dispatch Response Team.") + trigger_armed_response_team(1) + + +client/verb/JoinResponseTeam() + set category = "IC" + + if(istype(usr,/mob/dead/observer) || istype(usr,/mob/new_player)) + if(!send_emergency_team) + usr << "No emergency response team is currently being sent." + return + /* if(admin_emergency_team) + usr << "An emergency response team has already been sent." + return */ + if(jobban_isbanned(usr, "Syndicate") || jobban_isbanned(usr, "Emergency Response Team") || jobban_isbanned(usr, "Security Officer")) + usr << "You are jobbanned from the emergency reponse team!" + return + + if(response_team_members.len > 5) usr << "The emergency response team is already full!" + + + for (var/obj/effect/landmark/L in landmarks_list) if (L.name == "Commando") + L.name = null//Reserving the place. + var/new_name = input(usr, "Pick a name","Name") as null|text + if(!new_name)//Somebody changed his mind, place is available again. + L.name = "Commando" + return + var/leader_selected = isemptylist(response_team_members) + var/mob/living/carbon/human/new_commando = create_response_team(L.loc, leader_selected, new_name) + del(L) + //Creates mind stuff. + new_commando.mind.key = usr.key + new_commando.key = usr.key + + new_commando << "\blue You are [!leader_selected?"a member":"the LEADER"] of an Emergency Response Team, a type of military division, under CentComm's service. There is a code red alert on [station_name()], you are tasked to go and fix the problem." + new_commando << "You should first gear up and discuss a plan with your team. More members may be joining, don't move out before you're ready." + if(!leader_selected) + new_commando << "As member of the Emergency Response Team, you answer only to your leader and CentComm officials." + else + new_commando << "As leader of the Emergency Response Team, you answer only to CentComm, and have authority to override the Captain where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the captain where possible, however." + + // By setting an explicit location the mob cannot wander off and decide change appearance elsewhere + new_commando.change_appearance(APPEARANCE_ALL, new_commando.loc, new_commando) + + return + + else + usr << "You need to be an observer or new player to use this." + +// returns a number of dead players in % +proc/percentage_dead() + var/total = 0 + var/deadcount = 0 + for(var/mob/living/carbon/human/H in mob_list) + if(H.client) // Monkeys and mice don't have a client, amirite? + if(H.stat == 2) deadcount++ + total++ + + if(total == 0) return 0 + else return round(100 * deadcount / total) + +// counts the number of antagonists in % +proc/percentage_antagonists() + var/total = 0 + var/antagonists = 0 + for(var/mob/living/carbon/human/H in mob_list) + if(is_special_character(H) >= 1) + antagonists++ + total++ + + if(total == 0) return 0 + else return round(100 * antagonists / total) + +// Increments the ERT chance automatically, so that the later it is in the round, +// the more likely an ERT is to be able to be called. +proc/increment_ert_chance() + while(send_emergency_team == 0) // There is no ERT at the time. + if(get_security_level() == "green") + ert_base_chance += 1 + if(get_security_level() == "blue") + ert_base_chance += 2 + if(get_security_level() == "red") + ert_base_chance += 3 + if(get_security_level() == "delta") + ert_base_chance += 10 // Need those big guns + sleep(600 * 3) // Minute * Number of Minutes + + +proc/trigger_armed_response_team(var/force = 0) + if(!can_call_ert && !force) + return + if(send_emergency_team) + return + + var/send_team_chance = ert_base_chance // Is incremented by increment_ert_chance. + send_team_chance += 2*percentage_dead() // the more people are dead, the higher the chance + send_team_chance += percentage_antagonists() // the more antagonists, the higher the chance + send_team_chance = min(send_team_chance, 100) + + if(force) send_team_chance = 100 + + // there's only a certain chance a team will be sent + if(!prob(send_team_chance)) + command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. Unfortunately, we were unable to send one at this time.", "Central Command") + can_call_ert = 0 // Only one call per round, ladies. + return + + command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. We will prepare and send one as soon as possible.", "Central Command") + + can_call_ert = 0 // Only one call per round, gentleman. + send_emergency_team = 1 + + sleep(600 * 5) + send_emergency_team = 0 // Can no longer join the ERT. + +/* var/area/security/nuke_storage/nukeloc = locate()//To find the nuke in the vault + var/obj/machinery/nuclearbomb/nuke = locate() in nukeloc + if(!nuke) + nuke = locate() in world + var/obj/item/weapon/paper/P = new + P.info = "Your orders, Commander, are to use all means necessary to return the station to a survivable condition.
To this end, you have been provided with the best tools we can give in the three areas of Medicine, Engineering, and Security. The nuclear authorization code is: [ nuke ? nuke.r_code : "AHH, THE NUKE IS GONE!"]. Be warned, if you detonate this without good reason, we will hold you to account for damages. Memorise this code, and then burn this message." + P.name = "Emergency Nuclear Code, and ERT Orders" + for (var/obj/effect/landmark/A in world) + if (A.name == "nukecode") + P.loc = A.loc + del(A) + continue +*/ + +/client/proc/create_response_team(obj/spawn_location, leader_selected = 0, commando_name) + + //usr << "\red ERT has been temporarily disabled. Talk to a coder." + //return + + var/mob/living/carbon/human/M = new(null) + response_team_members |= M + + M.real_name = commando_name + M.name = commando_name + M.age = !leader_selected ? rand(23,35) : rand(35,45) + + M.check_dna(M) + M.dna.ready_dna(M)//Creates DNA. + + M.mind = new + M.mind.current = M + M.mind.original = M + M.mind.assigned_role = "MODE" + M.mind.special_role = "Response Team" + if(!(M.mind in ticker.minds)) + ticker.minds += M.mind//Adds them to regular mind list. + M.loc = spawn_location + M.equip_strike_team(leader_selected) + + return M + +/mob/living/carbon/human/proc/equip_strike_team(leader_selected = 0) + + //Special radio setup + equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(src), slot_l_ear) + + //Replaced with new ERT uniform + equip_to_slot_or_del(new /obj/item/clothing/under/ert(src), slot_w_uniform) + equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(src), slot_shoes) + equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(src), slot_gloves) + equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(src), slot_glasses) +/* + + //Old ERT Uniform + //Basic Uniform + equip_to_slot_or_del(new /obj/item/clothing/under/syndicate/tacticool(src), slot_w_uniform) + equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_l_store) + equip_to_slot_or_del(new /obj/item/weapon/clipboard(src), slot_r_store) + equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(src), slot_belt) + equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(src), slot_wear_mask) + + //Glasses + equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(src), slot_glasses) + + //Shoes & gloves + equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(src), slot_shoes) + equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(src), slot_gloves) + + //Removed +// equip_to_slot_or_del(new /obj/item/clothing/suit/armor/swat(src), slot_wear_suit) +// equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad(src), slot_head) + + //Backpack + equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(src), slot_back) + equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(src), slot_in_backpack) + equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(src), slot_in_backpack) +*/ + var/obj/item/weapon/card/id/W = new(src) + W.assignment = "Emergency Response Team[leader_selected ? " Leader" : ""]" + W.registered_name = real_name + W.name = "[real_name]'s ID Card ([W.assignment])" + W.icon_state = "centcom" + W.access = get_all_accesses() + W.access += get_all_centcom_access() + equip_to_slot_or_del(W, slot_wear_id) + + return 1 + +//debug verb (That is horribly coded, LEAVE THIS OFF UNLESS PRIVATELY TESTING. Seriously. +/*client/verb/ResponseTeam() + set category = "Admin" + if(!send_emergency_team) + send_emergency_team = 1*/ diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm new file mode 100644 index 0000000000..2c7e9bc5a1 --- /dev/null +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -0,0 +1,194 @@ +/mob/living/carbon/human + var/list/valid_species = list() + var/list/valid_hairstyles = list() + var/list/valid_facial_hairstyles = list() + +/mob/living/carbon/human/New() + ..() + +/mob/living/carbon/human/proc/change_appearance(var/flags = APPEARANCE_ALL_HAIR, var/location = src, var/mob/user = src) + var/obj/nano_module/appearance_changer/AC = new(location, src) + AC.flags = flags + + generate_valid_species() + generate_valid_hairstyles() + generate_valid_facial_hairstyles() + + AC.ui_interact(user) + +/mob/living/carbon/human/proc/change_species(var/new_species) + if(!new_species) + return + + if(species == new_species) + return + + if(!(new_species in valid_species)) + return + + set_species(new_species) + reset_hair() + return 1 + +/mob/living/carbon/human/proc/change_gender(var/gender) + if(src.gender == gender) + return + + src.gender = gender + reset_hair() + update_body() + update_dna() + return 1 + +/mob/living/carbon/human/proc/change_hair(var/hair_style) + if(!hair_style) + return + + if(h_style == hair_style) + return + + if(!(hair_style in valid_hairstyles)) + return + + h_style = hair_style + + update_hair() + return 1 + +/mob/living/carbon/human/proc/change_facial_hair(var/facial_hair_style) + if(!facial_hair_style) + return + + if(f_style == facial_hair_style) + return + + if(!(facial_hair_style in valid_facial_hairstyles)) + return + + f_style = facial_hair_style + + update_hair() + return 1 + +/mob/living/carbon/human/proc/reset_hair() + generate_valid_hairstyles() + generate_valid_facial_hairstyles() + + if(valid_hairstyles.len) + h_style = pick(valid_hairstyles) + else + //this shouldn't happen + h_style = "Bald" + + if(valid_facial_hairstyles.len) + f_style = pick(valid_facial_hairstyles) + else + //this shouldn't happen + f_style = "Shaved" + + update_hair() + +/mob/living/carbon/human/proc/change_eye_color(var/red, var/green, var/blue) + if(red == r_eyes && green == g_eyes && blue == b_eyes) + return + + r_eyes = red + g_eyes = green + b_eyes = blue + + update_body() + return 1 + +/mob/living/carbon/human/proc/change_hair_color(var/red, var/green, var/blue) + if(red == r_eyes && green == g_eyes && blue == b_eyes) + return + + r_hair = red + g_hair = green + b_hair = blue + + update_hair() + return 1 + +/mob/living/carbon/human/proc/change_facial_hair_color(var/red, var/green, var/blue) + if(red == r_facial && green == g_facial && blue == b_facial) + return + + r_facial = red + g_facial = green + b_facial = blue + + update_hair() + return 1 + +/mob/living/carbon/human/proc/change_skin_color(var/red, var/green, var/blue) + if(red == r_skin && green == g_skin && blue == b_skin || !(species.flags & HAS_SKIN_COLOR)) + return + + r_skin = red + g_skin = green + b_skin = blue + + update_body() + return 1 + +/mob/living/carbon/human/proc/change_skin_tone(var/tone) + if(s_tone == tone || !(species.flags & HAS_SKIN_TONE)) + return + + s_tone = tone + + update_body() + return 1 + +/mob/living/carbon/human/proc/update_dna() + check_dna() + dna.ready_dna(src) + +/mob/living/carbon/human/proc/generate_valid_species() + valid_species.Cut() + for(var/current_species_name in all_species) + var/datum/species/current_species = all_species[current_species_name] + + if(config.usealienwhitelist && !check_rights(R_ADMIN, 0)) //If we're using the whitelist, make sure to check it! + if(!(current_species.flags & CAN_JOIN)) + continue + else if((current_species.flags & IS_WHITELISTED) && !is_alien_whitelisted(src, current_species_name)) + continue + + valid_species += current_species_name + +/mob/living/carbon/human/proc/generate_valid_hairstyles() + valid_hairstyles.Cut() + for(var/hairstyle in hair_styles_list) + var/datum/sprite_accessory/S = hair_styles_list[hairstyle] + + if(gender == MALE && S.gender == FEMALE) + continue + if(gender == FEMALE && S.gender == MALE) + continue + if(!(species.name in S.species_allowed)) + continue + valid_hairstyles += hairstyle + + return valid_hairstyles + +/mob/living/carbon/human/proc/generate_valid_facial_hairstyles() + valid_facial_hairstyles.Cut() + for(var/facialhairstyle in facial_hair_styles_list) + var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle] + + if(gender == MALE && S.gender == FEMALE) + continue + if(gender == FEMALE && S.gender == MALE) + continue + if(!(species.name in S.species_allowed)) + continue + + valid_facial_hairstyles += facialhairstyle + + return valid_facial_hairstyles + +/proc/q() + var/mob/living/carbon/human/H = usr + H.change_appearance(APPEARANCE_ALL) diff --git a/code/modules/nano/modules/human_appearance.dm b/code/modules/nano/modules/human_appearance.dm new file mode 100644 index 0000000000..77757d256c --- /dev/null +++ b/code/modules/nano/modules/human_appearance.dm @@ -0,0 +1,135 @@ +/obj/nano_module/appearance_changer + name = "Appearance Editor" + flags = APPEARANCE_ALL_HAIR + var/mob/living/carbon/human/owner + +/obj/nano_module/appearance_changer/New(var/location, var/mob/living/carbon/human/H) + ..() + loc = location + owner = H + +/obj/nano_module/appearance_changer/Topic(ref, href_list) + if(..()) + return 1 + + if(href_list["race"]) + if(can_change(APPEARANCE_RACE)) + return owner.change_species(href_list["race"]) + if(href_list["gender"]) + if(can_change(APPEARANCE_GENDER)) + return owner.change_gender(href_list["gender"]) + if(href_list["skin_tone"]) + if(can_change_skin_tone()) + var/new_s_tone = input(usr, "Choose your character's skin-tone:\n(Light 1 - 220 Dark)", "Skin Tone", owner.s_tone) as num|null + if(isnum(new_s_tone) && CanUseTopic(usr) == STATUS_INTERACTIVE) + new_s_tone = 35 - max(min( round(new_s_tone), 220),1) + return owner.change_skin_tone(new_s_tone) + if(href_list["skin_color"]) + if(can_change_skin_color()) + var/new_skin = input(usr, "Choose your character's skin colour: ", "Skin Color", rgb(owner.r_skin, owner.g_skin, owner.b_skin)) as color|null + if(new_skin && can_still_topic()) + var/r_skin = hex2num(copytext(new_skin, 2, 4)) + var/g_skin = hex2num(copytext(new_skin, 4, 6)) + var/b_skin = hex2num(copytext(new_skin, 6, 8)) + if(owner.change_skin_color(r_skin, g_skin, b_skin)) + update_dna() + return 1 + if(href_list["hair"]) + if(can_change(APPEARANCE_HAIR)) + if(owner.change_hair(href_list["hair"])) + update_dna() + return 1 + if(href_list["hair_color"]) + if(can_change(APPEARANCE_HAIR_COLOR)) + var/new_hair = input("Please select hair color.", "Hair Color", rgb(owner.r_hair, owner.g_hair, owner.b_hair)) as color|null + if(new_hair && can_still_topic()) + var/r_hair = hex2num(copytext(new_hair, 2, 4)) + var/g_hair = hex2num(copytext(new_hair, 4, 6)) + var/b_hair = hex2num(copytext(new_hair, 6, 8)) + if(owner.change_hair_color(r_hair, g_hair, b_hair)) + update_dna() + return 1 + if(href_list["facial_hair"]) + if(can_change(APPEARANCE_FACIAL_HAIR)) + if(owner.change_facial_hair(href_list["facial_hair"])) + update_dna() + return 1 + if(href_list["facial_hair_color"]) + if(can_change(APPEARANCE_FACIAL_HAIR_COLOR)) + var/new_facial = input("Please select facial hair color.", "Facial Hair Color", rgb(owner.r_facial, owner.g_facial, owner.b_facial)) as color|null + if(new_facial && can_still_topic()) + var/r_facial = hex2num(copytext(new_facial, 2, 4)) + var/g_facial = hex2num(copytext(new_facial, 4, 6)) + var/b_facial = hex2num(copytext(new_facial, 6, 8)) + if(owner.change_facial_hair_color(r_facial, g_facial, b_facial)) + update_dna() + return 1 + if(href_list["eye_color"]) + if(can_change(APPEARANCE_EYE_COLOR)) + var/new_eyes = input("Please select eye color.", "Eye Color", rgb(owner.r_eyes, owner.g_eyes, owner.b_eyes)) as color|null + if(new_eyes && can_still_topic()) + var/r_eyes = hex2num(copytext(new_eyes, 2, 4)) + var/g_eyes = hex2num(copytext(new_eyes, 4, 6)) + var/b_eyes = hex2num(copytext(new_eyes, 6, 8)) + if(owner.change_eye_color(r_eyes, g_eyes, b_eyes)) + update_dna() + return 1 + + return 0 + +/obj/nano_module/appearance_changer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/data[0] + + data["specimen"] = owner.species.name + data["gender"] = owner.gender + data["change_race"] = can_change(APPEARANCE_RACE) + if(data["change_race"]) + var/species[0] + for(var/specimen in owner.valid_species) + species[++species.len] = list("specimen" = specimen) + data["species"] = species + + data["change_gender"] = can_change(APPEARANCE_GENDER) + data["change_skin_tone"] = can_change_skin_tone() + data["change_skin_color"] = can_change_skin_color() + data["change_eye_color"] = can_change(APPEARANCE_EYE_COLOR) + data["change_hair"] = can_change(APPEARANCE_HAIR) + if(data["change_hair"]) + var/hair_styles[0] + for(var/hair_style in owner.valid_hairstyles) + hair_styles[++hair_styles.len] = list("hairstyle" = hair_style) + data["hair_styles"] = hair_styles + data["hair_style"] = owner.h_style + + data["change_facial_hair"] = can_change(APPEARANCE_FACIAL_HAIR) + if(data["change_facial_hair"]) + var/facial_hair_styles[0] + for(var/facial_hair_style in owner.valid_facial_hairstyles) + facial_hair_styles[++facial_hair_styles.len] = list("facialhairstyle" = facial_hair_style) + data["facial_hair_styles"] = facial_hair_styles + data["facial_hair_style"] = owner.f_style + + data["change_hair_color"] = can_change(APPEARANCE_HAIR_COLOR) + data["change_facial_hair_color"] = can_change(APPEARANCE_FACIAL_HAIR_COLOR) + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "appearance_changer.tmpl", "[src.name]", 800, 450) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/obj/nano_module/appearance_changer/proc/update_dna() + if(owner && (flags & APPEARANCE_UPDATE_DNA)) + owner.update_dna() + +/obj/nano_module/appearance_changer/proc/can_change(var/flag) + return owner && (flags & flag) + +/obj/nano_module/appearance_changer/proc/can_change_skin_tone() + return owner && (flags & APPEARANCE_SKIN) && owner.species.flags & HAS_SKIN_TONE + +/obj/nano_module/appearance_changer/proc/can_change_skin_color() + return owner && (flags & APPEARANCE_SKIN) && owner.species.flags & HAS_SKIN_COLOR + +/obj/nano_module/appearance_changer/proc/can_still_topic() + return CanUseTopic(usr, list(), default_state) == STATUS_INTERACTIVE diff --git a/code/modules/nano/nanointeraction.dm b/code/modules/nano/nanointeraction.dm index 645b5261bf..d929cfe2b5 100644 --- a/code/modules/nano/nanointeraction.dm +++ b/code/modules/nano/nanointeraction.dm @@ -1,11 +1,11 @@ -/atom/movable/proc/nano_host() +/atom/proc/nano_host() return src /obj/nano_module/nano_host() return loc -/atom/movable/proc/CanUseTopic(var/mob/user, href_list, var/datum/topic_state/custom_state) +/atom/proc/CanUseTopic(var/mob/user, href_list, var/datum/topic_state/custom_state) return user.can_use_topic(nano_host(), custom_state) diff --git a/code/setup.dm b/code/setup.dm index e500df4453..e7bd5849d0 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -767,8 +767,23 @@ var/list/be_special_flags = list( #define STATUS_UPDATE 1 // ORANGE Visability #define STATUS_DISABLED 0 // RED Visability #define STATUS_CLOSE -1 // Close the interface + //General-purpose life speed define for plants. #define HYDRO_SPEED_MULTIPLIER 1 + #define NANO_IGNORE_DISTANCE 1 -#define DEFAULT_JOB_TYPE /datum/job/assistant \ No newline at end of file +#define DEFAULT_JOB_TYPE /datum/job/assistant + +// Appearance change flags +#define APPEARANCE_UPDATE_DNA 1 +#define APPEARANCE_RACE 2|APPEARANCE_UPDATE_DNA +#define APPEARANCE_GENDER 4|APPEARANCE_UPDATE_DNA +#define APPEARANCE_SKIN 8 +#define APPEARANCE_HAIR 16 +#define APPEARANCE_HAIR_COLOR 32 +#define APPEARANCE_FACIAL_HAIR 64 +#define APPEARANCE_FACIAL_HAIR_COLOR 128 +#define APPEARANCE_EYE_COLOR 256 +#define APPEARANCE_ALL_HAIR APPEARANCE_HAIR|APPEARANCE_HAIR_COLOR|APPEARANCE_FACIAL_HAIR|APPEARANCE_FACIAL_HAIR_COLOR +#define APPEARANCE_ALL 511 diff --git a/nano/templates/appearance_changer.tmpl b/nano/templates/appearance_changer.tmpl new file mode 100644 index 0000000000..bb283f245b --- /dev/null +++ b/nano/templates/appearance_changer.tmpl @@ -0,0 +1,75 @@ +{{if data.change_race}} +

+
+ Species: +
+
+ {{for data.species}} + {{:helper.link(value.specimen, null, { 'race' : value.specimen}, null, data.specimen == value.specimen ? 'selected' : null)}} + {{/for}} +
+
+{{/if}} + +{{if data.change_gender}} +
+
+ Gender: +
+
+ {{:helper.link('Male', null, { 'gender' : 'male'}, null, data.gender == 'male' ? 'selected' : null)}} + {{:helper.link('Female', null, { 'gender' : 'female'}, null, data.gender == 'female' ? 'selected' : null)}} +
+
+{{/if}} + +{{if data.change_eye_color || data.change_skin_tone || data.change_skin_color || data.change_hair_color || data.change_facial_hair_color}} +
+
+ Colors: +
+
+ {{if data.change_eye_color}} + {{:helper.link('Change eye color', null, { 'eye_color' : 1})}} + {{/if}} + {{if data.change_skin_tone}} + {{:helper.link('Change skin tone', null, { 'skin_tone' : 1})}} + {{/if}} + {{if data.change_skin_color}} + {{:helper.link('Change skin color', null, { 'skin_color' : 1})}} + {{/if}} + {{if data.change_hair_color}} + {{:helper.link('Change hair color', null, { 'hair_color' : 1})}} + {{/if}} + {{if data.change_facial_hair_color}} + {{:helper.link('Change facial hair color', null, { 'facial_hair_color' : 1})}} + {{/if}} +
+
+{{/if}} + +{{if data.change_hair}} +
+
+ Hair styles: +
+
+ {{for data.hair_styles}} + {{:helper.link(value.hairstyle, null, { 'hair' : value.hairstyle}, null, data.hair_style == value.hairstyle ? 'selected' : null)}} + {{/for}} +
+
+{{/if}} + +{{if data.change_facial_hair}} +
+
+ Facial hair styles: +
+
+ {{for data.facial_hair_styles}} + {{:helper.link(value.facialhairstyle, null, { 'facial_hair' : value.facialhairstyle}, null, data.facial_hair_style == value.facialhairstyle ? 'selected' : null)}} + {{/for}} +
+
+{{/if}} From 9888120b054072a86f7d8cd21d9c526a7d534e34 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Sun, 8 Mar 2015 11:21:38 +0000 Subject: [PATCH 084/168] Fix simple-animal grabbing --- code/modules/mob/living/simple_animal/simple_animal.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 74f6c85eb9..26a9d062ff 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -239,7 +239,7 @@ if (!(status_flags & CANPUSH)) return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M, M, src ) + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src) M.put_in_active_hand(G) @@ -375,4 +375,4 @@ /mob/living/simple_animal/put_in_hands(var/obj/item/W) // No hands. W.loc = get_turf(src) - return 1 \ No newline at end of file + return 1 From 44c7b2367ab00fe6feb7e653d365fff1289050b7 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 8 Mar 2015 12:25:34 +0100 Subject: [PATCH 085/168] Admin verbs and white/blacklisting or races. Makes it possible for admins to bring out the appearance changer at will, controlled either by themselves or the mob in question. Makes it possible to define custom race white/blacklisting in the appearance changer. However, this does not override the player's own racial restrictions. --- code/game/response_team.dm | 2 +- code/modules/admin/admin_verbs.dm | 42 +++++++++++++++- .../mob/living/carbon/human/appearance.dm | 45 ++++++++--------- code/modules/nano/modules/human_appearance.dm | 48 +++++++++++++++---- 4 files changed, 99 insertions(+), 38 deletions(-) diff --git a/code/game/response_team.dm b/code/game/response_team.dm index 004addb050..aca036c94a 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -77,7 +77,7 @@ client/verb/JoinResponseTeam() new_commando << "As leader of the Emergency Response Team, you answer only to CentComm, and have authority to override the Captain where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the captain where possible, however." // By setting an explicit location the mob cannot wander off and decide change appearance elsewhere - new_commando.change_appearance(APPEARANCE_ALL, new_commando.loc, new_commando) + new_commando.change_appearance(APPEARANCE_ALL, new_commando.loc, new_commando, species_whitelist = list("Human", "Unathi", "Tajara")) return diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 14c70df792..9ee6b25e7b 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -79,7 +79,9 @@ var/list/admin_verbs_admin = list( /client/proc/toggle_antagHUD_restrictions, /client/proc/allow_character_respawn, /* Allows a ghost to respawn */ /client/proc/event_manager_panel, - /client/proc/empty_ai_core_toggle_latejoin + /client/proc/empty_ai_core_toggle_latejoin, + /client/proc/change_human_appearance_admin, /* Allows an admin to change the basic appearance of human-based mobs */ + /client/proc/change_human_appearance_self /* Allows the human-based mob itself change its basic appearance */ ) var/list/admin_verbs_ban = list( /client/proc/unban_panel, @@ -703,6 +705,9 @@ var/list/admin_verbs_mentor = list( set name = "Rename Silicon" set category = "Admin" + if(!istype(S)) + return + if(holder) var/new_name = trim_strip_input(src, "Enter new name. Leave blank or as is to cancel.", "Enter new silicon name", S.real_name) if(new_name && new_name != S.real_name) @@ -710,6 +715,41 @@ var/list/admin_verbs_mentor = list( S.SetName(new_name) feedback_add_details("admin_verb","RAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/proc/change_human_appearance_admin(mob/living/carbon/human/H in world) + set name = "Change Mob Appearance - Admin" + set desc = "Allows you to change the mob appearance" + set category = "Admin" + + if(!istype(H)) + return + + if(holder) + admin_log_and_message_admins("is altering the appearance of [H].") + H.change_appearance(APPEARANCE_ALL, usr, usr, check_species_whitelist = 0) + feedback_add_details("admin_verb","CHAA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/proc/change_human_appearance_self(mob/living/carbon/human/H in world) + set name = "Change Mob Appearance - Self" + set desc = "Allows the mob to change its appearance" + set category = "Admin" + + if(!istype(H)) + return + + if(!H.client) + usr << "Only mobs with clients can alter their own appearance." + return + + if(holder) + switch(alert("Do you wish for [H] to be allowed to select non-whitelisted races?","Alter Mob Appearance","Yes","No","Cancel")) + if("Yes") + admin_log_and_message_admins("has allowed [H] to change \his appearance, without whitelisting of races.") + H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 0) + if("No") + admin_log_and_message_admins("has allowed [H] to change \his appearance, with whitelisting of races.") + H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 1) + feedback_add_details("admin_verb","CMAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + //---- bs12 verbs ---- diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index 2c7e9bc5a1..4976cba4fb 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -1,19 +1,6 @@ -/mob/living/carbon/human - var/list/valid_species = list() - var/list/valid_hairstyles = list() - var/list/valid_facial_hairstyles = list() - -/mob/living/carbon/human/New() - ..() - -/mob/living/carbon/human/proc/change_appearance(var/flags = APPEARANCE_ALL_HAIR, var/location = src, var/mob/user = src) - var/obj/nano_module/appearance_changer/AC = new(location, src) +/mob/living/carbon/human/proc/change_appearance(var/flags = APPEARANCE_ALL_HAIR, var/location = src, var/mob/user = src, var/check_species_whitelist = 1, var/list/species_whitelist = list(), var/list/species_blacklist = list()) + var/obj/nano_module/appearance_changer/AC = new(location, src, check_species_whitelist, species_whitelist, species_blacklist) AC.flags = flags - - generate_valid_species() - generate_valid_hairstyles() - generate_valid_facial_hairstyles() - AC.ui_interact(user) /mob/living/carbon/human/proc/change_species(var/new_species) @@ -23,7 +10,7 @@ if(species == new_species) return - if(!(new_species in valid_species)) + if(!(new_species in all_species)) return set_species(new_species) @@ -47,7 +34,7 @@ if(h_style == hair_style) return - if(!(hair_style in valid_hairstyles)) + if(!(hair_style in hair_styles_list)) return h_style = hair_style @@ -62,7 +49,7 @@ if(f_style == facial_hair_style) return - if(!(facial_hair_style in valid_facial_hairstyles)) + if(!(facial_hair_style in facial_hair_styles_list)) return f_style = facial_hair_style @@ -71,8 +58,8 @@ return 1 /mob/living/carbon/human/proc/reset_hair() - generate_valid_hairstyles() - generate_valid_facial_hairstyles() + var/list/valid_hairstyles = generate_valid_hairstyles() + var/list/valid_facial_hairstyles = generate_valid_facial_hairstyles() if(valid_hairstyles.len) h_style = pick(valid_hairstyles) @@ -145,21 +132,27 @@ check_dna() dna.ready_dna(src) -/mob/living/carbon/human/proc/generate_valid_species() - valid_species.Cut() +/mob/living/carbon/human/proc/generate_valid_species(var/check_whitelist = 1, var/list/whitelist = list(), var/list/blacklist = list()) + var/list/valid_species = new() for(var/current_species_name in all_species) var/datum/species/current_species = all_species[current_species_name] - if(config.usealienwhitelist && !check_rights(R_ADMIN, 0)) //If we're using the whitelist, make sure to check it! + if(check_whitelist && config.usealienwhitelist && !check_rights(R_ADMIN, 0, src)) //If we're using the whitelist, make sure to check it! if(!(current_species.flags & CAN_JOIN)) continue - else if((current_species.flags & IS_WHITELISTED) && !is_alien_whitelisted(src, current_species_name)) + if(whitelist.len && !(current_species_name in whitelist)) + continue + if(blacklist.len && (current_species_name in blacklist)) + continue + if((current_species.flags & IS_WHITELISTED) && !is_alien_whitelisted(src, current_species_name)) continue valid_species += current_species_name + return valid_species + /mob/living/carbon/human/proc/generate_valid_hairstyles() - valid_hairstyles.Cut() + var/list/valid_hairstyles = new() for(var/hairstyle in hair_styles_list) var/datum/sprite_accessory/S = hair_styles_list[hairstyle] @@ -174,7 +167,7 @@ return valid_hairstyles /mob/living/carbon/human/proc/generate_valid_facial_hairstyles() - valid_facial_hairstyles.Cut() + var/list/valid_facial_hairstyles = new() for(var/facialhairstyle in facial_hair_styles_list) var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle] diff --git a/code/modules/nano/modules/human_appearance.dm b/code/modules/nano/modules/human_appearance.dm index 77757d256c..a8327066e6 100644 --- a/code/modules/nano/modules/human_appearance.dm +++ b/code/modules/nano/modules/human_appearance.dm @@ -1,23 +1,37 @@ /obj/nano_module/appearance_changer name = "Appearance Editor" flags = APPEARANCE_ALL_HAIR - var/mob/living/carbon/human/owner + var/mob/living/carbon/human/owner = null + var/list/valid_species = list() + var/list/valid_hairstyles = list() + var/list/valid_facial_hairstyles = list() -/obj/nano_module/appearance_changer/New(var/location, var/mob/living/carbon/human/H) + var/check_whitelist + var/list/whitelist + var/list/blacklist + +/obj/nano_module/appearance_changer/New(var/location, var/mob/living/carbon/human/H, var/check_species_whitelist = 1, var/list/species_whitelist = list(), var/list/species_blacklist = list()) ..() loc = location owner = H + src.check_whitelist = check_species_whitelist + src.whitelist = species_whitelist + src.blacklist = species_blacklist /obj/nano_module/appearance_changer/Topic(ref, href_list) if(..()) return 1 if(href_list["race"]) - if(can_change(APPEARANCE_RACE)) - return owner.change_species(href_list["race"]) + if(can_change(APPEARANCE_RACE) && (href_list["race"] in valid_species)) + if(owner.change_species(href_list["race"])) + cut_and_generate_data() + return 1 if(href_list["gender"]) if(can_change(APPEARANCE_GENDER)) - return owner.change_gender(href_list["gender"]) + if(owner.change_gender(href_list["gender"])) + cut_and_generate_data() + return 1 if(href_list["skin_tone"]) if(can_change_skin_tone()) var/new_s_tone = input(usr, "Choose your character's skin-tone:\n(Light 1 - 220 Dark)", "Skin Tone", owner.s_tone) as num|null @@ -35,7 +49,7 @@ update_dna() return 1 if(href_list["hair"]) - if(can_change(APPEARANCE_HAIR)) + if(can_change(APPEARANCE_HAIR) && (href_list["hair"] in valid_hairstyles)) if(owner.change_hair(href_list["hair"])) update_dna() return 1 @@ -50,7 +64,7 @@ update_dna() return 1 if(href_list["facial_hair"]) - if(can_change(APPEARANCE_FACIAL_HAIR)) + if(can_change(APPEARANCE_FACIAL_HAIR) && (href_list["facial_hair"] in valid_facial_hairstyles)) if(owner.change_facial_hair(href_list["facial_hair"])) update_dna() return 1 @@ -78,6 +92,7 @@ return 0 /obj/nano_module/appearance_changer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + generate_data(check_whitelist, whitelist, blacklist) var/data[0] data["specimen"] = owner.species.name @@ -85,7 +100,7 @@ data["change_race"] = can_change(APPEARANCE_RACE) if(data["change_race"]) var/species[0] - for(var/specimen in owner.valid_species) + for(var/specimen in valid_species) species[++species.len] = list("specimen" = specimen) data["species"] = species @@ -96,7 +111,7 @@ data["change_hair"] = can_change(APPEARANCE_HAIR) if(data["change_hair"]) var/hair_styles[0] - for(var/hair_style in owner.valid_hairstyles) + for(var/hair_style in valid_hairstyles) hair_styles[++hair_styles.len] = list("hairstyle" = hair_style) data["hair_styles"] = hair_styles data["hair_style"] = owner.h_style @@ -104,7 +119,7 @@ data["change_facial_hair"] = can_change(APPEARANCE_FACIAL_HAIR) if(data["change_facial_hair"]) var/facial_hair_styles[0] - for(var/facial_hair_style in owner.valid_facial_hairstyles) + for(var/facial_hair_style in valid_facial_hairstyles) facial_hair_styles[++facial_hair_styles.len] = list("facialhairstyle" = facial_hair_style) data["facial_hair_styles"] = facial_hair_styles data["facial_hair_style"] = owner.f_style @@ -133,3 +148,16 @@ /obj/nano_module/appearance_changer/proc/can_still_topic() return CanUseTopic(usr, list(), default_state) == STATUS_INTERACTIVE + +/obj/nano_module/appearance_changer/proc/cut_and_generate_data() + // Making the assumption that the available species remain constant + valid_facial_hairstyles.Cut() + valid_facial_hairstyles.Cut() + generate_data() + +/obj/nano_module/appearance_changer/proc/generate_data() + if(!valid_species.len) + valid_species = owner.generate_valid_species(check_whitelist, whitelist, blacklist) + if(!valid_hairstyles.len || !valid_facial_hairstyles.len) + valid_hairstyles = owner.generate_valid_hairstyles() + valid_facial_hairstyles = owner.generate_valid_facial_hairstyles() \ No newline at end of file From d290ee4c6892a2d008bc6f2b74df9639d34d094e Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 8 Mar 2015 13:22:45 +0100 Subject: [PATCH 086/168] Fixes #8398. Cryopods/cells that contains mobs will now drop them to the ground on deletion. --- code/game/machinery/cryo.dm | 5 +++++ code/game/machinery/cryopod.dm | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 32543822b9..ecf868f260 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -24,6 +24,11 @@ ..() initialize_directions = dir +/obj/machinery/atmospherics/unary/cryo_cell/Del() + if(occupant) + occupant.loc = loc + ..() + /obj/machinery/atmospherics/unary/cryo_cell/initialize() if(node) return var/node_connect = dir diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 381a9790fb..5915aef5ac 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -234,6 +234,12 @@ ..() +/obj/machinery/cryopod/Del() + if(occupant) + occupant.loc = loc + occupant.resting = 1 + ..() + /obj/machinery/cryopod/initialize() ..() From 6749e09ead63796ccadd8de0f5868bedada1e0ef Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 8 Mar 2015 15:41:54 +0100 Subject: [PATCH 087/168] Makes available ERT species a config option. --- code/controllers/configuration.dm | 6 ++++++ code/game/response_team.dm | 2 +- config/example/config.txt | 6 +++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 7f12e097d8..a8f766a82d 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -184,6 +184,8 @@ var/starlight = 0 // Whether space turfs have ambient light or not + var/list/ert_species = list("Human") + /datum/configuration/New() var/list/L = typesof(/datum/game_mode) - /datum/game_mode for (var/T in L) @@ -609,6 +611,10 @@ value = text2num(value) config.starlight = value >= 0 ? value : 0 + if("ert_species") + config.ert_species = text2list(value, ";") + if(!config.ert_species.len) + config.ert_species += "Human" else log_misc("Unknown setting in configuration: '[name]'") diff --git a/code/game/response_team.dm b/code/game/response_team.dm index aca036c94a..a9dd598374 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -77,7 +77,7 @@ client/verb/JoinResponseTeam() new_commando << "As leader of the Emergency Response Team, you answer only to CentComm, and have authority to override the Captain where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the captain where possible, however." // By setting an explicit location the mob cannot wander off and decide change appearance elsewhere - new_commando.change_appearance(APPEARANCE_ALL, new_commando.loc, new_commando, species_whitelist = list("Human", "Unathi", "Tajara")) + new_commando.change_appearance(APPEARANCE_ALL, new_commando.loc, new_commando, species_whitelist = config.ert_species) return diff --git a/config/example/config.txt b/config/example/config.txt index e0a240cf79..c708ae4a49 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -322,5 +322,9 @@ EVENT_CUSTOM_START_MAJOR 80;100 ## Uncomment to disable respawning by default. #DISABLE_RESPAWN -## Strength of ambient star light. Set to 0 or less to turn off. +## Strength of ambient star light. Set to 0 or less to turn off. A value of 1 is unlikely to have a noticeable effect in most lightning systems. STARLIGHT 0 + +## Defines which races are allowed to join as ERT, in singular form. If unset, defaults to only human. Casing matters, separate using ; +## Example races include: Human, Tajara, Skrell, Unathi +# ERT_SPECIES Human;Skrell;Unathi From 3d55fc58b91ccd0d3e150c4d812b07a67b6b618c Mon Sep 17 00:00:00 2001 From: volas Date: Sun, 8 Mar 2015 19:27:31 +0300 Subject: [PATCH 088/168] Additional checks for heartbeat, reduced volume --- code/modules/mob/living/carbon/human/life.dm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 5ad254b172..60d3bd90af 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1562,7 +1562,12 @@ return temp proc/handle_heartbeat() - if(pulse == PULSE_NONE) + if(pulse == PULSE_NONE || !species.has_organ["heart"]) + return + + var/datum/organ/internal/heart/H = internal_organs_by_name["heart"] + + if(!H || H.robotic >=2 ) return if(pulse >= PULSE_2FAST || shock_stage >= 10 || istype(get_turf(src), /turf/space)) @@ -1573,7 +1578,7 @@ if(heartbeat >= rate) heartbeat = 0 - src << sound('sound/effects/singlebeat.ogg',0,0,0,60) + src << sound('sound/effects/singlebeat.ogg',0,0,0,50) else heartbeat++ From cfbba5c153fd975e3d24afdfc4a084ade05fa7d4 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 8 Mar 2015 17:58:48 +0100 Subject: [PATCH 089/168] Station alert monitor should now only react to major alarms. --- code/game/machinery/computer/station_alert.dm | 2 +- code/modules/nano/modules/alarm_monitor.dm | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index 84ce5cc0d1..197d65065a 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -38,7 +38,7 @@ if(stat & (BROKEN|NOPOWER)) return - var/list/alarms = alarm_monitor.active_alarms() + var/list/alarms = alarm_monitor.major_alarms() if(alarms.len) icon_state = "alert:2" else diff --git a/code/modules/nano/modules/alarm_monitor.dm b/code/modules/nano/modules/alarm_monitor.dm index e4de543498..9047023bf1 100644 --- a/code/modules/nano/modules/alarm_monitor.dm +++ b/code/modules/nano/modules/alarm_monitor.dm @@ -30,11 +30,24 @@ for(var/datum/alarm_handler/AH in alarm_handlers) AH.unregister(object) -/obj/nano_module/alarm_monitor/proc/active_alarms() +/obj/nano_module/alarm_monitor/proc/all_alarms() var/list/all_alarms = new() for(var/datum/alarm_handler/AH in alarm_handlers) - var/list/alarms = AH.alarms - all_alarms += alarms + all_alarms += AH.alarms + + return all_alarms + +/obj/nano_module/alarm_monitor/proc/major_alarms() + var/list/all_alarms = new() + for(var/datum/alarm_handler/AH in alarm_handlers) + all_alarms += AH.major_alarms() + + return all_alarms + +/obj/nano_module/alarm_monitor/proc/minor_alarms() + var/list/all_alarms = new() + for(var/datum/alarm_handler/AH in alarm_handlers) + all_alarms += AH.minor_alarms() return all_alarms From a1dbd153bd9317d2e669e5b3947920349b96ba84 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 8 Mar 2015 18:00:18 +0100 Subject: [PATCH 090/168] Fixes minor alerts not listing properly in the atmos alert console. --- nano/templates/atmos_alert.tmpl | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/nano/templates/atmos_alert.tmpl b/nano/templates/atmos_alert.tmpl index dc6f3b9da8..92946e8d31 100644 --- a/nano/templates/atmos_alert.tmpl +++ b/nano/templates/atmos_alert.tmpl @@ -1,17 +1,18 @@

Priority Alerts

{{for data.priority_alarms}}
- {{:value.name}} {{:helper.link('Reset', null, {'clear_alarm' : value.ref})}} + {{:value.name}} {{:helper.link('Reset', null, {'clear_alarm' : value.ref})}}
{{empty}} No priority alerts detected. {{/for}}

Minor Alerts

-
- {{for data.minor_alarms}} - {{:value.name}} {{:helper.link('Reset', null, {'clear_alarm' : value.ref})}} - {{empty}} - No minor alerts detected. - {{/for}} -
+{{for data.minor_alarms}} +
+ {{:value.name}} {{:helper.link('Reset', null, {'clear_alarm' : value.ref})}} +
+{{empty}} + No minor alerts detected. +{{/for}} + From e05e024cc5ce9c8f3d09cd07a12bf5bbb9023aae Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 8 Mar 2015 18:31:59 +0100 Subject: [PATCH 091/168] Fixes issues with remote air alarm access. --- code/game/machinery/computer/atmos_control.dm | 2 +- nano/templates/air_alarm.tmpl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index a6eb8765f1..d63259bc4c 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -93,6 +93,6 @@ /datum/topic_state/air_alarm/href_list(var/mob/user) var/list/extra_href = list() extra_href["remote_connection"] = 1 - extra_href["remote_access"] = user && (atmos_control.allowed(user) || atmos_control.emagged || air_alarm.rcon_setting == RCON_YES || (air_alarm.alarm_area.atmosalm && air_alarm.rcon_setting == RCON_AUTO)) + extra_href["remote_access"] = user && (user.isAI() || atmos_control.allowed(user) || atmos_control.emagged || air_alarm.rcon_setting == RCON_YES || (air_alarm.alarm_area.atmosalm && air_alarm.rcon_setting == RCON_AUTO)) return extra_href diff --git a/nano/templates/air_alarm.tmpl b/nano/templates/air_alarm.tmpl index 6ba6b14057..edfe41cda7 100644 --- a/nano/templates/air_alarm.tmpl +++ b/nano/templates/air_alarm.tmpl @@ -74,7 +74,7 @@ Used In File(s): \code\game\machinery\alarm.dm
-{{if data.locked || (data.remote_connection && ! data.remote_access)}} +{{if (data.locked && !data.remote_connection) || (data.remote_connection && ! data.remote_access)}} {{if data.remote_connection}} (Current remote control settings and alarm status restricts access.) {{else}} From 27d5b0d3dfd2414f395a4903c9519dbdaa0f16c1 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 8 Mar 2015 21:50:55 +0100 Subject: [PATCH 092/168] Xenoflora piping issues. Fixes an issue where the yellow siphon line was merging with the hydrophonic tray piping/connectors, unintentionally. Also makes sure that the related space vent is actually powered. --- maps/exodus-1.dmm | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index e19eaf628a..e458bd56cd 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -5675,7 +5675,7 @@ "cfg" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = 32},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cfh" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/hydroponics{closed_system = 1; name = "isolation tray"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora) "cfi" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"cfj" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/light_switch{pixel_x = -6; pixel_y = 26},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/hydroponics{closed_system = 1; name = "isolation tray"},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) +"cfj" = (/obj/machinery/seed_storage/xenobotany,/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cfk" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cfl" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/table,/obj/item/weapon/storage/box/botanydisk,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cfm" = (/obj/machinery/botany/editor,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora) @@ -5686,14 +5686,14 @@ "cfr" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/research_starboard) "cfs" = (/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Aft Starboard Solar Access"; dir = 1},/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/research_starboard) "cft" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/rnd/test_area) -"cfu" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/hydroponics{closed_system = 1; name = "isolation tray"},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora) +"cfu" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/hydroponics{closed_system = 1; name = "isolation tray"},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora) "cfv" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless,/area/rnd/test_area) "cfw" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/construction) "cfx" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plating,/area/construction) "cfy" = (/obj/structure/table,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/random/tech_supply,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/construction) "cfz" = (/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/construction) "cfA" = (/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/construction) -"cfB" = (/obj/machinery/seed_storage/xenobotany,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) +"cfB" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/light_switch{pixel_x = -6; pixel_y = 26},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/hydroponics{closed_system = 1; name = "isolation tray"},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cfC" = (/obj/item/clothing/mask/smokable/cigarette,/turf/simulated/floor/plating/airless,/area/rnd/test_area) "cfD" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/atmos_control) "cfE" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) @@ -5746,7 +5746,7 @@ "cgz" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) "cgA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/rnd/xenobiology) "cgB" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) -"cgC" = (/obj/machinery/atmospherics/pipe/manifold/visible,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) +"cgC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (WEST)"; icon_state = "intact"; dir = 8},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cgD" = (/obj/item/weapon/stool,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cgE" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cgF" = (/obj/structure/grille,/turf/simulated/wall/r_wall,/area/engineering/atmos) @@ -5790,12 +5790,12 @@ "chr" = (/obj/structure/table,/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/item/weapon/storage/box/masks,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/surgeryprep) "chs" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/medical/surgeryprep) "cht" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 4; icon_state = "blue"},/area/medical/surgeryprep) -"chu" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) +"chu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "chv" = (/obj/structure/table,/obj/item/weapon/tape_roll,/obj/item/device/analyzer/plant_analyzer,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "chw" = (/obj/structure/sign/biohazard,/turf/simulated/wall,/area/medical/virologyaccess) "chx" = (/obj/structure/disposaloutlet,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area/medical/virology) "chy" = (/obj/structure/bedsheetbin,/obj/structure/table,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) -"chz" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) +"chz" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "chA" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/research_port) "chB" = (/turf/simulated/floor/plating,/area/maintenance/research_port) "chC" = (/obj/machinery/door/airlock/medical{autoclose = 0; icon_state = "door_open"; id_tag = "cubicle1"; name = "Cubicle 1"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) @@ -5846,7 +5846,7 @@ "civ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "ciw" = (/obj/machinery/atmospherics/pipe/manifold/hidden/purple{dir = 1},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cix" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 10},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) -"ciy" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) +"ciy" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "ciz" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/maintenance/engineering) "ciA" = (/turf/simulated/wall,/area/maintenance/substation/engineering) "ciB" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/extinguisher,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/medbay) @@ -6150,7 +6150,7 @@ "con" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = 8; pixel_y = -28; req_access_txt = "55"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"},/area/rnd/xenobiology) "coo" = (/obj/structure/closet/l3closet/scientist,/turf/simulated/floor{dir = 6; icon_state = "warnwhite"},/area/rnd/xenobiology) "cop" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"coq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/plating/airless,/area/space) +"coq" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cor" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio2"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/engine,/area/rnd/xenobiology) "cos" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cot" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_xeno_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) @@ -7280,6 +7280,7 @@ "cJZ" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/space,/area/space) "cKa" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/obj/structure/lattice,/turf/space,/area/space) "cKb" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/turf/space,/area/space) +"cKc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/plating/airless,/area/rnd/xenobiology/xenoflora) "cKf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) "cKg" = (/turf/simulated/wall,/area/maintenance/engi_engine) "cKh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engi_engine) @@ -7453,14 +7454,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaambZSaamaamaamaamaamaaaaaaaaaaaaaaaaaaaafaafaaabZfbZgbZgbZgbZHbZgbZgbZUbZTbYIbZYbZZbYIbZVcabbZWcadbZXcafcaccaacagcaecaicahcajbWRbYQcakcalbYRcambSZcaqcaqcaqcaqcaqcarbNSbDtcascatcaocancawcaxcaycazbTJcapcaBcaCcaDcaEcaFcaGcaHcaIbZxbWQcaubZycaKcaLbZAcaMcaNcaObZAbXXbYfbPObIwbXYbYabXZbXYbXYbIwbIwbIwcaRcaScaTcaUcaVbwwbwwcaWbwwbwwcaXcaYcavcaJcaAcbbcaZcbacbccbdcbecbfcbgcbhbUnbUnbUnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKsbKtbUubUsbUsbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcbicbkcbjcbmcblcbocbncbqcbpbYIcbrcbsbYIbYIcbtcbucbvcbwcbxcbzcbybXAbXzbYjcbAcbBbWRbWRcbCcbDbWRcbEbSZcbFcbGcaqcbHcaqbTFcbIcbIcbIcbIcbIcbIcbIbTJcbJcbKbTJcbLcbMcbNcbOcaEcbPcbQcbRcaIbZxbWQcbUbZycbScbTbZAcbWcbVccqbZAccsbYfbYbbYdbYcbYiccAccBbYcchBbYkbYlcktbZDbZwbZFcktccrbZGccDccCccFccEccQccPccRcctccucctcctcctcctcctccvccwccxccycczbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaaaaaabOPbKtbNdbKtbKtbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafccSccScbjccUccTcboccVccXccWbYIccGccHccIccJccKccLccMccNccOccZccYcdbcdacdycdecdFcdBceecdQcelcekcencemcdccddaJEcdfcaqbTFcbIcdgcdhcdicdjcdkcdlcdmcdncdocdpcdqcdrcdscdtcaEcducdvcdwcaIbZxbWQceobZycdxcepbZAcdzcdAceqbZAcaPbYfbYfcaQbYccbYcbXcbZbYcchBccacjfcdLcdLbyFbBucdLcdOcdPcercdRcdOcdSbBpbyecescdScdScdScdSbAebyebydcdScdSbXjcdXcdYcdZceacebcecbxTbycbycbycbycbycbycbycbycbycbycbycbycbycbycbycbyccefcegcegcehbKtbKtbLTbLTceibLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacejcejcejcejcejcejcejceucetbYIbYIbYIbYIbYIbYJcewcevcevcevceycexbXAbXzbYjceEbYxceSceUceTceXceWceYbSZcezaJFcfaaJFcaqbTFcbIceDcfccfccfcceFceGbTJceHceIbTJcbLcbNceJcbOcaEceKceLceMcaIbZxbWQceNbZyceOcePbZAbZAbZAbZAbZAccbceRbYfcaQbYcccdcccbYcbYcchBccecjfcdLceZcfbcfbcfecdOcfdcficffcdOcfgcfhcfhcfucfjcfBcfkcflcfmcfncfocfpcdScfqcfrcfsbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaafaafcftcfCcfvbNebKsbKtbKtbLTbLUbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcejcfwcfxcfycfzcfAcejcfEcfDcfGcfFcfIcfHcfJcfJcfLcfKcfKcfMcfNcbybXAbXzbYjcfOcajcfPcfRcfQcggcfUcgibSZaJFaJFcaqceBcaqbTFcbIcfVcfWcfWcfWcfXcbIcfYcfZcgacfYcgbcgccgdcgecaEcgfceLcgocaIcghccfcgjbZycgkcglbZycgmbLvbVicgnccgcchbYfccjcciccicckcclcclcclcclccmcdLcgpcgycgycgzcgActscgtcgrcgxcgucgGcgGcgCcgBcgIcgIcgJcgDcgLcgEcgMcdScgNcgOcgPcgNaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcgQbKqbKqbKrbKsbKsbKtbKtbKtbKtbKuaafaafaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFaaaaaacgScgTcgTcgTcgUcgVcejcgKcgHcgWcgRcgYcgXchacgZchcchbchechdchgchfchichhchkchjbSZbSZbSZbSZbSZbSZbSZbSZbEZbGDcaqbDfcaqbTFcbIcbIctpctqctrcbIcbIchrchschtcfYcaEcaEcaEcaEcaEcaIchlchmcaIchwccnchwbZychychnbZychAchBbVichCbVichDbYfccobYfbYfccpcdCcdCcdCcdDbYfcdLchIchJchJchKchochMchpchOchqchQckLckLchuckLchzchvckLckLckLchEchFcdSchZciachGcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgFchHchLchHcgFchNchPchNcgFchRchSchRcgFaaaaaaciicgTcgTcgUcgUcijcejchUchTchWchVchYchXcidciccifcieciecigciecbybXAcihbYjcikcimcilciocinciocipcirciqciqciAciAciAciAbTFciGciHciIciIciJciKciLciMciXciOciPciQciRciSciSciTciUcaIcaIcaIciVcdEckqbZybZybZybZychBchBbViciYbViciZbYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcjgcisciucitcjjcjkcivcjmcjncjociwcjociycixcjrcjscgIcjtcgIciWcjucdScjacjwcjxcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacejcejcejcejcejcejcejceucetbYIbYIbYIbYIbYIbYJcewcevcevcevceycexbXAbXzbYjceEbYxceSceUceTceXceWceYbSZcezaJFcfaaJFcaqbTFcbIceDcfccfccfcceFceGbTJceHceIbTJcbLcbNceJcbOcaEceKceLceMcaIbZxbWQceNbZyceOcePbZAbZAbZAbZAbZAccbceRbYfcaQbYcccdcccbYcbYcchBccecjfcdLceZcfbcfbcfecdOcfdcficffcdOcfgcfhcfhcfucfBcfjcfkcflcfmcfncfocfpcdScfqcfrcfsbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaafaafcftcfCcfvbNebKsbKtbKtbLTbLUbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcejcfwcfxcfycfzcfAcejcfEcfDcfGcfFcfIcfHcfJcfJcfLcfKcfKcfMcfNcbybXAbXzbYjcfOcajcfPcfRcfQcggcfUcgibSZaJFaJFcaqceBcaqbTFcbIcfVcfWcfWcfWcfXcbIcfYcfZcgacfYcgbcgccgdcgecaEcgfceLcgocaIcghccfcgjbZycgkcglbZycgmbLvbVicgnccgcchbYfccjcciccicckcclcclcclcclccmcdLcgpcgycgycgzcgActscgtcgrcgxcgucgGcgGcgGcgBciycgIcgJcgDcgLcgEcgMcdScgNcgOcgPcgNaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcgQbKqbKqbKrbKsbKsbKtbKtbKtbKtbKuaafaafaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFaaaaaacgScgTcgTcgTcgUcgVcejcgKcgHcgWcgRcgYcgXchacgZchcchbchechdchgchfchichhchkchjbSZbSZbSZbSZbSZbSZbSZbSZbEZbGDcaqbDfcaqbTFcbIcbIctpctqctrcbIcbIchrchschtcfYcaEcaEcaEcaEcaEcaIchlchmcaIchwccnchwbZychychnbZychAchBbVichCbVichDbYfccobYfbYfccpcdCcdCcdCcdDbYfcdLchIchJchJchKchochMchpchOchqchQckLckLchucgCchzchvckLckLckLchEchFcdSchZciachGcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgFchHchLchHcgFchNchPchNcgFchRchSchRcgFaaaaaaciicgTcgTcgUcgUcijcejchUchTchWchVchYchXcidciccifcieciecigciecbybXAcihbYjcikcimcilciocinciocipcirciqciqciAciAciAciAbTFciGciHciIciIciJciKciLciMciXciOciPciQciRciSciSciTciUcaIcaIcaIciVcdEckqbZybZybZybZychBchBbViciYbViciZbYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcjgcisciucitcjjcjkcivcjmcjncjociwcjocoqcixcjrcjscgIcjtcgIciWcjucdScjacjwcjxcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgFchHcjbchHcgFchNcjcchNcgFchRcjdchRcgFaaaaaaciicgTcgUcgUcgUcjBcjCcjhcjechWcjicjpcjlcjvcjqcjzcjycjDcjAcjEcbybXAcjFchkcjGcjIcjHcjJcjJcjJcjKcjMcjLcjNceCcjOceAciAbTFciGckaciIckbckcckdcubckfckgckhctQckjckkcklciSckmciUcknckockpcjQcjPcdHcdGcdIcdIcdJcdIcdKbVibVibVibVibYfccobYfaaaaaaaaaaaaaaaaaaaaacdLckCcjRcjTcjSckEcdOckFcdOckGckHcjXcjUcjZcjYcgIcgIckecjUcjUckickOcdSckPckQckRcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgFckrckuckscgFckzckBckAcgFckDckJckIcgFaaaaafciiclbcgTcgUcgUcgUcejckMckKchWchWckNchWchWchWchWckTcieckWckYcbyclackZcldclcclgcleclhclhclhclicljcljclkciAcllcgqclwclxciGclyciIclzclAclBclCclDclEclFclGclHclIclJciSclKciUclLclMclNclnclmclQclNclRclSclTbYfceQcdIcdIcdIcdIcdIcltbYfaaaaaaaaaaaaaaaaaaaaacdLcmacmbcmccmdcdOcmecmfcmgcdScmhcmicmiclOclvcmkcmlclPcmicmicmicmncdScmocmpcmqcmraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafcgFclXcmmcmjcgFcmscmmcmtcgFcmscmmcmtcgFaaaaafcmzcgTcgTcgUcgUcmAcejcmvcmucmxcmwcmBcmycmCcmCcmEcmDcmCcmFcmGcbycmIcmHcmKcmJcimcmLcmLcmMcljcmNcmPcmOcmOciAcibceVcmQcqgciGcnbciIcnccndcmRciGcmSciNcmWcfYcmXcnicnjciScnkciUclLclMclNcnlcnecnlclNaaaaaaaaabYfbYfbYfcnnclSclSclTbYfbYfaaaaaaaaaaaacdOcdOcdOcdOcdOcdOcdOcdOcdOcnocnpcnqcdScdScnrcnscnfcdScdScdScdScnucnscntcdScdScnvcnwcnvaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaafaafaafaaaaafcnxaafcnxaafcKBaafcKAaafcKBaafcKAaafaafaaacejcnAcnBcgUcgUcnCcnDcnhcngcnycnmcnEcnzcnzcnFcnzcnGcnIcnHcnGcnJcnLcnKcnNcnMcnOcnOcnOcnOcnQcnPcnRcnRcnRcgscgscgscgscnSciGcnTcnUcnccnVcnWciGcmSciNcnXciUcnYcnZcnjcoacobciUclLclMclNcoccodcoeclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcofcogcohcwlcojcokcolcomconcopcoocdObqpaafaafcoqaafaaaaaaaaaaaaaaaaaaaaaaafcoscotcosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaafaafaafaaaaafcnxaafcnxaafcKBaafcKAaafcKBaafcKAaafaafaaacejcnAcnBcgUcgUcnCcnDcnhcngcnycnmcnEcnzcnzcnFcnzcnGcnIcnHcnGcnJcnLcnKcnNcnMcnOcnOcnOcnOcnQcnPcnRcnRcnRcgscgscgscgscnSciGcnTcnUcnccnVcnWciGcmSciNcnXciUcnYcnZcnjcoacobciUclLclMclNcoccodcoeclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcofcogcohcwlcojcokcolcomconcopcoocdOaaLaafaafcKcaafaaaaaaaaaaaaaaaaaaaaaaafcoscotcosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafcoucowcovcoxcovcowcoycoxcoAcoBcoycoDcoCcoFcoEcnycnycnycnycnycnycnycnycoHcoGcoJcoIcoLcoKcoNcoMcoOcnGcoQcoPcoRcnGcoTcoScoUcnOcoWcoVcoYcoXcpacoZcpjcpbcpbcpkcpncpncpjbTFciGciGcpccpdciGciGciGcpeciNcpfciUciUciUcpgcphciUciUclLcpiclNcvmcpscvmclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafcdOcplcpmcplcvlcpocppcpqcomcomcprcomcdOcdOaaaaaaaaaaafaafaaaaacaaaaaaaaaaaaaafaaacvtaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaaaaaaaafcptcpvcpucpxcpwcpvcpycpAcpzcpCcpBcpFcpDcpJcpHcpMcpLcpOcpNcpTcpQcpVcpUcpXcpWcpZcpYcqbcqacqdcqccqfcqecqzcqtcqJcqIcoTcqKcqMcnOcpacpacpacpacpacqPcpjcqQcqQcqQcpncpncpjbTFcrYciGcqhcqicqjcqkciGcqlciNcqmciUcqncqocqpcqqciUcqrclLcpiclNcqscqRcquclNaaaaaaaaaaaaaaaaaacqvcqwcqxcqycqvaafaaaaaaaaaaaacdOcplcplcplcoicqAcqBcqCcqDcqEcqFcqGcqHcdOaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacmZaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafcqScpHcqUcqWcqVcpHcqXcpHcqYcqZcqXcpHcqYcqZcpHcpHcpHcpHcpHcracpHcpHcpHcqbcrbcpYcrccqXcqacrecrdcrgcrfcricrhcrkcrjcoTcqKcrlcnOcrmcpacpacrncpacrocpjcrpcrJcrIcrJcrKcpjbTFcrqciGcrrcrscrtcrucrvcrwcrxcrycrzcrAcrBcrCcrDciUcrEcrFcrGcrHcqvcrLcqvcrHaaaaaaaafaaaaaaaaacqvcrQcrScrRcqvaafaafaaaaaaaaacdOcomcomcomcomcrMcppcrNcrNcrNcnpcrNcrOcdOaaaaaaaaaaaaaaacrPcrPcrPbZSaafaafaafaafcnaaafaafaafaafaafaaqcrPcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 6cca0b6169a11d9ad089ad29a6a636b7bea19092 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 8 Mar 2015 23:02:29 +0100 Subject: [PATCH 093/168] Station Alert Runtime Fix Fixes an issue where station alert consoles could potentially runtime due to alarm_monitor not yet being initialized. --- code/game/machinery/computer/station_alert.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index 84ce5cc0d1..279f5fe1a2 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -8,9 +8,9 @@ var/obj/nano_module/alarm_monitor/engineering/alarm_monitor /obj/machinery/computer/station_alert/New() - ..() alarm_monitor = new(src) alarm_monitor.register(src, /obj/machinery/computer/station_alert/update_icon) + ..() /obj/machinery/computer/station_alert/Del() alarm_monitor.unregister(src) From b71f6c11211fda0901ac63b93e4564518cadaad2 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 8 Mar 2015 01:52:40 -0500 Subject: [PATCH 094/168] Partial breathing refactor Reorganizes breathing, and moves common human/monkey breathing code into carbon. handle_breath() is largely unchanged. Removes unnecessary handle_internal_lifeform(). Fixes monkies being held by people in mecha in space not being able to breathe. --- baystation12.dme | 1 + code/ZAS/_gas_mixture_xgm.dm | 7 +- code/game/atoms.dm | 6 + code/game/machinery/cryo.dm | 8 +- code/game/objects/objs.dm | 10 -- code/game/objects/structures/transit_tubes.dm | 39 +------ code/modules/mob/holder.dm | 12 -- code/modules/mob/living/carbon/breathe.dm | 80 +++++++++++++ code/modules/mob/living/carbon/human/life.dm | 110 +++--------------- code/modules/mob/living/carbon/monkey/life.dm | 84 +------------ 10 files changed, 124 insertions(+), 233 deletions(-) create mode 100644 code/modules/mob/living/carbon/breathe.dm diff --git a/baystation12.dme b/baystation12.dme index a8ceac79f0..06847e84c3 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1060,6 +1060,7 @@ #include "code\modules\mob\living\logout.dm" #include "code\modules\mob\living\say.dm" #include "code\modules\mob\living\blob\blob.dm" +#include "code\modules\mob\living\carbon\breathe.dm" #include "code\modules\mob\living\carbon\carbon.dm" #include "code\modules\mob\living\carbon\carbon_defines.dm" #include "code\modules\mob\living\carbon\carbon_powers.dm" diff --git a/code/ZAS/_gas_mixture_xgm.dm b/code/ZAS/_gas_mixture_xgm.dm index ddfbb574ca..0d2f1a1147 100644 --- a/code/ZAS/_gas_mixture_xgm.dm +++ b/code/ZAS/_gas_mixture_xgm.dm @@ -220,7 +220,7 @@ /datum/gas_mixture/proc/remove_ratio(ratio, out_group_multiplier = 1) if(ratio <= 0) return null - out_group_multiplier = max(1, min(group_multiplier, out_group_multiplier)) + out_group_multiplier = between(1, out_group_multiplier, group_multiplier) ratio = min(ratio, 1) @@ -237,6 +237,11 @@ return removed +//Removes a volume of gas from the mixture and returns a gas_mixture containing the removed air with the given volume +/datum/gas_mixture/proc/remove_volume(removed_volume) + var/datum/gas_mixture/removed = remove_ratio(removed_volume/volume, 1) + removed.volume = removed_volume + return removed //Removes moles from the gas mixture, limited by a given flag. Returns a gax_mixture containing the removed air. /datum/gas_mixture/proc/remove_by_flag(flag, amount) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 6900a2e030..109b3fc3e3 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -34,6 +34,12 @@ else return null +//Currently used only for cryo cells, because they are also pipes and so overriding their return_air() would break their pipe-behaviour. +//If cryo cells are ever rewritten so that the part that contains the human is separate from the pipe part -- +//such as rewriting them so that they are a machine that contains a pipe segment (or a pipe that contains a machine that contains the human?) -- then this can be removed. +/atom/proc/return_air_for_internal_lifeform() + return return_air() + /atom/proc/check_eye(user as mob) if (istype(user, /mob/living/silicon/ai)) // WHYYYY return 1 diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 7d10bd9a6f..80437066a7 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -331,7 +331,13 @@ put_mob(usr) return - +/obj/machinery/atmospherics/unary/cryo_cell/return_air_for_internal_lifeform() + //assume that the cryo cell has some kind of breath mask or something that + //draws from the cryo tube's environment, instead of the cold internal air. + if(loc) + return loc.return_air() + else + return null /datum/data/function/proc/reset() return diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 0e6ff27dc7..51cb54ea2d 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -62,16 +62,6 @@ else return null -/obj/proc/handle_internal_lifeform(mob/lifeform_inside_me, breath_request) - //Return: (NONSTANDARD) - // null if object handles breathing logic for lifeform - // datum/air_group to tell lifeform to process using that breath return - //DEFAULT: Take air from turf to give to have mob process - if(breath_request>0) - return remove_air(breath_request) - else - return null - /atom/movable/proc/initialize() return diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm index c95aed0065..fcd65e2cdf 100644 --- a/code/game/objects/structures/transit_tubes.dm +++ b/code/game/objects/structures/transit_tubes.dm @@ -353,53 +353,24 @@ obj/structure/ex_act(severity) moving = 0 - -// Should I return a copy here? If the caller edits or del()s the returned -// datum, there might be problems if I don't... /obj/structure/transit_tube_pod/return_air() - var/datum/gas_mixture/GM = new() - GM.copy_from(air_contents) - return GM + return air_contents -// For now, copying what I found in an unused FEA file (and almost identical in a -// used ZAS file). Means that assume_air and remove_air don't actually alter the -// air contents. /obj/structure/transit_tube_pod/assume_air(datum/gas_mixture/giver) return air_contents.merge(giver) /obj/structure/transit_tube_pod/remove_air(amount) return air_contents.remove(amount) - - // Called when a pod arrives at, and before a pod departs from a station, // giving it a chance to mix its internal air supply with the turf it is // currently on. /obj/structure/transit_tube_pod/proc/mix_air() var/datum/gas_mixture/environment = loc.return_air() - var/env_pressure = environment.return_pressure() - var/int_pressure = air_contents.return_pressure() - var/total_pressure = env_pressure + int_pressure - - if(total_pressure == 0) - return - - // Math here: Completely made up, not based on realistic equasions. - // 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 - // 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) - - var/datum/gas_mixture/from_env = loc.remove_air(environment.total_moles * transfer_in) - var/datum/gas_mixture/from_int = air_contents.remove(air_contents.total_moles * transfer_out) - - loc.assume_air(from_int) - air_contents.merge(from_env) - - + + //note that share_ratio assumes both gas mixes have the same volume, + //so if the volume is changed this may need to be changed as well. + air_contents.share_ratio(environment, 1) // 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 diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index 4f69bcc961..79d0eba9f1 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -15,18 +15,6 @@ processing_objects.Remove(src) ..() -/obj/item/weapon/holder/return_air() - var/turf/T = get_turf(src) - return T.return_air() - -/obj/item/weapon/holder/handle_internal_lifeform(mob/lifeform_inside_me, breath_request) - var/turf/T = get_turf(src) - return T.remove_air(breath_request) - -/obj/item/weapon/holder/assume_air(var/mixture) - var/turf/T = get_turf(src) - return T.assume_air(mixture) - /obj/item/weapon/holder/process() if(istype(loc,/turf) || !(contents.len)) diff --git a/code/modules/mob/living/carbon/breathe.dm b/code/modules/mob/living/carbon/breathe.dm new file mode 100644 index 0000000000..38e1efa71b --- /dev/null +++ b/code/modules/mob/living/carbon/breathe.dm @@ -0,0 +1,80 @@ +//Common breathing procs + +/mob/living/carbon/proc/breathe() + //if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return + if(species && (species.flags & NO_BREATHE || species.flags & IS_SYNTHETIC)) return + + var/datum/gas_mixture/breath = null + + //First, check if we can breathe at all + if(health < config.health_threshold_crit && !reagents.has_reagent("inaprovaline")) //crit aka circulatory shock + losebreath++ + + if(losebreath>0) //Suffocating so do not take a breath + losebreath-- + if (prob(10)) //Gasp per 10 ticks? Sounds about right. + spawn emote("gasp") + else + //Okay, we can breathe, now check if we can get air + breath = get_breath_from_internal() //First, check for air from internals + if(!breath) + breath = get_breath_from_environment() //No breath from internals so let's try to get air from our location + + handle_breath(breath) + handle_post_breath(breath) + +/mob/living/carbon/proc/get_breath_from_internal(var/volume_needed=BREATH_VOLUME) //hopefully this will allow overrides to specify a different default volume without breaking any cases where volume is passed in. + if(internal) + if (!contents.Find(internal)) + internal = null + if (!(wear_mask && (wear_mask.flags & AIRTIGHT))) + internal = null + if(internal) + if (internals) + internals.icon_state = "internal1" + return internal.remove_air_volume(volume_needed) + else + if (internals) + internals.icon_state = "internal0" + return null + +/mob/living/carbon/proc/get_breath_from_environment(var/volume_needed=BREATH_VOLUME) + var/datum/gas_mixture/breath = null + + var/datum/gas_mixture/environment + if(loc) + environment = loc.return_air_for_internal_lifeform() + + if(environment) + breath = environment.remove_volume(volume_needed) + handle_chemical_smoke(environment) //handle chemical smoke while we're at it + + if(breath) + //handle mask filtering + if(istype(wear_mask, /obj/item/clothing/mask) && breath) + var/obj/item/clothing/mask/M = wear_mask + var/datum/gas_mixture/filtered = M.filter_air(breath) + loc.assume_air(filtered) + return breath + return null + +//Handle possble chem smoke effect +/mob/living/carbon/proc/handle_chemical_smoke(var/datum/gas_mixture/environment) + if(wear_mask && (wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT)) + return + + for(var/obj/effect/effect/smoke/chem/smoke in view(1, src)) + if(smoke.reagents.total_volume) + smoke.reagents.reaction(src, INGEST) + spawn(5) + if(smoke) + //maybe check air pressure here or something to see if breathing in smoke is even possible. + smoke.reagents.copy_to(src, 10) // I dunno, maybe the reagents enter the blood stream through the lungs? + break // If they breathe in the nasty stuff once, no need to continue checking + +/mob/living/carbon/proc/handle_breath(datum/gas_mixture/breath) + return + +/mob/living/carbon/proc/handle_post_breath(datum/gas_mixture/breath) + if(breath) + loc.assume_air(breath) //by default, exhale diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 50b6de2988..106dc6ce27 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -68,11 +68,6 @@ if(air_master.current_cycle%4==2 || failed_last_breath || (health < config.health_threshold_crit)) //First, resolve location and get a breath breathe() //Only try to take a breath every 4 ticks, unless suffocating - else //Still give containing object the chance to interact - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) - //Updates the number of stored chemicals for powers handle_changeling() @@ -325,95 +320,26 @@ var/datum/organ/external/O = pick(organs) if(istype(O)) O.add_autopsy_data("Radiation Poisoning", damage) - proc/breathe() - if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return - if(species && (species.flags & NO_BREATHE || species.flags & IS_SYNTHETIC)) return + /** breathing **/ + + handle_chemical_smoke(var/datum/gas_mixture/environment) + if(wear_mask && (wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT)) + return + if(glasses && (glasses.flags & BLOCK_GAS_SMOKE_EFFECT)) + return + if(head && (head.flags & BLOCK_GAS_SMOKE_EFFECT)) + return + ..() - var/datum/gas_mixture/environment = loc.return_air() - var/datum/gas_mixture/breath - - // HACK NEED CHANGING LATER - if(health < config.health_threshold_crit && !reagents.has_reagent("inaprovaline")) - losebreath++ - - if(losebreath>0) //Suffocating so do not take a breath - losebreath-- - if (prob(10)) //Gasp per 10 ticks? Sounds about right. - spawn emote("gasp") - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) - else - //First, check for air from internal atmosphere (using an air tank and mask generally) - breath = get_breath_from_internal(BREATH_VOLUME) // Super hacky -- TLE - //breath = get_breath_from_internal(0.5) // Manually setting to old BREATH_VOLUME amount -- TLE - - //No breath from internal atmosphere so get breath from location - if(!breath) - if(isobj(loc)) - var/obj/location_as_object = loc - breath = location_as_object.handle_internal_lifeform(src, BREATH_MOLES) - else if(isturf(loc)) - var/breath_moles = 0 - /*if(environment.return_pressure() > ONE_ATMOSPHERE) - // Loads of air around (pressure effect will be handled elsewhere), so lets just take a enough to fill our lungs at normal atmos pressure (using n = Pv/RT) - breath_moles = (ONE_ATMOSPHERE*BREATH_VOLUME/R_IDEAL_GAS_EQUATION*environment.temperature) - else*/ - // Not enough air around, take a percentage of what's there to model this properly - breath_moles = environment.total_moles*BREATH_PERCENTAGE - - breath = loc.remove_air(breath_moles) - - if(istype(wear_mask, /obj/item/clothing/mask) && breath) - var/obj/item/clothing/mask/M = wear_mask - var/datum/gas_mixture/filtered = M.filter_air(breath) - loc.assume_air(filtered) - - if(!is_lung_ruptured()) - if(!breath || breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5) - if(prob(5)) - rupture_lung() - - // Handle filtering - var/block = 0 - if(wear_mask) - if(wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT) - block = 1 - if(glasses) - if(glasses.flags & BLOCK_GAS_SMOKE_EFFECT) - block = 1 - if(head) - if(head.flags & BLOCK_GAS_SMOKE_EFFECT) - block = 1 - - if(!block) - - for(var/obj/effect/effect/smoke/chem/smoke in view(1, src)) - if(smoke.reagents.total_volume) - smoke.reagents.reaction(src, INGEST) - spawn(5) - if(smoke) - smoke.reagents.copy_to(src, 10) // I dunno, maybe the reagents enter the blood stream through the lungs? - break // If they breathe in the nasty stuff once, no need to continue checking - - else //Still give containing object the chance to interact - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) - - handle_breath(breath) - - if(breath) - loc.assume_air(breath) - - //spread some viruses while we are at it - if (virus2.len > 0 && prob(10)) -// log_debug("[src] : Exhaling some viruses") - for(var/mob/living/carbon/M in view(1,src)) - src.spread_disease_to(M) + handle_post_breath(datum/gas_mixture/breath) + ..() + //spread some viruses while we are at it + if(breath && virus2.len > 0 && prob(10)) + for(var/mob/living/carbon/M in view(1,src)) + src.spread_disease_to(M) - proc/get_breath_from_internal(volume_needed) + get_breath_from_internal(volume_needed=BREATH_VOLUME) if(internal) var/obj/item/weapon/tank/rig_supply @@ -432,7 +358,7 @@ return null - proc/handle_breath(datum/gas_mixture/breath) + handle_breath(datum/gas_mixture/breath) if(status_flags & GODMODE) return diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index dcf4caebb2..c0588de04d 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -27,10 +27,6 @@ if(air_master.current_cycle%4==2) //Only try to take a breath every 4 seconds, unless suffocating breathe() - else //Still give containing object the chance to interact - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) //Updates the number of stored chemicals for powers handle_changeling() @@ -152,85 +148,7 @@ domutcheck(src,null) emote("gasp") - proc/breathe() - if(reagents) - - if(reagents.has_reagent("lexorin")) return - - if(!loc) return //probably ought to make a proper fix for this, but :effort: --NeoFite - - var/datum/gas_mixture/environment = loc.return_air() - var/datum/gas_mixture/breath - if(health < 0) - losebreath++ - if(losebreath>0) //Suffocating so do not take a breath - losebreath-- - if (prob(75)) //High chance of gasping for air - spawn emote("gasp") - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) - else - //First, check for air from internal atmosphere (using an air tank and mask generally) - breath = get_breath_from_internal(BREATH_VOLUME) - - //No breath from internal atmosphere so get breath from location - if(!breath) - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - breath = location_as_object.handle_internal_lifeform(src, BREATH_VOLUME) - else if(istype(loc, /turf/)) - var/breath_moles = environment.total_moles*BREATH_PERCENTAGE - breath = loc.remove_air(breath_moles) - - if(istype(wear_mask, /obj/item/clothing/mask) && breath) - var/obj/item/clothing/mask/M = wear_mask - var/datum/gas_mixture/filtered = M.filter_air(breath) - loc.assume_air(filtered) - - // Handle chem smoke effect -- Doohl - var/block = 0 - if(wear_mask) - if(istype(wear_mask, /obj/item/clothing/mask/gas)) - block = 1 - - if(!block) - for(var/obj/effect/effect/smoke/chem/smoke in view(1, src)) - if(smoke.reagents.total_volume) - smoke.reagents.reaction(src, INGEST) - spawn(5) - if(smoke) - smoke.reagents.copy_to(src, 10) // I dunno, maybe the reagents enter the blood stream through the lungs? - break // If they breathe in the nasty stuff once, no need to continue checking - - - else //Still give containing object the chance to interact - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) - - handle_breath(breath) - - if(breath) - loc.assume_air(breath) - - - proc/get_breath_from_internal(volume_needed) - if(internal) - if (!contents.Find(internal)) - internal = null - if (!(wear_mask && (wear_mask.flags & AIRTIGHT))) - internal = null - if(internal) - if (internals) - internals.icon_state = "internal1" - return internal.remove_air_volume(volume_needed) - else - if (internals) - internals.icon_state = "internal0" - return null - - proc/handle_breath(datum/gas_mixture/breath) + handle_breath(datum/gas_mixture/breath) if(status_flags & GODMODE) return From 0f290f0ffded78c440955527b39423c55a0fc5ba Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 01:00:26 -0400 Subject: [PATCH 095/168] Implements phoron flashpoint --- code/ZAS/Zone.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/ZAS/Zone.dm b/code/ZAS/Zone.dm index 6959d6d9e9..b7042191fc 100644 --- a/code/ZAS/Zone.dm +++ b/code/ZAS/Zone.dm @@ -138,6 +138,11 @@ Class Procs: air.group_multiplier = contents.len+1 /zone/proc/tick() + if(air.temperature >= PHORON_FLASHPOINT && !(src in air_master.active_fire_zones) && air.check_combustability() && contents.len) + var/turf/T = pick(contents) + if(istype(T)) + T.create_fire(vsc.fire_firelevel_multiplier) + if(air.check_tile_graphic(graphic_add, graphic_remove)) for(var/turf/simulated/T in contents) T.update_graphic(graphic_add, graphic_remove) From c43226859607fa3f5da7f489dc9a6165f2b552e9 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 01:30:59 -0400 Subject: [PATCH 096/168] Fixes fires burning forever Fixes fires grinding to a near halt but never actually stopping. --- code/ZAS/Fire.dm | 11 ++++++++--- code/setup.dm | 5 +++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm index 100c45f93d..5dd0ac3cd3 100644 --- a/code/ZAS/Fire.dm +++ b/code/ZAS/Fire.dm @@ -239,13 +239,18 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0) //world << "gas_reaction_progress = [gas_reaction_progress]" var/total_reaction_progress = gas_reaction_progress + liquid_reaction_progress - if(total_reaction_progress <= 0) - return 0 - var/used_fuel = min(total_reaction_progress, reaction_limit) var/used_oxidizers = used_fuel*(FIRE_REACTION_OXIDIZER_AMOUNT/FIRE_REACTION_FUEL_AMOUNT) //world << "used_fuel = [used_fuel]; used_oxidizers = [used_oxidizers]; reaction_limit=[reaction_limit]" + //if the reaction is progressing too slow then it isn't self-sustaining anymore and burns out + if(zone && zone.fuel_objs.len) + if(used_fuel <= FIRE_LIQUD_MIN_BURNRATE) + return 0 + else if(used_fuel <= FIRE_GAS_MIN_BURNRATE*group_multiplier) //purely gas fires have more stringent criteria + return 0 + + //*** Remove fuel and oxidizer, add carbon dioxide and heat //remove and add gasses as calculated diff --git a/code/setup.dm b/code/setup.dm index e500df4453..667ccd4c2e 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -133,6 +133,11 @@ #define FIRE_GAS_BURNRATE_MULT 1 #define FIRE_LIQUID_BURNRATE_MULT 0.5 +//If the fire is burning slower than this rate then the reaction is going too slow to be self sustaining and the fire burns itself out. +//This ensures that fires don't grind to a near-halt while still remaining active forever. +#define FIRE_GAS_MIN_BURNRATE 0.1 +#define FIRE_LIQUD_MIN_BURNRATE 0.05 + //How many moles of fuel are contained within one solid/liquid fuel volume unit #define LIQUIDFUEL_AMOUNT_TO_MOL 1 //mol/volume unit From e5a9b686aa1c3a7558affeed8c97aa2634c7deca Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 02:02:10 -0400 Subject: [PATCH 097/168] Fixes human examine Fixes issues introduced with the examine tab system by decoupling the examine() proc from the code that updates a mob's description holders. Puts a few things in more logical places. --- code/modules/examine/examine.dm | 56 ++++++++----------- .../mob/living/carbon/human/examine.dm | 1 - code/modules/mob/mob.dm | 3 + 3 files changed, 27 insertions(+), 33 deletions(-) diff --git a/code/modules/examine/examine.dm b/code/modules/examine/examine.dm index 392f897c68..6f797f5cb9 100644 --- a/code/modules/examine/examine.dm +++ b/code/modules/examine/examine.dm @@ -11,26 +11,7 @@ var/description_fluff = null //Green text about the atom's fluff, if any exists. var/description_antag = null //Malicious red text, for the antags. -/atom/examine(mob/user, var/distance = -1, var/infix = "", var/suffix = "") - . = ..() - user.description_holders["info"] = get_description_info() - user.description_holders["fluff"] = get_description_fluff() - if(user.mind && user.mind.special_role || isobserver(user)) //Runtime prevention, as ghosts don't have minds. - user.description_holders["antag"] = get_description_antag() - - if(name) //This shouldn't be needed but I'm paranoid. - user.description_holders["name"] = "[src.name]" //\icon[src] - - user.description_holders["icon"] = "\icon[src]" - - if(desc) - user << desc - user.description_holders["desc"] = src.desc - else - user.description_holders["desc"] = null //This is needed, or else if you examine one thing with a desc, then another without, the panel will retain the first examined's desc. - //Override these if you need special behaviour for a specific type. - /atom/proc/get_description_info() if(description_info) return description_info @@ -46,10 +27,30 @@ return description_antag return -/mob/ - var/description_holders[0] +/mob/living/get_description_fluff() + if(flavor_text) //Get flavor text for the green text. + return flavor_text + else //No flavor text? Try for hardcoded fluff instead. + return ..() -/mob/Stat() +/mob/living/carbon/human/get_description_fluff() + return print_flavor_text(0) + +/* The examine panel itself */ + +/client/var/description_holders[0] + +/client/proc/update_description_holders(atom/A) + description_holders["info"] = A.get_description_info() + description_holders["fluff"] = A.get_description_fluff() + if(mob.mind && mob.mind.special_role || isobserver(src)) //ghosts don't have minds. + description_holders["antag"] = A.get_description_antag() + + description_holders["name"] = "[A.name]" + description_holders["icon"] = "\icon[A]" + description_holders["desc"] = A.desc + +/client/Stat() ..() if(statpanel("Examine")) stat(null,"[description_holders["icon"]] [description_holders["name"]]") //The name, written in big letters. @@ -59,13 +60,4 @@ if(description_holders["fluff"]) stat(null,"[description_holders["fluff"]]") //Yellow, fluff-related text. if(description_holders["antag"]) - stat(null,"[description_holders["antag"]]") //Red, malicious antag-related text - -/mob/living/get_description_fluff() - if(flavor_text) //Get flavor text for the green text. - return flavor_text - else //No flavor text? Try for hardcoded fluff instead. - return ..() - -/mob/living/carbon/human/get_description_fluff() - return print_flavor_text(0) + stat(null,"[description_holders["antag"]]") //Red, malicious antag-related text \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 277f88c809..3630d609a3 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -451,7 +451,6 @@ msg += "\n[t_He] is [pose]" user << msg - ..() //Helper procedure. Called by /mob/living/carbon/human/examine() and /mob/living/carbon/human/Topic() to determine HUD access to security and medical records. /proc/hasHUD(mob/M as mob, hudtype) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 61959ab49c..c3e5fbf90b 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -232,6 +232,9 @@ var/list/slot_equipment_priority = list( \ face_atom(A) A.examine(src) + + if(client) + client.update_description_holders(A) /mob/verb/pointed(atom/A as mob|obj|turf in view()) set name = "Point To" From 0b5575897dfb10673e6f6e525359f6de6e7ba2d4 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 02:34:21 -0400 Subject: [PATCH 098/168] Updates maint drone helptext --- code/modules/examine/descriptions/mobs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/examine/descriptions/mobs.dm b/code/modules/examine/descriptions/mobs.dm index 8197e6f3d1..8961b9f367 100644 --- a/code/modules/examine/descriptions/mobs.dm +++ b/code/modules/examine/descriptions/mobs.dm @@ -3,6 +3,6 @@ interact with anyone else, except for other drones. They hold a wide array of tools to build, repair, maintain, and clean. \ They fuction similarly to other synthetics, in that they require recharging regularly, have laws, and are resilient to many hazards, \ such as fire, radiation, vacuum, and more. Ghosts can join the round as a maintenance drone by using the appropriate verb in the 'ghost' tab. \ - An inactive drone can be rebooted by swiping an ID card on it with engineering or robotics access." + An inactive drone can be rebooted by swiping an ID card on it with engineering or robotics access, and an active drone can be shut down in the same manner." description_antag = "An Electromagnetic Sequencer can be used to subvert the drone to your cause." \ No newline at end of file From 5abf0248fc4c30a1e9328d52ceba23d95273d5b9 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 03:14:26 -0400 Subject: [PATCH 099/168] Firing the Z8 grenade launch automatically switches back to regular firing. --- code/modules/projectiles/guns/projectile/automatic.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 8575d63754..3a0cca54e3 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -128,6 +128,8 @@ /obj/item/weapon/gun/projectile/automatic/z8/Fire(atom/target, mob/living/user, params, pointblank=0, reflex=0) if(use_launcher) launcher.Fire(target, user, params, pointblank, reflex) + if(!launcher.chambered) + use_launcher = 0 //switch back automatically else ..() From 4c7138db14988ec5bc89458e06fa1038382849f0 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 03:15:45 -0400 Subject: [PATCH 100/168] Adds four mercenary vests to the merc base, tweaks --- code/modules/clothing/suits/armor.dm | 100 +++++++++++++-------------- maps/exodus-2.dmm | 13 ++-- 2 files changed, 57 insertions(+), 56 deletions(-) diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 0b0791a918..6ff7b25f47 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -22,7 +22,7 @@ /obj/item/clothing/suit/armor/vest/security name = "security armor" - desc = "An armored vest that protects against some damage. This one has NanoTrasen corporate badge." + desc = "An armored vest that protects against some damage. This one has a NanoTrasen corporate badge." icon_state = "armorsec" item_state = "armor" @@ -139,53 +139,6 @@ src.item_state = "reactiveoff" ..() - -//All of the armor below is mostly unused - - -/obj/item/clothing/suit/armor/centcomm - name = "Cent. Com. armor" - desc = "A suit that protects against some damage." - icon_state = "centcom" - item_state = "centcom" - w_class = 4//bulky item - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS - min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE - siemens_coefficient = 0 - -/obj/item/clothing/suit/armor/heavy - name = "heavy armor" - desc = "A heavily armored suit that protects against moderate damage." - icon_state = "heavy" - item_state = "swat_suit" - w_class = 4//bulky item - gas_transfer_coefficient = 0.90 - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - slowdown = 3 - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - siemens_coefficient = 0 - -/obj/item/clothing/suit/armor/tdome - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - -/obj/item/clothing/suit/armor/tdome/red - name = "Thunderdome suit (red)" - desc = "Reddish armor." - icon_state = "tdred" - item_state = "tdred" - siemens_coefficient = 1 - -/obj/item/clothing/suit/armor/tdome/green - name = "Thunderdome suit (green)" - desc = "Pukish armor." - icon_state = "tdgreen" - item_state = "tdgreen" - siemens_coefficient = 1 - /obj/item/clothing/suit/armor/tactical name = "tactical armor" desc = "A suit of armor most often used by Special Weapons and Tactics squads. Includes padded vest with pockets along with shoulder and kneeguards." @@ -228,6 +181,7 @@ desc = "A set of armor worn by members of the NanoTrasen Emergency Response Team." icon_state = "ertarmor_cmd" item_state = "armor" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 20, bio = 0, rad = 0) //Commander @@ -342,11 +296,57 @@ icon_badge = "pcrcwebvest_badge" icon_nobadge = "pcrcwebvest_nobadge" +//Provides the protection of a merc voidsuit, but only covers the chest/groin, and also takes up a suit slot. In exchange it has no slowdown and provides storage. /obj/item/clothing/suit/storage/vest/heavy/merc - name = "comfortable heavy armor vest" - desc = "A heavy kevlar plate carrier in a fetching tan. Fits pretty well." + name = "heavy armor vest" + desc = "A high-quality heavy kevlar plate carrier in a fetching tan. The vest is surprisingly flexible, and possibly made of an advanced material." icon_state = "mercwebvest" item_state = "mercwebvest" armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0) slowdown = 0 +//All of the armor below is mostly unused + + +/obj/item/clothing/suit/armor/centcomm + name = "Cent. Com. armor" + desc = "A suit that protects against some damage." + icon_state = "centcom" + item_state = "centcom" + w_class = 4//bulky item + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS + min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE + siemens_coefficient = 0 + +/obj/item/clothing/suit/armor/heavy + name = "heavy armor" + desc = "A heavily armored suit that protects against moderate damage." + icon_state = "heavy" + item_state = "swat_suit" + w_class = 4//bulky item + gas_transfer_coefficient = 0.90 + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + slowdown = 3 + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + siemens_coefficient = 0 + +/obj/item/clothing/suit/armor/tdome + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + +/obj/item/clothing/suit/armor/tdome/red + name = "Thunderdome suit (red)" + desc = "Reddish armor." + icon_state = "tdred" + item_state = "tdred" + siemens_coefficient = 1 + +/obj/item/clothing/suit/armor/tdome/green + name = "Thunderdome suit (green)" + desc = "Pukish armor." + icon_state = "tdgreen" + item_state = "tdgreen" + siemens_coefficient = 1 diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index 5abdbb4154..b70ca1a11c 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -1972,6 +1972,7 @@ "LV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) "LW" = (/obj/structure/table/rack,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/grenade_launcher,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/rcd,/obj/item/rig_module/device/rcd,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/mounted/egun,/obj/item/rig_module/mounted/egun,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "LX" = (/obj/structure/table/reinforced,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) +"LY" = (/obj/structure/table/rack,/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = -2; pixel_y = -2},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "MA" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns12,/area/space) "MO" = (/obj/machinery/vending/cigarette{contraband = newlist(); premium = newlist(); prices = list(/obj/item/weapon/storage/fancy/cigarettes = 15, /obj/item/weapon/storage/box/matches = 1, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 20); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "MP" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) @@ -2139,12 +2140,12 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMihmWmWmWihmumumumumumumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMmumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmZnananbihihncihihihihihihihmumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMmumumumumumuaMaMaMaMaMaMaMaMaMaMnvrPrIrIrIrBnzaMaMndnenfngnenenerlihninjnknlihmumumumumumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMnvnHnInJnKnLnMnHnzaMndnenmnmnenenenennnonononpihmumumumumumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMmumumumuaMaMaMaMaMaMaMaMaMnHnQnRnRnSnRnRnLnHaMndnqnrnsntneneneihnonononuihihihihihmumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMnHnZnRnRnRnRoanLnHaMndnenAnAnenenepaihnCnonDnEihbLkQbOihmumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHofnRnRognRnRohnHaMndneneneneneneriihihihihihihbPkQbTihmumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMomnHonnHnHnHnHnHooaMnTnananUihkdkdkdihkTkTnVnWihcikQmkihmumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHoGoyoaounFnHaMaMaMaMaMaMobkdkdkdoclalaododihcikQnGihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMnvnHnInJnKnLnMnHnzaMndnenmnmnenenenennnonononpihihihihihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMmumumumuaMaMaMaMaMaMaMaMaMnHnQnRnRnSnRnRnLnHaMndnqnrnsntneneneihnonononuihbOkQbTihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMnHnZnRnRnRnRoanLnHaMndnenAnAnenenepaihnCnonDnEihbLkQmkihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHofnRnRognRnRohnHaMndneneneneneneriihihihihihihbPkQnGihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMomnHonnHnHnHnHnHooaMnTnananUihkdkdkdihkTkTnVnWihcikQLYihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHoGoyoaounFnHaMaMaMaMaMaMobkdkdkdoclalaododihcikQLYihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHoBoAoanRornHaMaMaMaMaMaMoikdkdkdihojlaihihihokolokihihihihmumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnvnHoBoyoanRornHnzaMaMmPmKoFihkdkdkdihihihihnOnOkQkQkQnPnPpKihihmumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnvnHnHnHnHvLoyoanRornHnHnHnHnzototihkdkdkdkdihnYnXkQkQkQkQkQkQkQkQqKihmumumumumumu From 17780e196a0b1ed19120aa7b36c05501d0efe24c Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 03:18:38 -0400 Subject: [PATCH 101/168] Fixes medical record cabinet runtime --- code/modules/paperwork/filingcabinet.dm | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 5bb1dde195..67eb5c9aeb 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -147,16 +147,18 @@ if((R.fields["name"] == G.fields["name"] || R.fields["id"] == G.fields["id"])) M = R break - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src) - P.info = "
Medical Record

" - P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
\nSex: [G.fields["sex"]]
\nAge: [G.fields["age"]]
\nFingerprint: [G.fields["fingerprint"]]
\nPhysical Status: [G.fields["p_stat"]]
\nMental Status: [G.fields["m_stat"]]
" - P.info += "
\n
Medical Data

\nBlood Type: [M.fields["b_type"]]
\nDNA: [M.fields["b_dna"]]
\n
\nMinor Disabilities: [M.fields["mi_dis"]]
\nDetails: [M.fields["mi_dis_d"]]
\n
\nMajor Disabilities: [M.fields["ma_dis"]]
\nDetails: [M.fields["ma_dis_d"]]
\n
\nAllergies: [M.fields["alg"]]
\nDetails: [M.fields["alg_d"]]
\n
\nCurrent Diseases: [M.fields["cdi"]] (per disease info placed in log/comment section)
\nDetails: [M.fields["cdi_d"]]
\n
\nImportant Notes:
\n\t[M.fields["notes"]]
\n
\n
Comments/Log

" - var/counter = 1 - while(M.fields["com_[counter]"]) - P.info += "[M.fields["com_[counter]"]]
" - counter++ - P.info += "" - P.name = "Medical Record ([G.fields["name"]])" + if(M) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src) + P.info = "
Medical Record

" + P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
\nSex: [G.fields["sex"]]
\nAge: [G.fields["age"]]
\nFingerprint: [G.fields["fingerprint"]]
\nPhysical Status: [G.fields["p_stat"]]
\nMental Status: [G.fields["m_stat"]]
" + + P.info += "
\n
Medical Data

\nBlood Type: [M.fields["b_type"]]
\nDNA: [M.fields["b_dna"]]
\n
\nMinor Disabilities: [M.fields["mi_dis"]]
\nDetails: [M.fields["mi_dis_d"]]
\n
\nMajor Disabilities: [M.fields["ma_dis"]]
\nDetails: [M.fields["ma_dis_d"]]
\n
\nAllergies: [M.fields["alg"]]
\nDetails: [M.fields["alg_d"]]
\n
\nCurrent Diseases: [M.fields["cdi"]] (per disease info placed in log/comment section)
\nDetails: [M.fields["cdi_d"]]
\n
\nImportant Notes:
\n\t[M.fields["notes"]]
\n
\n
Comments/Log

" + var/counter = 1 + while(M.fields["com_[counter]"]) + P.info += "[M.fields["com_[counter]"]]
" + counter++ + P.info += "" + P.name = "Medical Record ([G.fields["name"]])" virgin = 0 //tabbing here is correct- it's possible for people to try and use it //before the records have been generated, so we do this inside the loop. ..() From a28378f81957290995ee7ec3df53883833f27f7b Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 03:28:37 -0400 Subject: [PATCH 102/168] Fixes space movement runtime --- code/modules/mob/mob_movement.dm | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index cdfde01107..efd2c52740 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -453,23 +453,18 @@ if(istype(turf,/turf/space)) continue - if(istype(src,/mob/living/carbon/human/)) // Only humans can wear magboots, so we give them a chance to. - var/mob/living/carbon/human/H = src - if((istype(turf,/turf/simulated/floor)) && (src.lastarea.has_gravity == 0) && !(istype(H.shoes, /obj/item/clothing/shoes/magboots) && (H.shoes.flags & NOSLIP))) - continue - - - else - if((istype(turf,/turf/simulated/floor)) && (src.lastarea.has_gravity == 0)) // No one else gets a chance. - continue - - - - /* - if(istype(turf,/turf/simulated/floor) && (src.flags & NOGRAV)) - continue - */ - + if(istype(turf,/turf/simulated/floor)) // Floors don't count if they don't have gravity + var/area/A = turf.loc + if(istype(A) && A.has_gravity == 0) + var/can_walk = 0 + + if(ishuman(src)) // Only humans can wear magboots, so we give them a chance to. + var/mob/living/carbon/human/H = src + if(istype(H.shoes, /obj/item/clothing/shoes/magboots) && (H.shoes.flags & NOSLIP)) + can_walk = 1 + + if(!can_walk) + continue dense_object++ break From d37b5a896f1d10306bd5f2d5690d1545d2240083 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 03:43:56 -0400 Subject: [PATCH 103/168] Gives the mercs two bloodpacks, which they seem to have been missing due to an oversight --- maps/exodus-2.dmm | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index b70ca1a11c..fa74e7fc1e 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -884,7 +884,7 @@ "qZ" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "ra" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "rb" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 4; start_pressure = 740.5},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"rc" = (/obj/structure/table,/obj/item/roller{pixel_y = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"rc" = (/obj/structure/table/rack,/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = -2; pixel_y = -2},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "rd" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "synd_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "re" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "rf" = (/obj/structure/table,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/signaler{pixel_y = 2},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) @@ -951,7 +951,7 @@ "so" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "sp" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "sq" = (/obj/machinery/door/window{dir = 1; name = "Surgery"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"sr" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"sr" = (/obj/structure/table,/obj/item/roller{pixel_y = 8},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "ss" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/storage/firstaid/toxin{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "st" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/fire{pixel_x = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "su" = (/obj/item/weapon/weldingtool,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) @@ -967,7 +967,7 @@ "sE" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/shuttle/floor,/area/supply/dock) "sF" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/plating,/area/supply/dock) "sG" = (/obj/structure/table,/obj/item/weapon/scalpel,/obj/item/weapon/circular_saw{pixel_y = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"sH" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"sH" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/iv_drip,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "sI" = (/obj/machinery/door_control{id = "syndieshutters_telebay"; name = "remote shutter control"; pixel_x = 0; pixel_y = -25; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "sJ" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "sK" = (/obj/item/weapon/crowbar,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) @@ -1944,7 +1944,7 @@ "Lt" = (/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50,/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "Lu" = (/turf/unsimulated/floor{tag = "icon-ironsand7"; icon_state = "ironsand7"},/turf/unsimulated/floor{tag = "icon-asteroid7"; name = "plating"; icon_state = "asteroid7"},/area/wizard_station) "Lv" = (/turf/unsimulated/floor{tag = "icon-ironsand12"; icon_state = "ironsand12"},/turf/unsimulated/floor{tag = "icon-asteroid2"; name = "plating"; icon_state = "asteroid2"},/area/wizard_station) -"Lw" = (/obj/structure/closet/secure_closet/medical_wall{pixel_y = 0; req_access = null; req_access_txt = "150"},/obj/item/weapon/surgicaldrill,/obj/item/clothing/gloves/latex,/obj/item/clothing/mask/surgical,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) +"Lw" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/syringe,/obj/item/clothing/mask/surgical,/obj/item/clothing/gloves/latex,/obj/item/weapon/surgicaldrill,/obj/structure/closet/secure_closet/medical_wall{pixel_x = 32; pixel_y = 0; req_access = null; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "Lx" = (/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "Ly" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/handcuffs,/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/night{pixel_x = -1; pixel_y = -3},/obj/item/clothing/glasses/night{pixel_x = -1; pixel_y = -3},/obj/item/clothing/glasses/night{pixel_x = -1; pixel_y = -3},/obj/item/clothing/glasses/night,/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "Lz" = (/turf/simulated/floor/holofloor{icon_state = "carpet7-3"; dir = 4},/area/holodeck/source_theatre) @@ -1972,7 +1972,6 @@ "LV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) "LW" = (/obj/structure/table/rack,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/grenade_launcher,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/rcd,/obj/item/rig_module/device/rcd,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/mounted/egun,/obj/item/rig_module/mounted/egun,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "LX" = (/obj/structure/table/reinforced,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) -"LY" = (/obj/structure/table/rack,/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = -2; pixel_y = -2},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "MA" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns12,/area/space) "MO" = (/obj/machinery/vending/cigarette{contraband = newlist(); premium = newlist(); prices = list(/obj/item/weapon/storage/fancy/cigarettes = 15, /obj/item/weapon/storage/box/matches = 1, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 20); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "MP" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) @@ -2144,8 +2143,8 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMmumumumuaMaMaMaMaMaMaMaMaMnHnQnRnRnSnRnRnLnHaMndnqnrnsntneneneihnonononuihbOkQbTihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMnHnZnRnRnRnRoanLnHaMndnenAnAnenenepaihnCnonDnEihbLkQmkihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHofnRnRognRnRohnHaMndneneneneneneriihihihihihihbPkQnGihmumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMomnHonnHnHnHnHnHooaMnTnananUihkdkdkdihkTkTnVnWihcikQLYihmumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHoGoyoaounFnHaMaMaMaMaMaMobkdkdkdoclalaododihcikQLYihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMomnHonnHnHnHnHnHooaMnTnananUihkdkdkdihkTkTnVnWihcikQrcihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHoGoyoaounFnHaMaMaMaMaMaMobkdkdkdoclalaododihcikQrcihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHoBoAoanRornHaMaMaMaMaMaMoikdkdkdihojlaihihihokolokihihihihmumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnvnHoBoyoanRornHnzaMaMmPmKoFihkdkdkdihihihihnOnOkQkQkQnPnPpKihihmumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnvnHnHnHnHvLoyoanRornHnHnHnHnzototihkdkdkdkdihnYnXkQkQkQkQkQkQkQkQqKihmumumumumumu @@ -2156,13 +2155,13 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVoVoVpdpepepepepfpfpepepepepgoVoVoVoVoNaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMmumumumuaMaMaMaMnHqanRnRnRqbnRnRnRqcnRnRnRqdnHmKmKmKmKaMaMaMaMmumumuihoEkQoEihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVoVpdpppqprpspeptpupepvpwpepepepgoVoVoNaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumumumumuaMaMaMaMnHqCnRnRnRqDnRnRnRqEnRnRnRqFnHaMaMaMaMaMaMaMaMaMmumuihoEkQoEihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVpdpepBpBpBpBpepCpCpepBpBpDpEpepepgoVpFpFpFpFpFaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumumumuaMaMaMaMnvnHnHnHnHnHnHnRnRnRnHnHnHnHnHnHnzaMaMaMaMaMmAaMmBmumuihoEkQoEihmumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUpdpepepMpNpOpPpepBpBpQpBpBpBpBpRpSpeoVpFpTpUpVpFpFpFpFpFpWpXpXpYpFpFaMaMaMaMaMaMaMaMpZpZpZpZpZpZpZpZpZpZpZaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumumumuaMaMaMaMnHqZrasercsvnHrenRnRnHrfrfrfrgrgnHaMaMaMaMaMmAmBmumumuihoEkQoEihmumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUpdpepepMpNpOpPpepBpBpQpBpBpBpBpRpSpeoVpFpTpUpVpFpFpFpFpFpWpXpXpYpFpFaMaMaMaMaMaMaMaMpZpZpZpZpZpZpZpZpZpZpZaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumumumuaMaMaMaMnHqZrasesrsvnHrenRnRnHrfrfrfrgrgnHaMaMaMaMaMmAmBmumumuihoEkQoEihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqeqfqgpBqhqhqhpepBpBpeqiqjqkqlqmqnpeoVpFqopUpUqpqqqrqsqtquqsqvqwqxpFpFpFpFpFpFpFpFpFpFqyqzqzqzqzqzqzqzqAqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumumuaMaMaMaMaMnxrjrjrjrjrjnHnRnRnRnHrenRnRnRrknwaMaMaMaMaMmPaMmumumuihihyxihihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqGqfpBpBpBpBpBpQpBpBpepepepepepepeqHqIpFpFpFpFpFqqqvqsqJOaqsqvqvqvqLqMqMqMqMqMqMqMqMqNqyqOqPqPqPqPqPqQqAqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumuaMaMaMaMaMaMnhrCrDrjrjrjrEnRnRnRrFnRnRnRrGrHmiaMaMaMaMaMmAmBmBmumumuihihihmumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqRpeqSpBqSpBqSpepBpBpBqTqUoVoVoVoVoVqVqWqMqMqMqLqvqvqvqvqvqvqvqvqvqLqMqMqMqMqMqMqMqMqNqyqXqYqYqYqYqYqXqAqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnyrjrjrjrjrjrQnRnRnRrRnRnRnRnRrSnBaMaMaMaMaMmAaMaMmBmumumumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVpepepepepepepepBpBrhpBqUoVoVoVoVoVqVqWqMqMqMqLqvqvqvqvqvqvqvqqqqpFpFpFpFpFpFpFpFpFpZqyqXqYqYqYqYqYqXpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsbrjrjrjscnHpzsdpznHoKoKsInRsfnHaMaMaMaMaMaMaMaMaMmumumumumumumumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUpdpermrnrormrppepBpBpBrqqUoVoVoVoVoVoVpFpFpFpFpFqvqvqsqJquqsqvrrrspFrtrururvpFrwrxrypZqzqXqYqYqYqYrzrApZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHspsqsrssstnHsunRvUnHyCnHnHnNnHnHaMaMaMaMaMaMaMmAaMmBmumumumumumumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqeqfrJrJrJrJrJpQpBpBpepepepepepepepgoVpFpTpUpVpFqvqvqsqJrKqsqvqqqqpFrLrLrLrLpFrMrxrNpZqzqXqYqYqYqYqYrOpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsGrjsHLwnHnHnRsJsKnHnHnHnRnRLxnHaMaMaMaMaMaMaMmAmBmBmumumumumumumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUpdpermrnrormrppepBpBpBrqqUoVoVoVoVoVoVpFpFpFpFpFqvqvqsqJquqsqvrrrspFrtrururvpFrwrxrypZqzqXqYqYqYqYrzrApZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHspsqsHssstnHsunRvUnHyCnHnHnNnHnHaMaMaMaMaMaMaMmAaMmBmumumumumumumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqeqfrJrJrJrJrJpQpBpBpepepepepepepepgoVpFpTpUpVpFqvqvqsqJrKqsqvqqqqpFrLrLrLrLpFrMrxrNpZqzqXqYqYqYqYqYrOpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsGrjLwnHnHnHnRsJsKnHnHnHnRnRLxnHaMaMaMaMaMaMaMmAmBmBmumumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqGqfrUrJrJrJrJpepBpBpBpBpBpepBrVrWpeoVpFqopUpUqpqvqvqvqvqvqvqvqvqvpFrLrXrYrYpFpFrZpFpZqzqXqYqYqYqYsaqXpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsWsXsYnHaMnHsZsZsZnHaMnHnLtatbnHaMaMaMaMaMaMaMmAaMmBaMmumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqRpepesgshshshpepBpNsipNpBpQpBsjskpeoVpFpFpFpFpFpFpFslpFpFpFqvqvqvsmrLsnsnrLrLrLrLrYpZqzqXqYqYqYqYqYrOpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsZsZsZnHaMomtmtntoooaMnHsZsZsZnHaMaMaMaMaMaMaMmAmBmBmBmBmBmumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVqRperJrJrJrJpepBsipNsipBpeqSpepeqHoVpFsxsyszpFsAsBsBsBsCpFqvqvqvqvrLrLrLrLsDrLrLrYpZqzqXqYqYqYqYsEsFpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMmumuaMaMaMomtmtntoooaMaMaMaMaMaMaMomtmtntoooaMaMaMaMaMaMaMmAaMmBaMmBaMaMmumumumumumumumumumumu From bbae1a49e5f479343098fc3fd9316ff81c06656a Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Mon, 9 Mar 2015 09:04:22 +0000 Subject: [PATCH 104/168] Fixes vines spreading through doors --- code/modules/hydroponics/spreading/spreading_growth.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/hydroponics/spreading/spreading_growth.dm b/code/modules/hydroponics/spreading/spreading_growth.dm index 804ec8f08a..257d2219ba 100644 --- a/code/modules/hydroponics/spreading/spreading_growth.dm +++ b/code/modules/hydroponics/spreading/spreading_growth.dm @@ -20,7 +20,7 @@ if(!isnull(seed.chems["pacid"])) spawn(rand(5,25)) floor.ex_act(3) continue - if(!Adjacent(floor)) + if(!Adjacent(floor) || !floor.Enter(src)) continue neighbors |= floor // Update all of our friends. From 54971c1bf50d3e597616e75001612f7d9ee1ce51 Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Mon, 9 Mar 2015 20:29:47 +1300 Subject: [PATCH 105/168] Projectile effects - Part 1 - Added base projectile effects framework - Added vector movement helper - Added temporary effect sprites --- baystation12.dme | 2 + code/__HELPERS/vector.dm | 141 ++++++++++++++++++++++++++++ code/modules/projectiles/effects.dm | 126 +++++++++++++++++++++++++ icons/effects/projectiles.dmi | Bin 0 -> 32589 bytes 4 files changed, 269 insertions(+) create mode 100644 code/__HELPERS/vector.dm create mode 100644 code/modules/projectiles/effects.dm create mode 100644 icons/effects/projectiles.dmi diff --git a/baystation12.dme b/baystation12.dme index a8ceac79f0..1a0581e49b 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -31,6 +31,7 @@ #include "code\__HELPERS\turfs.dm" #include "code\__HELPERS\type2type.dm" #include "code\__HELPERS\unsorted.dm" +#include "code\__HELPERS\vector.dm" #include "code\_onclick\adjacent.dm" #include "code\_onclick\ai.dm" #include "code\_onclick\click.dm" @@ -1345,6 +1346,7 @@ #include "code\modules\power\singularity\particle_accelerator\particle_emitter.dm" #include "code\modules\power\singularity\particle_accelerator\particle_power.dm" #include "code\modules\projectiles\ammunition.dm" +#include "code\modules\projectiles\effects.dm" #include "code\modules\projectiles\gun.dm" #include "code\modules\projectiles\projectile.dm" #include "code\modules\projectiles\targeting.dm" diff --git a/code/__HELPERS/vector.dm b/code/__HELPERS/vector.dm new file mode 100644 index 0000000000..970530e71d --- /dev/null +++ b/code/__HELPERS/vector.dm @@ -0,0 +1,141 @@ +/* +plot_vector is a helper datum for plotting a path in a straight line towards a target turf. +This datum converts from world space (turf.x and turf.y) to pixel space, which the datum keeps track of itself. This +should work with any size turfs (i.e. 32x32, 64x64) as it references world.icon_size (note: not actually tested with +anything other than 32x32 turfs). + +setup() + This should be called after creating a new instance of a plot_vector datum. + This does the initial setup and calculations. Since we are travelling in a straight line we only need to calculate + the vector and x/y steps once. x/y steps are capped to 1 full turf, whichever is further. If we are travelling along + the y axis each step will be +/- 1 y, and the x movement reduced based on the angle (tangent calculation). After + this every subsequent step will be incremented based on these calculations. + Inputs: + source - the turf the object is starting from + target - the target turf the object is travelling towards + xo - starting pixel_x offset, typically won't be needed, but included in case someone has a need for it later + yo - same as xo, but for the y_pixel offset + +increment() + Adds the offset to the current location - incrementing it by one step along the vector. + +return_angle() + Returns the direction (angle in degrees) the object is travelling in. + + (N) + 90° + ^ + | + (W) 180° <--+--> 0° (E) + | + v + -90° + (S) + +return_hypotenuse() + Returns the distance of travel for each step of the vector, relative to each full step of movement. 1 is a full turf + length. Currently used as a multiplier for scaling effects that should be contiguous, like laser beams. + +return_location() + Returns a vector_loc datum containing the current location data of the object (see /datum/vector_loc). This includes + the turf it currently should be at, as well as the pixel offset from the centre of that turf. Typically increment() + would be called before this if you are going to move an object based on it's vector data. +*/ + +/datum/plot_vector + var/turf/source + var/turf/target + var/angle = 0 // direction of travel in degrees + var/loc_x = 0 // in pixels from the left edge of the map + var/loc_y = 0 // in pixels from the bottom edge of the map + var/loc_z = 0 // loc z is in world space coordinates (i.e. z level) - we don't care about measuring pixels for this + var/offset_x = 0 // distance to increment each step + var/offset_y = 0 + +/datum/plot_vector/proc/setup(var/turf/S, var/turf/T, var/xo = 0, var/yo = 0) + source = S + target = T + + if(!istype(source)) + source = get_turf(source) + if(!istype(target)) + target = get_turf(target) + + if(!istype(source) || !istype(target)) + return + + // convert coordinates to pixel space (default is 32px/turf, 8160px across for a size 255 map) + loc_x = source.x * world.icon_size + xo + loc_y = source.y * world.icon_size + yo + loc_z = source.z + + // calculate initial x and y difference + var/dx = target.x - source.x + var/dy = target.y - source.y + + // if we aren't moving anywhere; quit now + if(dx == 0 && dy == 0) + return + + // calculate the angle + angle = Atan2(dx, dy) + + // and some rounding to stop the increments jumping whole turfs - because byond favours certain angles + if(angle > -135 && angle < 45) + angle = Ceiling(angle) + else + angle = Floor(angle) + + // calculate the offset per increment step + if(abs(angle) in list(0, 45, 90, 135, 180)) // check if the angle is a cardinal + if(abs(angle) in list(0, 45, 135, 180)) // if so we can skip the trigonometry and set these to absolutes as + offset_x = sign(dx) // they will always be a full step in one or more directions + if(abs(angle) in list(45, 90, 135)) + offset_y = sign(dy) + else if(abs(dy) > abs(dx)) + offset_x = Cot(abs(angle)) // otherwise set the offsets + offset_y = sign(dy) + else + offset_x = sign(dx) + offset_y = Tan(angle) + if(dx < 0) + offset_y = -offset_y + + // multiply the offset by the turf pixel size + offset_x *= world.icon_size + offset_y *= world.icon_size + +/datum/plot_vector/proc/increment() + loc_x += offset_x + loc_y += offset_y + +/datum/plot_vector/proc/return_angle() + return angle + +/datum/plot_vector/proc/return_hypotenuse() + return sqrt(((offset_x / 32) ** 2) + ((offset_y / 32) ** 2)) + +/datum/plot_vector/proc/return_location(var/datum/vector_loc/data) + if(!data) + data = new() + data.loc = locate(round(loc_x / world.icon_size), round(loc_y / world.icon_size), loc_z) + if(!data.loc) + return + data.pixel_x = loc_x - (data.loc.x * world.icon_size) + data.pixel_y = loc_y - (data.loc.y * world.icon_size) + return data + +/* +vector_loc is a helper datum for returning precise location data from plot_vector. It includes the turf the object is in +as well as the pixel offsets. + +return_turf() + Returns the turf the object should be currently located in. +*/ +/datum/vector_loc + var/turf/loc + var/pixel_x + var/pixel_y + +/datum/vector_loc/proc/return_turf() + return loc diff --git a/code/modules/projectiles/effects.dm b/code/modules/projectiles/effects.dm new file mode 100644 index 0000000000..066f4cf55d --- /dev/null +++ b/code/modules/projectiles/effects.dm @@ -0,0 +1,126 @@ +/obj/effect/projectile + icon = 'icons/effects/projectiles.dmi' + icon_state = "bolt" + layer = 20 + +/obj/effect/projectile/New(var/turf/location) + if(istype(location)) + loc = location + +/obj/effect/projectile/proc/set_transform(var/matrix/M) + if(istype(M)) + transform = M + +/obj/effect/projectile/proc/activate() + spawn(3) + delete() //see effect_system.dm - sets loc to null and lets GC handle removing these effects + + return + +//---------------------------- +// Laser beam +//---------------------------- +/obj/effect/projectile/laser/tracer + icon_state = "beam" + +/obj/effect/projectile/laser/muzzle + icon_state = "muzzle_laser" + +/obj/effect/projectile/laser/impact + icon_state = "impact_laser" + +//---------------------------- +// Blue laser beam +//---------------------------- +/obj/effect/projectile/laser_blue/tracer + icon_state = "beam_blue" + +/obj/effect/projectile/laser_blue/muzzle + icon_state = "muzzle_blue" + +/obj/effect/projectile/laser_blue/impact + icon_state = "impact_blue" + +//---------------------------- +// Omni laser beam +//---------------------------- +/obj/effect/projectile/laser_omni/tracer + icon_state = "beam_omni" + +/obj/effect/projectile/laser_omni/muzzle + icon_state = "muzzle_omni" + +/obj/effect/projectile/laser_omni/impact + icon_state = "impact_omni" + +//---------------------------- +// Xray laser beam +//---------------------------- +/obj/effect/projectile/xray/tracer + icon_state = "xray" + +/obj/effect/projectile/xray/muzzle + icon_state = "muzzle_xray" + +/obj/effect/projectile/xray/impact + icon_state = "impact_xray" + +//---------------------------- +// Heavy laser beam +//---------------------------- +/obj/effect/projectile/laser_heavy/tracer + icon_state = "beam_heavy" + +/obj/effect/projectile/laser_heavy/muzzle + icon_state = "muzzle_beam_heavy" + +/obj/effect/projectile/laser_heavy/impact + icon_state = "impact_beam_heavy" + +//---------------------------- +// Pulse laser beam +//---------------------------- +/obj/effect/projectile/laser_pulse/tracer + icon_state = "u_laser" + +/obj/effect/projectile/laser_pulse/muzzle + icon_state = "muzzle_u_laser" + +/obj/effect/projectile/laser_pulse/impact + icon_state = "impact_u_laser" + +//---------------------------- +// Pulse muzzle effect only +//---------------------------- +/obj/effect/projectile/pulse/muzzle + icon_state = "muzzle_pulse" + +//---------------------------- +// Emitter beam +//---------------------------- +/obj/effect/projectile/emitter/tracer + icon_state = "emitter" + +/obj/effect/projectile/emitter/muzzle + icon_state = "muzzle_emitter" + +/obj/effect/projectile/emitter/impact + icon_state = "impact_emitter" + +//---------------------------- +// Stun beam +//---------------------------- +/obj/effect/projectile/stun/tracer + icon_state = "stun" + +/obj/effect/projectile/stun/muzzle + icon_state = "muzzle_stun" + +/obj/effect/projectile/stun/impact + icon_state = "impact_stun" + +//---------------------------- +// Bullet +//---------------------------- +/obj/effect/projectile/bullet/muzzle + icon_state = "muzzle_bullet" diff --git a/icons/effects/projectiles.dmi b/icons/effects/projectiles.dmi new file mode 100644 index 0000000000000000000000000000000000000000..a2a85dd1b362a8180d58a8187cef780751dc4060 GIT binary patch literal 32589 zcmV)^K!CrAP)(00035dQ@0+L}hbh za%pgMX>V=-0C=30(@jppFc1acwS9_FyG4i=w%MRmRTk|PqA?kWB|DD%Q`(-siy8!r z!s{-PzVUmK$4h$MY`Zfy(z5%%c$j+4ZHvGp^*We^`D zpU`;7)^y0GTqZOevNilKt6T{4?y+H~Z40P17Vz_jGTeK-+s8L3R*DozZaz83YC8 z`<>s6jyjGr^L6y=j)VJ*s5l6yD2Qw&p=Bx10&QB_v~*3{G<$CD`dQBT{*j~hoD|0l>w?(R?kE#FN3QS!rIfCD5F z2|3aG2iDAx#E+hR!}XtR`IC*7mW~tJ-+%K@CGoGj-uU|e*Ilar=AWKWhvRj7Yx3hV z(NiqCIVn*aN%|dDa(9Qcv~n8jiKy_@YrF)$EOKppAq^uO`REe;RSiF?N=J0CHZ-Q=lS=`7E9ppQ>NwWFH6}{OWbPT z^uOslrlP4sabGC|9w*f8v~IyZa!o?!FG8BuzEhF9(f+_^wy1-8u{c*sh}mB7)Ry_8G zXwboM!_7K)bJAMWp0qkcZ#S!w7f9k$AAQaCCqDI2wJLdmbcWt;7PTj>;LS-Z+;Fp| zK?gndh7K*Pm7TXesY=fOxShB^sb)P9lY3VgRZ)?)-n08*^H-m}n~L*Y+Q0g+e*7QW zOes4XdjoCN=4a)H{Qs*F4R8VMZuvEj4Cw*P~p7ks7K z;z(~G`2S$GczAH+wS#pLCpMEnoBU2I`apMEEcmIp|_Ghj$vo6na*4^)> z{p(j7faLBDIV~OFv*(^^J-nn?Tc1{n=fq}dRg4!8#j#3k$|9BYruNVn46tRchySEY zYl(Z$BfoPm`TALY`@OH9e3LDIvXQ)Xt2Ow;Z)rQYODQL2$3ofIKp_y1qwJ97R_6S` z9-Dk1(AeY+?CW*o@wEGQ@BXO!neS}&JKFy3b=lvN{G|NzHOs9p{`8xHbUGfWXsiyn z`}W!%VK-vA%>_TupGJE{6;39Vi)4zgv<$zk@ZP-g3VGzduZJ{K++mK^R#?&Et{>jK zqprM74_x}ZggGdAY~9iJ^JDs*whl0*>P;#-Ut9H`G>U06ONn&FNCj$WnzDp}p(iM* z2y@`jQAz_IfteW&93AaDJk#Crj(>T{xYrS;oNW1%jqpDwRr5kDz8+T|pxP7_ zj^tw=mK`hcr}!h}Rh+X6Y3sSX=$?3)<>b=ds9GB==*KdFV9tt$%EA}opUZK6Zw-dG;0|87-`nTu+$_f8>H*}}}`b!6NK z(c&{0IZ{kj@pO*nbb9sk>D1Xpe&oSbRwD6>6VCMilH^Y|5{Ew`XRMzas`y4QRx!n{ z85qq?DGI2TP%Z25h*&W>qcEb2W8zNFW9tKrqv`yNv~L}`$x1x;uH)^0O+7*4xp#?m z)BQI{FI{FNUNBf9hq$znY{|}c9`rAHtr8!dhPTBI9 zf!X^^+qyH&gp3J!ZEfu)nM_Cx&;sfq(32_uAKTjfKWBZv63N{i(l)Eb0QAhbOwMi0 zhbsbBWWe=HDgs_3!9Wv1=299cA}TcuyB%(~zbz2(o+-G2zR;TK+TZkIZuklGC+?^; z&&)4lhZCc%`H#;7l0WQ_why+L`F74`6d`4ut30P(B-rUCEl)zMT#C`B+bSYP;)YdQG|m03?!0;UAPxBsMWqOt!9?=3G7L=sc!OJ)5FAwS-EFDflk? z?)wdL^kJ0U#q?<@_P&tuIzHt8*tx`9@Z{I@_S88P<>JgbaHlCXPqU%D-6WDpF~Fm3 zCmx?qw*1LPOY-xgcuK&t!7nb0M5|41q+TMSdDN)0X)dm%*e*sZmxp?PQy6t0R?row zSE-?cUZ(84E4>fZ8vTX!LG!bKVex-n^C#Q6^_{nii4ODEuJHG*j{M+=F!bP^s;u4) zxd(NThPq%pa4zRoU4idMW!NpaFQoE;lpZqmp|FJQu<_}q){gSj$ZdYwdQk9>I0T6V za^z|>Pn{q*G3gF)_rZju-g6n>e{#U)(DoQ9yOwCK30*pm$|Xq}FP%fp+)}!?=6LZx z?McY!8K^y9pOEnGu!FW4wwP1@CC9t#`ifq1QFuU_=-c_9s}Dm|XutP?6V~;lJHYVbFUk4qAF;wOW@E&uAzVD0SZpq3XRKn*J64*h z$y$ujvhAxo7|AQcymzE`tcq_H!R}CbRyR=}X1CVARr1CSd^G^Co@QTpA5_Snu zHKhVCJ%e!hJc?$lV%8;#n7XFcv!ew39LzYsmO!bHH(_iQCSy7nJ!%LPJX-uPYf3`c zMVf(Z8ZT{8{A;jFV)Sd5hKysDno$|5iZWk2L`|N0G&uf>(7oPd$_FOZ0fuiKm8e6g zLUcvWFe4O`dDO*MapAN@TySQsG(_P*4lbNoOYtG$@qw_VGGR*xItoLs_K>_LrQ;0Q zp^(aw54nEs&L$}?N>8wQt23h!W3e~Gbyf_%k(Q2GWC*~ShlOsAYnyua|PP+2uF(;>77E? z<8??VMLN<$k?UendcxalSUjyb}!DVrI&DB@OPl~xjKm}#aisK^H` zKa3WPjlqBwMJkq6nX37gj2^9F+KM^~zQ#`(ED-`lHo4I}z8xhLwW!}Ugws39(6&yd z6o%1mFJXTd52l}CSzVaLUWoK)j%QPuNtOTaZ%|#IB-~t??U0E&n98!SRY`qxCQB+S zSYZ3~Xz@)LltzjosFjPWSkh$iPog(6djP`RF2_mIoOdbdZu$?rFfQi>c^B1k0X*Kp%*=avzwZ;pH z=l;&e1v~?Jj|uX_xC2a(ziad6ud#VE0Ch!d8k}2vCP4YpS(^Y@eiDjre#PSiIycjG z>m8Q^m)9*{eq-XMn{H_T@|V9(lVhkX_>6{KunPo=0^$_~ZETIPjfkKnqXa?xkZ27O zuL~ll)UBO5yW*}#4e#Il0j)r2t}l>gg|H^1G~D(9)yzkFy|GYL1ynW=p`9; zK0ZoQWOC*I-;=4-HxAx4+e{wE52IXcRUm2yu*-rJ0@|~K#^{$2(Koh`IMU<5UsHwGdW2Jaj&;-1IsBi&v0fHf;b3VQo zfI`@alQk+gG7`+Db8aDRnarr7TMMb2!opA-HtlD9^<~a!!&qyaxap=F>Xt9R@%SE~ zd}nHm_&dkh{Il0*SKWKxemC3qJ~AN_fTOr3Fj+d)(k{kM;4~U=KTo`$)MqT34V=5b)r{J1$=%9Bk_dmKCAc3ajSgXt1R$ z#9Ph^P#+hsTNzvOB3LNP0Y`fbq&@T4&VG6R@JMjjGx|Up)^}NiBO1>&?LWKsRXx+O zA0D_ zU|`E3hF|QYzxzdExjqK+hj4Nult&H2jziAQ(p)R_rCm(FhwWNqlu$e~Ks4(!q+Dzb z)BCl0)HPf@$?~swd(RtE*C&aJ&L{lAEyKB(lj}*NcNL{|j0bzmsedM>&R9?!@G$`Y@Yo#6w)CzUBx)>&kG3pk}Nky@XFJALwTi|W=ay$6lnwNE>hyEIdTaFu}=P_jyq*Jj7k zO_M6Wea&@m`E%9vi7=9wDVIgRmL*U+;<+P7{86*p>do2wU^k4oA@kO=D+8`&@xq}D z+eUlXGQ2S}OFQ*??sI&5U?0d3Z;5Nr$X-#Z{XhWn-0&6-i)%|=xq zT4n|8A^a@y6UwpP|Ni&C9z9<-&S+?qY1W8Y{(QNn(s3z``yA}DDG3gfKWxd+iw;T| zoB@yFjsd*E-SlP-6PubMr~8PNrr330n6kz+72SpO`3(h%UUaM-p2L+peHQeYktWwX z{w{D!G1X6389scu=7;y`_U_sKWXqq_$_EY=T_vNgXBwU<(#FfXfspn`N0l8i?l4Ev zmh3#};Ex)HvmQH!`WbXPOt%CX8(WjJ9V@92V^m_%}zrR9t42DgK9pS9%7V}WwUZX{_87Ej$W3tXj!Bm`g zrTI{;;k~aAG3hJ8mn0Liid{Uo;=7Xn(k&8xvCbyCyNIFUslqU$mQKGNJhQ|7F_Fyz~!#DU&UK zvXOkQL-_3;%nJ)-z+5dAqj7s+BwZ9ISQ`p3HRrn3k;YgHwiR}FXCDjH2I|cbce_Lw zG&v5)jIz;z1KNpV^iyqjow6RSC3&S(%ur$u35RY6FX%qwYwcF|tk^-=q)a z_QwMf(3TY;M3pKFhD?-d8Sy*v-Tqd>=4r`GPiW0_&)@W-yYYdxSIti*-2o<$*i$R~ zdX6w3m|qp7tFHu0V$|0+Go10LDn1LTEM;)#ou*c$q&FNP81AL}zzC~myI*RY>HhC) ze`~l0)8784Z#tW7`IC*hhxbY8=RYNoqMTfCkYEYuSVct7G&yml$gH9~Tv9lY{{=yJ zG~@>&gjL@_hLMUo-|4@3NnpOy}Z5|hSrj!Kw_J>V|R$L@MxCiA14^P!R0+<}bg_J@jo8bntQg{$`}Kin6* zI+`9Xn7(MaGn_#ma?;j)mZbx^5o=eFd?wU5Jv(s3_=QNy`o+)gQZ30(zH~NYR*N|; zzog>Tht&tqi>c~s!u~UVzsdW>wjUhD%I;y>VD!5GdVKq6Q_mqDUsmIPV5yoFb@b00 zoATfLG@57E(B9r|)~!2nE}y>?`IC+7w*H$+-f_9&ws-jhAL#O~f9s`3^O!xuj6^TI z?)vQqiZX}luDY>iuo_cZYOzw3x`^ z%jo<}ueob+-kE;)4QAxhhg98FH`W{|%5+_L-Syjt8HwgGd#=Ce;+~<)2fe@}H+hnM zv$wfomgn8%^oIhWz7fA@PhgJNn#Q4_?!CE+D=N*-1>)bB`=-EV89RJGhSO#aa3ZYz zQBujJ^A&TuwYd#s&D-MK`Qv>1yB~BC``;ELkb~Q^xz=B|n}gHV@`InYn?xcZrz*lS z+43hF^OIMqs*1EKROdA>ln^?KXt0zX+W(OWObS zn;K4Y2S_B7!u#OA^EXNLISJEx`(?s+X4%Z>b6GqLKcA+Eoh8h<%Wr@5kyB2($(BFa zm`FPH%gYu^VEHt2$!9l6#nOYeTkX54`xjEt)S*~XDg)k--|>l4JNIe%N>VE9GK=Si z&A{FkU3~sF0=-sX;Mscbp3ki@?&fZ};@8g`SPcDF(9zLiUY)#arz#X_dGZ%+9-KIN z*W|AQ`~kF&A0gb7+|1W*zf{`V+H_(;s|yhkjIaW23_$V!NcoeEj`S3NuUUdHz5WoKVQ!YCmg@Kzt?^pg3XhLPbd%Z~)`EJKo|I@sG zcZVwf><`SWwmS_#3u8mBiEMF-D%weyb=?sMiPmnOh&Y2 zvgJ=UCeoL*d^7pFqdk8rCS?9e=~nK1NZPJE_Ydm%7v%uQBk_y>E$wgp(xj1avgJ=U zPA2vEWXn1kXZeeCfOQ9xwt5eKl69=V>k-(3q8WvUrW{Qk;_r&lBu#w1{hP1*OKNRS zs`Yzby^8opKUbZU^}YWydy0;&N!7CGPp^~H4X0%o^hCHRaig?0B-Off(xw#4Jdd^h z-bXCD2vAKJ4;vc+6vbE>osn(b+W=VCo0K;tPMjY5q>w)O6HcwoNd?f_@IROQ0RI!n z52tYtuPU3Pn$N4?nB+I z-}{&65Q(*Gr2WwiuhP47XHu@d`aEgh@TtFOM>uVxK++6mKVmvD>_FD-NGhV(86JjS4wENN9R>%@4m{!nOg%pNKb`!oE0SvcGvkCGL;F+@?_x*PNyj3EG*N^AGeC$m0eaB%Kx@mG-1j8j{TH!P91SOB+g59w{GShkw!s^L^8`YNF=&K-6j=;W!q^zHcob90 zFkWU$#-#zD{Y3D{P>fKFA%#Mt>4ny*Ng+iHh@u#v8DamJBeqUW%KGsTYHM>+*6%s} zhDBX_lWJ}YX8t^6#|xOmns3G73mSQ}Fm^|M2<8iPN@DFk122G?tw8I(-ftRs+bPv& z%^FV`YSxbcSL}J;|_V#VBsUA<;9>6?DfSrWdOAM$aPbHc+hOY7g57f zY^s15HoYhYiK7`NL@y#|V}h63W0Tb3q^ukKJwu=7mz-pMy3LRu??HkD$Pz;n!)6ZP zVsjyi={S^PQ$-IE;snVO1&XkFH$hsk*=wFAlG&080yY{GS{Zzq+|#l32S}{#R;XJg z61_Zt*uRr9niz63xdT&C2X4=J_pLn5KFL?ReSBs}X?_9UF>*keKxiE!ZfYp2Z+Xx#%z zp$>Qw3x^Bm76hp>s9@_IYfNFALXlhe@d&(>eBo5C6Nn5MV}jE_$DwMuG5NDsuh#pu?wXb1y;7y@ZU|K-67GmGcVB5t*oE+|6J?(^4j^v^(}kjk05(zbl%uIZF`YQ` z>}B?OWi!j>mzI~6y->8M z$RFJ@swhRFNCAg{wcKk)JeXWXs4K zQ+clg9b1#qvS>Vu_1aB>*#xGy40%fl`c{q9RARDCVAn(OK~UwGgWHhmZfFU^GeM{s z4utMCiPcvNQZ4Np{#F0gJE7x+6UzbE(>c}~H_!gV-_JScgcTG=AUIF!$T=c|^-wlX zsjhz!$p%3=S~u2f?f<7zyw4b4LnsB&lv0^8FqNPp#vFdDNa_BS*Vh%9;F01mTCDoYk9rItF5o6V%sM{qeT#ZqlscCoA7?r>#z zb$&SiZ$KX&V|gjFKoHgspMFE0mPKtQ9!<*f<(H4;cayWnv%J;M!KCLw>DiFIf9&q5 zZ^d-{2EyHAuWN=dJ6t5J03Y==!TcL7^O9=sK1^cmInw^g5yvqmbe+~CH$nM5 ziA2DHOoP?|Ba*KaDc%V2CSyiJFnT1Bh{f~yycZ6iSvV~mVBO)QVlOrhF+3`;sRQbX z(;QeDxNy$OS)hDp^T zUK;uXm`)%5TOnT&yKKjFVpm+{wE zZQL0CKEQ?zq3k*5G#+~Fv25p8STPBF%rrBv73jOjz` zS)EGlcn{3oE^?sSn0=MTG|hrpMkF|7j5{kF4(DLU!AW<3&nG@7d>IRm2#Qi{YKSr& zn5&kmbxmh9F1W$|guO~u0T7oMtLx4VZL*(QIA9F~y$&x#3LDr*iWFJ289W8aSpn2| zbO$0p00@N2$kpA@(HXu7qs6 z*7eUD6P~4Yb%imxzZLN;W1>$hl^+Gm0~v*=GwBYn{*Ffkj{pz{Do{+rW`cA{!p-^~uR8h@^)Fy==8lw%ROg0rExJc<#;2Dk9TMZ&b%kWlBcV3; zb?KIFGp+HY#>N6_2(zlHtU9@-YIVfM=7WI`GM@z$QACaV=+m5@=M63A+oZ)RiwPkf)>-)18jlESWaDhgC>tTjx z03gwMuw*f42bn(uqct+O79AEO8;1OIz!W6D8?yzj zUWRv2O-#4(DaKU}>!{~wmsdF|@ev+IB)kO0b8ug*XCN_*Pd!`mSEyVa}n zSFK*1Pl#|pDK+T(o#$Fsey!H^-%+Zs81}A&*bodK0G$#kcOW1ld`D~Z9W^iZ?yc@A?^)?=HfmxG(#k zfV;+@Uu9XH-}C+1w~W7Lg7n9c|Js)m`c>skILO}s35YXZ-kHFdgP7YYAs9!BXTDTK z^Gw8cK^sH~)KrXZ3JDj%#^;bTZi3Dykf}ia5ZD4v5Sb6C5zOBG;Ej%r9@o}jy3&S* zzX2+g%KnYh*LPc1?E9YA{NQ7cS?z1r#%m$>SH=_$22MkVj~DuR8gQnRH9@|1|Od-Y%yOk|M%J5L%Xj-^P*HSWL*4X0YVMypLvP= z6D^?c&;A@QwScz(TYzQ2wGhX$w&44-uRc!8W7i;k3$SH;81Wy+ImDS`_rU-)0z~=&y%QLPuremR9Q1cUwrt!O{w{zG zAO0g0eS=|NGq!jtZzisgy{7z}Sydj1R>v6hT6`xD+T5B1jd}sgz48i>wrb zLjeyDt$ZZlBbJW}7?f)eZ_Eiq8^j0EV~zbQoWK|n5G7jKqKOGqn+OX`9W|5@#Uo4* z4-bXHVDODke*CYCLweXB?nPtapiB-qcB{f1PyR6!UeyAM?5bBvt_9HA+-uC7gT6l- zVA=S!i^pHzBC@$&DY@47XWz1Vb^bq&D{q|qTr0BqUSsCOl^RJH6UO(W2gjWRXub)l z_A%*~hKr(u(36L$6N^UU3tBc94H6FnrAYrU60|V+@z2^(B<#Rt*MicRUJvRPLQl7^ z=bQ)o({P}mtipS>AH72x`y(Q|?lor4wZ_cBvN{36zCXJib}DGRmN9aV_gaN(SFawE zWLcfpPSg!!y&zi4{l?5X;`_6{2W}H&i$%PZ5XKl80E1HduhF{k+sEh!-+fKIJ!KeM zx%IIr06FqF-izL@T@9TxH`KL<8>B%14CdH|$`VQ#W|#+fkh}ed^z$+(4q%L#@Rl)> zi@0O|#LBL;F>`>fgX09hT4dK-l#+{~^JNMi*Ar|q zX3m*f@8TswA1m)I#>}}`WY@hLHY~nm_3HfFv~KvxaYLi4#%`?hFMEBkieU&zJ{VL3ssH3W@iBD+$?%(-^lNe+(NHcobPuQ79e z#n@bFi|^0IvR?ci?8BG<#zYYrLF>}zM5=ef;9o&JWlYUR%gTNwk!Vrv?R&J%=FKPC z7WU^uC7L`gc`|4Qapp0j3`%n7bwB@rUHxHuFTWt7L*$WIHm`7iF; zQ^;ouEc{u`b>}P$BzefODEU6KpMvDp`iN>tYR(_g`OD~Z+ zGmS%XfO%#CQDWrD^AwxRNZ*K0mJALK;2m>>--B1QfLFJ-FZ%w(BzVJy#S>(mAjmDi zmhpMPqVY-YHds9InF-<_SKe3|j75Hij*BjB+PE>iEwPp$4BODq1NuVf*$so`P#PQa z@8;$4+F{y7L8w;5H?Qn3rQmRv% ztwF_+pCDOR`!(+t8MdK@v0=^ZEsXD?n{ZNC{QX2?>s7u#=X=N1)vtVi_Hp-&&5g!~ zNLL$UR#?{2YmBLS5h|)g++LBrE#UQvxLu$eW9)?@BR#;V-Ii`^Jqen=VQ8J3RHg?P z$N>F75D3yqth=nc`bTH{sJSRm6lh@~Awmo?$bIIw=2xS?@_P>S3>FR)w#gtbU^qgI z3{g6X@a(+mdHqH4BJ;7vk7X%c-^2Yg|Ckgs-O4j)DuK8RVr18JR) z-r9@Ioq`!o!_FRvyU;%XJdVi%gNHzMBk>qGLlE~N`bF65K>Xi<5_sTIOr;j{rXfST zT10IVnbt1ceE_bR(C7P{0KPwalVx?{`?GJ^uwn5>#_T^9(w%sIsqfFZ!Ls5%2JY2* z(6_ApAJKZw{m>Z$zsZ=YA*BKx5V#%ee(0}CB#e7noCsUjl~i;Q!lM|6N?IpMj zEl}spIcxTUk40~=mav5V?B|Ex5A-t!H|K`73_Z+V+Q_mCIErEb7yz=5B->6&rsCFk z(!wT=M;$ijsF?atV`by=pai9BsHcH4+yX&%!XiI}}PS(^DbVJjY->2K}sgo6!WgUf(_WBI%-};{cOlU<<|!9>t3hAo z0<>?u-z3(2CxBdU?!D(64RGQ z&MP%AO{6DgOxPCDGeFx~&-k^7xWi6Q&M8?dh=<0vOvc9HxK`c#LgK z^KeN~a5uTXJvwl7MYyOqipLv{@WyCC-z>^yS%I6xLd zJs$l)4~AlVviM{H56ynknUT!lOfXYH5TB_`K{JSr4Orx{0Glv23XO+eH=LA5O8@jq zzhdp>!cG)vEP{ma2m*t6JV%tb;cyU-Ehr*D9~v8v3ScfC&ti`S-GOOnvS|8=Vp{E_ z93Kff9ZrNfUYnWP0Ex9vkDrz3aL1yjrH5gE8dLYu&z?&8GGK7*MRXXM8^Y`zi~Y;T zJj^F0v9^)+NB5b$)20s|OseZH`Dsss^~PAwiv+iUw*g|qP^wQK2dD?q2o9Qh z3iJRD77D>8PcK8{8Ki>ggeYb+_hS>nB@K)c#vUiCMG(axieAh*J1LK}oIJ@|qe%%# zP)H*vLU?F2eFV`!3l4|zco?W7$_}z*2@)Q6iX+%8!DACPVH}R4u*i-bpIo0lHS>}; z0_~5kG=QI2{cj2$A3!duMppI1a5JQSi%EAw@LVL`fHbVfJY*xQ6tXM?%R->j$U9yZ z?`m1prrS53BK_I}g+!vqK<{}c<^wB^Xk3ND7qdA1feLw(@T_`d{$&T+RwOZ@P58aPrvRnTXBW>C@ z-er(wy~t&G%ro0DhxZ`SYH0fjCVd;GXEt(G2HrISFwl2H3X})?fx1(sNg|PxwQKWg z?OMlLyS5PY{W_&}eTOl2+8Apk$PAIP+c$2U@gL7TQy77+DPZ*~Wvy>--{3)^3yL;C z@%13T6B(|8fisO!b0J?0r`eIn^-kMZEWQh9z@wZz#iURS5#}H;h(n4zkKoaVN0cBI zHV4PaIf{n>K~fm9NMM>R>mK;yNwHd+lVdr4ih(8!HV)00%$AHYo2dc1C}lgED4IRQ z>7f#jLB_URfJYPkj17tQ5XWZhpni^;V@@q-l^av^GEUafN=rkNi_F zY&?qTIRI0m07$eO^Ya>jr=PlExT5l64^kSl6&O4Gaw?8P8e^e#i5LUMSW09xB+}&p z`$dlKQOf061r^Fs!Y(B|Hs~Y$Jtd~ci-Q&_c`ab>6#hMsEjH?LIoiN0)eEV z*aqSfT)+vzA<64BCvl3CJfGN(pV%pHiWA$9<2+CD#x1sEYzJ&iaiNT4im5_?s6ut5 znbGue+c{_N_55*1LKrYbG7@?9`)B6fx%cdK)~t2*T6?ekTbeV*K6a?|LL|QvS{{V6 z?id@p{x4OBKcZTF0#H>SZQ4{dCzJyK+;L%#(hGNV^ynR{dJ^VSW(8$B7$jf_m?UPL z3ipz-k6MCSU_PUCFh-U#DUJz@eh-t}pTfeQKIZK^di?D>di3f|SIO-MdTJYI6_ls( zcrw7~?NdDm83WoWVi*9b9H`|QEXFgRNlK)JHH8vQj5EOmc`PYaVybjd+w?OiO`Na} z05CMt5lDph~7vreLOOy4lfs@w+~Gpa#_Z&Tpdu{yxIQLF*j{$ zv@jk*Umk`%bWCjC+o&B*?K|ICM*ou-I?yfsL&%C%J$}>11p>(TZ=5IR zoQH30c0ezix9oad@|g`A>J045LTCJ=A63$q|3(d)Hf03Hq;{lI{N~L|PW%or)61B8 z!C1FYn$A}Y%Hvp;kjIm-gDNe+7=>xN#40OD?r81N3-jIba!>kKiVNp=%OT@`rA*Nm zc67__{U>6g``U1b>0#5x1#-yXf0j@D7sL7ISBx=Mw`>WI$(Scx4saw6QJLJ))T2ar zJbK}k7w8=q_9Qe=BEYd2?pWR9$WkPtN;^8u68*Aa&MU=*?KR_vTE6g#zgTx-$NH}p zN79^Z+VD35@Om0Qz@2wy{joBBIDuFpUJiG(POlJcuD#AY;@tPn|Iy(Z_B+n$c}2$$ zUkjq^oN)fD|3~{jNt9o|>t`X-amD5>yY!aX|7kAek=MoeZ*DuwTsC%jxTOZzHjP#be#v zc9sFSzGdyp8b7=N9N;^PUZUsj9xoT%w&7gFzoR!D#MYob-(9qx#Z3b=6mP= z$anu>gGeCq%TI5#m)yBQzO!hPTy)2VH)J@paNT(?D);V6DmTnp`7_u5cU#w*;aFc( zhH&Nj!|(s0o-T)GitAg}N??%tXP<3vZaYiDmFwlZt!rQO8gG~osQWM08x|R5NQEg? zLPWPY;iB4UrT6dLX#Q>CmSeKoa^$sin=^!H_g}6T>O^Q2-J~-!Wb7t>-9-z1E4WOUSt&zwe^?~SMtnvrthdjWib8Ex{YcnEsw)VL; zuaZIZ?vYd*LowI&#iTFMpW%dF1$xiJ8zhrOyo0`eg122_+ztQfV7m{QBf>6U2DC{@(-KBaKKQx=#Ey{arX$=iRy^4;%w z+u1>CEcE`!3q^!R9K8x_3_U-0rvh|;Vtsa6?Nyx8^!9*nul`qeZC@djp!EV3DBO8-u;@4tNRn{g%pvE*62R3GS_7F9;ZOcY-wVz zresK3-eld#kA29f7Fl8>>JW{e^h%%Bo-->A?C`bz013mh-f8u~ZC+c>GmJc|^juMM zkW22|Am4ip$@R|~f7`g!j3izg0wYt-YpN99)|&G_94Xt1C!CwH!Tzcn1A_CKGP1Xl zR=To*Y#FV15z)UdJ^h;QY5Hj{iwnk#C#sF1WOo+50_luMng(M{4J2nYTDN`Dg|VmD zmJw+RjUKFe9ZhPpY-dIosA^6BFno4%pbw9yy1d@fTk-tjSS>fWx$P`DF>`<{HJ-`| z6_kjOXygXhNOhNjS%Jte1r7|0t4`>NUnEO>iIH2h0*B7fg#O6)NY zj=RIge+Vb21Bf%%azGspN4ta^&{}_h0;l3g$a5(Ha~Y?JENzt@mt&qpOlYk?Kpj_6Co9OZ^Ul9d zbGLjVi3kZu(Mvx1{FLiNeEI`qjOg21b3x)Ys0&O}*=duA%qdv8Bvz7wl~YxStz*tgCIYRR91W07*naRA>#&1x_`WGjev( zX@eD+tE#>!FjF%^>&jm3v!|>%YW;7Ud$yFF+Qv{^V<=M|QUkMNPkm%qmnyl)aDjm{ zDxSqgSlVClrvS4e!!KqGr^TM3*wbmCE;2X|X>%wP>Z27x1 ziy=osGn2ZA205E78;R(m(`+OsT|hGd`!P(CCt^h9oqrtoN4I+3cJBtc;I>y5TX+9! zZHce4PxXS^HptuV-5`%{^}O?s1ILI8c`Swr0`>v*pyby)xA^mX#ryT`IX&Z#y}q<&G} znzM68Hj2u^i0~ctwx<6;*e@cJ1uM~T;^d?^5wVOGSx={Q+JZEA zPofXI?^5D6pqDn8pihgeH!0(IMpPMBdj9m)=K9?`y&O-TqE^|X6)HMPn`FsImQ;smkvz}%uTkQMKp#+J9;z35K5$}gjQweTi8xiE z7FRdqt!b}%?TQS`BJ7*Mo@uOUMAau6|6S4PZ9s2(XeI_?S3I{dla8g{k0f3voaYl$ zuRRX{_*&DMk~6~YvNz44WX2P10Omx7i+5y`KTSlVtfN#{mAWHV(TW^bcN;KM+unF0*0ByEF@w%bIpZw z&M_;_Tw~^xs|1q|`a4k$5Hm)^C>}>b%HCQ694#~4cGYV$vTHW(54Tt2^s>a54_YQZ0zc%v4zz3d`mhn)#sB)m-?R8do>Nn zo>XT7iwQZ6`R3du=b2TT&NcIAbxOnVFvHYK;M`>#E6LY#ZGSPq_c6UETPq$Lp`f0Fq28@@zj%22h@=vpsGwaCVEBa z`HSa_v*-8k(w>jiUiW6c#8}_i64%X#i?ej$P5vgmou^~BleOdjnO%mwufeZ7!rzbQG1YS z&V-wc2A4HjSzWL)W87&)RZFUx06u3$KQj5$F?040mLJmC<0FHO3?1J3bM|C?_qj8| zycM{jIplZRBU%HY&I;=aR;nTG^??+C%vj=IR{z28ePPqLkCni$1@2&S1%VV$W@1@H zgDjnOwpqDuwJgd+BuNaJ45n+g%uprWnWb@j!gf^#bS)tnDF|VR1eVm+2zI>@^d0wY zI4ZfkBH4=wE92TkN@KoNnhFJSbLU8=t5b3qXlVdrQECkOe#KJBXEUm%FiF+$STp`k-@zk zN2|o6LfjclA2e?zPb=-RXyH7WF?SYjY~nfXWV3MUB57MVPwW#rwBt!(ZfQtG_xUug zP>y3JNwtC=Cb~U3WF=s}w0A9%)@)X6*Ia_G4w1y6-U9;pJR~vL0Bi!q66AB_*RGL8 zd)iG~95ZqHa;bi>f1^tsIA8mG&-=F=mhbi)$5sDpiv+5g2U@K$tyQ&~mN%N@bw zbB7CPaw4p23eBp9fE&l0y`esI^J|IX)zz9M(riikmd70E>49fSdz#5FGUBt?@HtyCGW#+2h2 zTPkCQMv!6|V=S7_qW^o*mggDA=NAkdJE30#K3nT@?|{SzRU_m>D^yhpfJlU_DuD=z zDvegSyv4GnsU$8)jTmhbs0XSdRIJeJ;-*dfN! zhmjmPvdofv=RC=rf3^u{v>+ps=%EGyl0xE0C#Ogsds2sX?b30IsthQPKY}I1M~z47o#RPgM(M}% z6csHDKCCT|wrSz4)zX!XP*uzm&*;>)$91@Gx9(?zJ>=yevm_hV%YiVUUJQ{jwOIUE z$mJDWiY=ANQPesrwDj%M#-7yYPF*aSY>seZ653`6`3ycuF}(wt?C(=ypZAPuj3s3f z#q*M`d10C3s{h&f&^=L1${zZi>Qk{wVSg!Ic;}E=_olYc*40*3xM!+L&!9{96?M2h z3dcHJAb2zCkRfWpyp`HMg7fH+JAV57IR8*>f9*Z58rA5jQF+dB6flYesBNv9aJ-oM z?B2`wu;(lF6LEPFlUk?%q$aZ;$q~!{5m`_hQ(GFq$Y+ zNuGof6+%*)#51TzRTKx%{mJ!02|)-@GI+YE=S_poT$azv@>w0s934fU-K~E0N)c<} z!L2&1d;Jh&TB1ZkL`Xd$lem`(&pteOeDyzn-Fb5L_Q4V`UUu{qoj%iO)0=)g1mmfm z^Ulu5R8@I$()-?`AGH#HexzK!*NW^l!a%Bw7Oc3UQy&T16c~Rn@f=N2+>!WnZjG%+ zvMpriWesoc_sIwDw|?Q-^~UU~dbViFdzwP5z)i!6n^!T9mA#f?Phx~HGK8^z>7%m8 zeIx9Sc)sjPM3enm+tvzk6bXQ_u`%qE2Z)_VizU+WJvzjcK25@Y8fBa+L*ywkMTG`Z zCh^fa%WdyF`W@G6*6-ts56rDGRX0kOmscn|T9^G4UK7}M}a8pi$oYlVJistSc z^X-YM9ZOUPD(L|$`e0Sr-(Y2;>KV%#iHpv=roi~3Q$43K%Wsby{btx9+#7b9$dL85 z^rN$iUp5}lxwE3|8A~gJCGYO9VzNdUbV$Bre;kVRIpttz7y{x%aSA+@pT+8G-}A12 z+)sqvy2Vp^)I*7wR+;3W?x$T6hO|OOC3a@~(O#X2V~iG>a8!Ug##I0%0a}H5Z?gKO zC0mY};sHpgO~&JDfjo{1IjVzO{e1`>l&CVP)xmL@F}PQFJlWO-9dPS@<(s_Z{@vVA(YMgWOxB{F%SV#K8FQ~YpJ-MmH(CvY+zr|H~V z%6?|aP#DkoOHZvtPfUL=Y7C`R@v8H4M$0b}3LSR`7##z~6c!j5*OW#kIp`q}3zXUA z`|8e&TcPw%w@k}_+f?UW% z>eITwOb*5lk(&O8(zLHLvMW&P`jYqyt)b~EJDrRSnb;G~2(39#P31oaie}9*Waap$ z+!|>PMaB~ijF9!U0^{f;)E!M1NfC^H_EQBq_q?_AR?s^D3E6nF$sCjpLnogrY?5z$GBxz6rGeZu^_JpjW~RK0DJ@gtA;RhY z03`x4%%D-0GNly)rYNxsp^W1h7Mmf8no@zD-+L}RJCRO=J+kl&`EuWs09cX8sWt+I zoRvkfC&^hkr@@-WzSvzCNlpJ&WU%D?_{_-0A70Ry{N7U|dTwKeclAGZRQEJ->bY`V zUu;GbwOK(is}rSM|Cx zQ7vYSWCmiVlc^d&j@J19DYr(7PGvMvF_4Kp-os#II2ajbmz^GnJ>LT2`amA^%9B~c z4i8&n&mDnKjy?BAh6xY72JCpEx$#8Ji!FnmFf+iB_*`L=eB;ZGb1ydGJ=Z$RL2W~s zhwuoAE+ix7{ND?<)z^!^<>N^}t-(@^!T-S*Lw(1yoAnSy$txM}&}YB1Xp{WYHHqL6 zOs#$DrGFl}$w@VLekNT-Rh3Y7qO8KwON$J&oMm+6hfc{-V3Yy@0hU%AJAjZ`lCW2+ zcWf>^M_px+v=?GAK5t; z0D-E;BI5sRWt;B2_b$C<_9}Df{zqPs{twZage%v}KkTT8uN`j;0ryLDA~%s@Zs?C! zc~Dd9%diUQZ46~#VczK0ai@`?Q1KK@Ev#>an*JL@Nk$W`20}6`Ytr7b*AJGTbA%IS z1~?M;Kdgo)yt(Iob#peDl=)@=&khputhC!P?7Q=`X~!)ePt2@$T2G@?THb0sry8b> z|5aBcUUKJ#8dJlmhL*QlrBUKp@3eZ$#}jksXVVT0y{xp`Nv8V)%#!~4GfX=2tfr)- zgp#(r-3}2lNWu>0NPsX(pO$5#Rc4BloCqn>{fSpzt$I9g-$ZPlDkbKg@v7U@oJkkv zf&mXZoNE5GLbTlo`#!aAqT?ew$IQFi^S;qa<>%Y-erY~n+W24f{oUMlmL!kft!)|M z%tot`AwIh~(698y=7#>b1L*C{$aW8T4?AW=(%+RcX>Y|J?$2;$qa6YUr~e)RqvMH| z7Z;2+hvFiGc#!Gj8aP2`fJ5m1*m^^=7#i`@lp}RK;43{JyF2dw#QMVY=297_dMqeM z4t@9MAJ`ycH>6-ifE)&TK6-bt`!Ci9$a7{^dR=WHDi6w?$K z(-0WHuj*J^AJsiD8CU+k^mP2k`6UGaRV{napKr^vaql)=xb8gJdGBir^$yXMZ0R^l z?i)?9rlx-be6ajb@t<;QqWL+K-COokGa_L!Rg<%#r`FY|(T8FmtZxq74+j(asv0(j zB12VQotwAPl{4fmzGo<b3p=Zj>;>Q1lptLF>@{`;h6w5T z!@E;Bw&Y!}2c}Pov8)ivsrgX9GgOwvxgcl=O!ClVOlM@x;(Q=wr|!yuql^8264UH% zb~siYPt?!J8LD2x!K$WbG+OPgcp0dw8sI~Vvm}q+t^br;W7;Co$y6owwcX^%Aiq_7 zD23+}ZXLpLUk3eY==n%3R_=b!*-U*fBRwCz+jsw9Ln0RGx-yV~gX(|lmkpo!|Bk&) z*}U+3|BrG1@+FwLNzC4Tsv42>Ty?iza_0uaH)HMjX05R5JJcu=53$8DU7XkbiS;UH zJ=eJ5jb!`)hgcqd;b0T9mUhYCm!9_5HLgqoL9Xg3NMF_Y56r3OQ~M^4`PhMhcXmeZ zJN*gE>&5g}y&5F>VEIA4x$Z3Uz-X%fDBGrWTMH@wp!|@ZE`2^kjHPpOMk&@l^^?XA zC-@BTlQ_)1`Tg^cdbQ`(;?S6{Cb{nZ^7+#9z7wAZ=#}D7V*6hmD~@`#=hfo+mbG&E z$OHOnn4-VZc&7Z)_StXqr>ZgFE*Shhv*Jp4NZDWWL{RrH`EMp5+??x-gQy1=@W}w;r-{aZT6SBxuWK@ zKuipNNr3Nju<3s-Cpvo`clG|!PkjO}_@#?w*H>=Ub>^euhl-5+;iEDYs}6Z2f?&j} z8gOsg|2_p6xb&OG^(DIFpTF+`PWjNKrrej%n<}R+%j#4A^Cms@&woyy`uI(U$E{v* zk(6sk8YBxY^NriwoU1OD-ml)OCv*;Q5+@GMU-W4i|L|t1{9wXV18n7nJ|;i$A8bw3 zbQr=Ed<01VW@&) zGw85&hH$nOro2u(>oBVVv8RXlT%)Z@&Iq9Q>`S!yy4zmV`0aZymW3UG*qNbBJys?% zL?bEo=~O+Cc3LTvyhaB-K7jbFj5rUnD^VF!N~=Smu06ocj`W!aOBm4P>$iG6q*CjP&iOlf>{O?5kKNJZ4}b=k+@;S7r$}aPmSAG-tb;2T{mnWEBRo= z6Vw@Os}Z~3snJ?ZZj-=_sxkz)f{->CDifZ{S&ddjP*?WO1R@WWd|2|NlZph;UNAH@ z2t#k#|GtA;?)qh2@n2WUv)>$+6iB{)>xtVY^(2lzR^RjsQn__hzVK`;Erx8OWG0nd z42?5{t`y2Cj1+`QQ7K2@GeQbfL!r_gNiwSFWBQ^Kl3-cWE#R8?|0p{uO)#n4|b6mxO!Hp9%hL! z&nW!?IHxoNqeZ1;U}{bvP8Ii)#t)Et+k7P4^SrUH8dS>x&}2ks zo>#{(C-_F#NgO}iGLVKNp2$F^$xvTW3QlRQGtA2g3#&?OgwR7_!qXQD#!NFqoSl^l z2EV(art8X!bnms#g+TY_|4w=5^T!JEMi_Ty<&40SYP@~i36Q1c0J%VDwZbe_av5O; z&{|b`tI9-1sFsy#3Ce}q!Q^uc%(KF%D%GmeoT;&wv$QwKTo6+%X?ZH9Jmj=oRVH&nS`Z=w^@(b^$w*_HWpguRx1aIznM?L0GmRCo31t zvGcR@vh{vAmi@hHZ&4Wq%1oc04h2(G*zZ(34Cm+x!t zy%$TOI8!6XN`Z=3rV?ecQr4mR*>*|uVmqg4%qM1lTA3*6WN4tJ&Sab0Ohzh9Rx93@ z$90!?Y!Mi4HI(Om>vnzmT^C7Clyw>5!1UNB9pEGYm>NmVkk=3>SfM4U8Gl!^uw-7H ztX+Cu-4c7rk`~ElO!BpdM+b(J-GfetLV>bU$kf86)YqJWhho)L-?{x2*9%p@eyakM zzkaJ`uDr-kDw+}SN?-+vVPbb#cdkn5vMcIlkq>Rhmf^T=$hT!feEy8QHETK}hKruf zLj%Jj@wkDJoG|&8{qJ*I?t+;XBH+MRZ+(s$@mMSJB;I&%@4m>~m}pQ|3La)SWe(6) z5Ed`U%jrwr+_WtGl?&Rn{I4soE5Bq0p2l9XVmHfu-{! zS+?ZDhUMX}T+kk@x+DPb`MjC&j@dJtZyye(lG*bbXLMW^hM8&@1SM;2CA792Seuy7 z|FdVB-~Uw$_2$a~NSzB)m*$fsX&_CS0+M>ySdHQqpG}i2a?Vnbj&>8aEJ0e9;EKK2 zMYBU)Fc{W95}Se}C@aC%YlqCLjaAQ@7Y=pO0ggAW|K@RJhu-=iVCs3 z2Ch~Gs}Om}cp(yqA|Xpa#&t#}e#>l|u9y?}wg&91xni2S5NWKj>ION2W$UaItIc)e zkIkEL+vKbY+CS{6_TD*FNeh+3yq_;YS+9p?2$^n$WT^LsCNGjxL*VO-u||w*35n0? zAiZR@=-hTOK?c(>3nWB?T7x;f$2OmatPSgAynIT>gO4uCjJw`3Pq84li5KB53a%Re zXI-oOx^ne~lRV zldTpAJ>-CfP$)Eq(vdl>&}x=14Z~;-soO1xMI{A5!aTBSU53-wi+}S@s`otL%=RId z1Q~*S6qv{cCNvovnz9W|*;l~hEWnA)sxhzM6xA1H`A4P4^$KJkr4d>uIxdR5|< zoJ0*R;yUKw>+(o8LaacT$7E-qu8i0$A|XhCs}4X~LRwo2;l<4hTA!GDw0VCrXj*J_ z_TcZQnt1=2a$g9JDgevrVP z-})dA_4jjm=5zBePG+wu8&ydOhsfZ`F8K_rJ#L46gh1z$#;M~dT4 zO67_wDXCh(YS9}vSd#d@VROc+U(@jYOZC3o-=3@m`u{r`3_kTZr&NJ*S&0vpbzs4d z$M)OPw`I~<%L}3^cn=x_N>G?1Y4WUc*Ubsr_g2hMHP)iWJ_>AHA7y`qnPzMGnwbeswih zB?g~@DykmhiV_#`y?ZM9_`V^(eR9+fq&}W-Oe(_v-fM`&sZ;8IcO%>d!IFbF9@l>W zT=0T-j;Bm774l3z^%L*^%k76lprd;Ff9SzuDE+I)?2PqOUXxfTI%TA)931iNer%U3 zto`oO1v7v1T(e?*C}9L~ipCXnQ%|b=*DY!At?gB}qmpV>y(nTqEtE{HyL)VFiEwIa z2JWVl;uqut)2|&+7D!caF*JK2>jMc)gTXG%8hz`Ku>NeLOPHW%e|mS>{b*pM^i)zRDrr^GgI=}2KaplD%n3!e-1W<~Qi!iM{{8OPU+vG~s?q0u ze~;a{3+8iNWjYU@e5F5&5anoM^rbF#;^T~!S>3s{oWwQmgdu8sMNz-g!ZQz*>rcJz z-Y}@IpCyaWwi4CB#D0<=-BHQ?$0LdCOEiqtOD%j#ETk4H2CDKC9eZ9X2|f~1V}46R zC|e=xz&Nj(nec&ZEvei0fX0vRRlRVL`1S_FP(P-l3$+ErhM=iv?;huN4!d|?s{J0F z@S1u^3xX>uI_#9rzUTUP1SeAL`c1cR!5hw)j#l2w-*a3$#6141AMgv`eNnO_)p7!1 zSs5uRef1FTE~*y)YnaueHwNLams;)8wV@w5p#HJ_Wu1GbN$2Dy3Brjm2&Rm+6=QAH zSQ{IWBk5sY-9CV-h^jT-9l&dVcVX(%dY7gRR+7djjWsd}> zo+Fr$^sc9;CVwzCG(MqY6J9H2C3XtN5N5%Z6*aBFVaGg~0~}{;{?!j0*A6iNnQz_Z zTi0qkS z>Osr+L?AO~T1~wvS129yItHk#_4+fx^bC{{=-Z#jk`G_T(|>jI$t3tBYKXw+gsK5N zNL2fojCrcnqMGri(ur9^{c~Cx4;HEwo$`(#C*o674dfEV0@7k$!_MzdVDbCkEDwyi z;P)F$Zp_nYgltqZVAVl4>9&p-H|m1}yOL5VQEk~bmTBAjP%c>4k;NLC>LnVQBB<2P z0%rjWs1?+Lj(KHvuEq#-(g98afTF6djU;_4QT8~r)8dMXoA8i=4^^is!;I}5b`3zW z#o&OE=@!XBTw`;Naze2C@(Y=5#fRT|`AX0i!(`FpfeFQ=kPQ@Tgt%Zx26m)R#yirS zS{loVR*Fis9Q(}VkIIeh+xBELdC8fq)X#4=r#?CA_fc!&X(yGi(?~qxm6f6BQy;nU zDx_Cl0i+%V<61>%XIXKm?vCL=sw9C>)!JrWwhAqH zZ8b6Z+Qh{qwPo0R6=tNK1Sqx63jOFm+@kOXqeeW5pDmvFhg;NxKAtLTB1u~fl_tZ4 z6-G0{UIQa#WumIw5yN1j=GC<;JlLakQ?zBj%b#5at1hw=i%HNZr7XMdVwta_U$?!k{MTAVbn^!?Gfyis}8_0a_Pl+|uBu+y9DhULi>#kS7uqg+LYSAxUAZ zsg{_}1zL+rU!rVHp%Or2ondF96h$zqWQxk*m}jIQoRSd=CC?LiL&ia=s7wYR6|b2m z_9s4k@5Qlx{Z>6W1DwPQ@N+lbarhBA`|=jw^*S&X4242r%(H!5*;ZAi zQfP0p1eXuIFMjv=b)`(rXyyA=)tjEEuyK9i@U>U}@G4pMXO|uJh*jUeO16AsShjs> zK*~yxDz42+<$@2)DqYq0zETXc%F2vMWly5qR8^7yGFIp{FtTz+P+A_!qzI!8hDl(g zsytdzwpk(Ll)kERFe6lF1yU(0uFoL>*fV$jww#;+PU1yz{_@Ys!8O;JZDrLJyULzO z%q4kKy}jfI_c>w%xtW%UdXXJ{P8%MMwfV=bU*hUznevqv)H_WyY54QC?0eg0i61B( zzHa8c*;H;EKK#0J=NO$<=xPu2se!~TvqJOotS{X#DBJ$!%k`=lBMcj5a>$bugscJI zVi=kqNNidI%@vG~_QozF1Py^ql)O$1d7?wYO=!Z~mz(KuiDXt>T7L+OK;HckTWIUG|xGn8|yK=KiV%R%i+!E(oR5vL?O1>{}9W zAym$84XTn6DGsI@fG;X$$`j3-8+szq2cM~$36GrZ?qBRS)2Ti|j( z*LE@qK8cq`|1_0J|FySitHDvLv&d!nWB zapxxvrheF=*@YRF@44Eo+jn)@PdFE?u5&-P|9#bU87Yr>ogDM(I*i!vt}wB4qu8`q zpY3ku;dNhpV{(Ib?_3`IuMG|E1B)ZfwWILx{f0#=4N2^2Y4DUiU%H@y^IHSmZW z!{r9xCOPex8vpUU|NqW7VP}BuJuBq2j*!Ri*~SIkXYer|)c@PwmB!X}T<7o1%)R&R zT=YmjN?at1lqgXarC8o#JEHB_iS48*+Qf;SxN(ziaRRjHkD@?qK=TnK2^UiY?KWZBa5QN}?ogkK`lYdY73w{qZDMwk0o78Zx23Uj#|K zIUnZCnKS3j`DXB^%0V*YWj1!%;`kYX!mLCh?Vx2HP%RZPIWEvMAl>G;ZS_PDS0Dg9 zdb+|xy|4a4&bUYRi}A$}52Q!mv;!nIUrW_v2N(eUa&iOR-kqRZqF3zWw3VbFYD-8e z_{M(ZiWD9lE91lFm3M5zuZsU_-vL%^6==sg4=>~+!q^M^WY0EwazqOx;tFBl77q=3 zu!bRI6QY2TKRbz9IfZpS4Bxlmv9tP2GUK=%ttJflT|57aneAerSbq=eOj!#e;)lwc z$dN>8hd5s|^rdqP;-PZ=DbZayMKLA#!G&JRCYU@4erB@9X-|qr$I394-&G2=ocvc4 zR%{CNHFc2xv@gbepZP3dA+*WMLbyQB_iVIlUK^ec#ABD);4;=HOyYKC+I`#lcJ~5 zRnI4{6i=P0Qpyz~ri3(>`Gr{@-5CdW%MtrA9AN<7Qed31#n6r}M%W+QMnHY%Sc&{s zBUbDV@Ozb=G;zk4Fjk?dRUxP);a5`-vI&{=T9D|5a;5;jlLdfLHa-i4GN(#>i3)g+j+h^5wpydLN%giS5-&;e4QDN>l)-W>4_RqSlTi579tg4xEg(;FxzOD)F6=P78n} zlrsyW1tc@JP_kZOKB9YjJ^sed1OvdWa|1LuJ8;ph|9s^Js4s$IXpLo0aprcNBi7i-C+i=F~6;rBB zXeX}IVE}jG07%S3M*&hz^$#mmbnk`?j+89MDl^scQzP7f( zlSnw1jyEfX|7ydESpe%l@P3?}jRa;+IZ#dlezh6QISAQ_WWyF3Z@A4n-n_M?#Z?8# zsKw_N&~8uS0)2WYCE(W>`LlL3y@SDqhdK|x?ZnUdmiM^*6jy}uQiQuVrObCmN+O+< zLe#V6(*UmWB(hOUaLQnOx8APZ^m^ z7(DivwB-$Y7^*M<@_^7!!ijl^!U)y`02rr6dFY1PJDU8v04RqR2_^8k__0gcvz+`_GgibIU~poaFt5C#Fnc-)W7dGV1HgJD8#d9=%pIGZ zT+jWV*Xo0J8ER=`nqQ~}C{Z)qR0dJtfkYfp*a~Z!AfyAfmo@nx7bAQZA7KC-7&cOn zM!m6m@tRNLQ6sW3uW8+ygL~5b!{1-Jd3Y$f-Ai^~as0^I8@;6V0Zhe|C_J#E5kv$> z(px(JO5?wpuC%y{)T+HeBJg(5187KIrGwqLew;+(FHu^dOe>D#HD33CqewQaka zl9iyD5~*hQFTQA?BaQEUOM$flfP$~B-8WGs0Q?7U;ruI^|7w65JhuDcWwl_c@Hv?1 zHGO&rxen6l#>vLror`S)ANiDay1FeS324J;XtucSMo6|22Y#OGtD)FoH*WBeQHu~1 zfMfwI3WG74WmP^1EL_1(vm2RpQF-0T18vvsx)z>tEI#oWi;Wu@4Jksg!r1kG zrhShzw{Ca*hK;e(kwX7C=by6YnB{;7ku@-)3@sL*MF~~}uyu|4`hfH{sR0uagivsuxLu>- z(He>e$x4%QPj|#|{h+0*ZnO}Ru{H-NRTsMy1bpyzMv|S@$Ob!7t~gx|?R3f&)i;jt zx?7@?m&bo>ESnoUE?P?`X8PGinxpCxL%aYIKN;NH{T!4$gBerASaeRRP%vOI^yuV! zDG~sMKSJNKTCkXx02~+-heQU_Nn$G2*V(DuzO9;CU5UK5Ai-d+&za{EHgB`ox}E8& z8-bs0GW67b*R4bWnREk*jIB!)G^7ZA$n_3x!C0zTWU_)@-JiK{%k9-?Bg@5&4NfqscbLdBECYra z_Z2Uw%v>h_*#hwNQ$jwqx3#g7pNFn2HQQvhi4*8xSMPwdFC!it1WKo&IY7N)6b=3s z4C+@UR`o8Su)Oax0Mia5^eq4b5+Q()3^~aZNGL#a{iLn{KoHnvL>llzhUXDF*D~(> zsKFJReL6Pj;-#8E)d;d6#{wiQOdyFO36B8=!7|agCq+>A_Y1*H1V{-&f}~yN8M}S0 zQCDweq+)W z^Z(FY20fcB%}h3;FxMn%OVns0vE6FwVoSSBqu6d5#1RvTJOKr3Xac|_fa>#4{J+lb ziig7Ts&fOI8!Z;|1|$LiHTdO_+nr-0Pe&UMA5^i94nxGKM^9T%=bKW5g%abrX9N!Z zT-dP*Vdu(hbsFFpNibUwYY+t>s+R@NN4kqf{R=_NsEf)hG5J-3J+1xtV^cva*Os9_ z`E!k~4q$E$IIjV#48yMyW~T^ypCEtd?ZxK`K5;2xOq8^AB-zL?U$hdGx;*}eo)h-O zNizA_NNcC;Gx=p0U4Xzi67-x%VVEL&6sLo{^{v*^LIc(U;GrKZ^5Cjp0N<*seJ>ln zowM*O5&UWe%nOLZStP1Q{3~a(PyVFy`mS#4Zrx@f6~RP66aljp#*4!eKl+g{qbCYw zTXq*Q9k0LPQ;jTqSw<+!Fcg7_>oNXPj?WJ22UULk|1gmtCDJ0tiCAmA(TLgUdFP-1 zCQG;fwxQ-Wi^)ksPY>5SuOndOu;96T#fTe{99P1xDnx<8mh2BtznmBU^bgsd_wAHUTRV$t z6|kxnqF6F;Oavf6s?oqi0haO_fzLqpvh8}Pyos2Ze9a1V;a6X>((l_n_2Y#}zdP9y zE4nResW^VT^VuKA+e&k>TB?ZjKh~|EncboR|8hW0ssIw zu0<>rKm~w~2(bj9qX?yifH$XpSZ#=QJu{lv>O7y!n3$%?Iq0f5oa z0>qMHaBA(FnnB(TzFz9322W5aFiHxF8OufhGJC!ERi|n`lv6~=$HVC5`;YKhU+rIDWpW==8E z%?5tOpt1z$$f84)O{1MOrNuQU8-r6`8(dm|@)Tet{Hg??5Kk$Pun4Wad2WE7%)a=p zB36T>pH?#5dYPL6|(@`j#h*fLkMdYU3~$j#(^l55R#xA zANjKdWSSSyo$W-CGr;KoK*c?@Hs zrCz!xva}Q!l0;r)*c#@1ObH9nw!rXYsO??=9SK(+DTlTiQzGVTJK<}da+TN-YJ0$~ z|87PAvK-oYV7T&y)T@`w%U25j)dqS0{r4}o4FG`q5;ORDY#s8i9tYYxEy_y_V=Sz( zu(k>>?!ZJv_~j`$CW%~277gAQN^^&xR0-A)+;|8eL{QPluH%3FV7tw=q_8uZe9N)- zIsIaT&2wV&we-wnjb54$Nz^aDMfYyW1nV0db95o>k1Q9N@f3h7i0G6nX|}J)38yNi z;wfPx%Qb6xoQTrK@+bkODJFwrXd@+v&$?~AuhfXEy#)Zk2Af}Y{trL=@MX{4uQOJ} zb?EbW&>Lp3Wt=?;boXjBwfRUl7eQ2jmzV&F1%!SPLG?)(orl&5IIe^npMch95!OnG z0s`QoRN#fs()C$IgL{Ivy%4w0>8I+k1KgTa*xBN7Oo{NCT#UavQWTGmS8@Q(tWBy{ z40FN)W6d!!-IZ2)s%kXOy@k88#hW9dykQ<&6PJpJ3X6fQ^)$NN=n3OVA`8%irQVC$ zvz+`_D^^SjbRI*uDIWZfQ5w3g$ml>cI5S`YXjDyz$>Ts2GD1H@P&)v&2>>y$O`^N6 z0BeE5tOLJHC@+e?dnJna9P_;FVPf;O^zmZ{?0#&cVrcQ~v~K~#1#{tn z^l0VlrCxVK#;KetMr8mPU5tb$iLY++7(i*xx9Xn0bg*xtiph$0*2JWoshYsomNqsx zaFwv*iy_vg)Ftch%fWv&W5uLE7vlb{sn>p{wk~{rgNHMk?d(D=gbo0p8MX2VLVpf` z1ELgK+n4O`xB5?WMvtFeWC$rRea21~LcVn%huvIH1Af?i4Sl1OqYsOzH;o(3p9KJP z=~>LjbCiuMX&5>*98P*UiYXzd%G%%28smy)S`3WU7JN@%1}#&Ecu%pBrz)D4LIyLm zZ`j5iA?|gKnzhj^PkU|RqZr{nntRKf{8!0;wWmNUZU;Dz{_8(LoAwk%VItu1PHUwU zqN%4ND4cZim^~dr$~c;HMI;)=urQgysnI6!*H!G;y{mTTO38?ibHb`}~!)C(b!?UFhn( zS{zh8x<6Rz<&KoY=Q{$Y&a-dr$)Bpeg07*qoM6N<$g05a} A+W-In literal 0 HcmV?d00001 From 80381a87d001f234d2fec500db2142225be28100 Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Mon, 9 Mar 2015 20:36:39 +1300 Subject: [PATCH 106/168] Projectile effects - Part 2 - Converted the root projectiles object to support the new effects system at a generic level - Converted laser beams to use the new effects system and removed the relics of the old system - Added muzzle flash for ballistic ammo --- code/modules/projectiles/projectile.dm | 100 ++++++++++++++-- code/modules/projectiles/projectile/beams.dm | 108 ++++++------------ .../modules/projectiles/projectile/bullets.dm | 2 + 3 files changed, 131 insertions(+), 79 deletions(-) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 9b710409a1..26e2bf3366 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -51,6 +51,18 @@ var/drowsy = 0 var/agony = 0 var/embed = 0 // whether or not the projectile can embed itself in the mob + + var/hitscan = 0 // whether the projectile should be hitscan + + // effect types to be used + var/muzzle_type + var/tracer_type + var/impact_type + + var/datum/plot_vector/trajectory // used to plot the path of the projectile + var/datum/vector_loc/location // current location of the projectile in pixel space + var/matrix/effect_transform // matrix to rotate and scale projectile effects - putting it here so it doesn't + // have to be recreated multiple times //TODO: make it so this is called more reliably, instead of sometimes by bullet_act() and sometimes not /obj/item/projectile/proc/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) @@ -63,6 +75,7 @@ //called when the projectile stops flying because it collided with something /obj/item/projectile/proc/on_impact(var/atom/A) + impact_effect(effect_transform) // generate impact effect return //Checks if the projectile is eligible for embedding. Not that it necessarily will. @@ -228,6 +241,7 @@ density = 0 invisibility = 101 + del(src) return 1 @@ -240,23 +254,86 @@ return 1 /obj/item/projectile/process() + var/first_step = 1 + + //plot the initial trajectory + setup_trajectory() + spawn while(src) if(kill_count-- < 1) on_impact(src.loc) //for any final impact behaviours - del(src) + del(src) if((!( current ) || loc == current)) current = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z) if((x == 1 || x == world.maxx || y == 1 || y == world.maxy)) del(src) return - step_towards(src, current) - sleep(1) + + trajectory.increment() // increment the current location + location = trajectory.return_location(location) // update the locally stored location data + + if(!location) + del(src) // if it's left the world... kill it + + Move(location.return_turf()) + + if(first_step) + muzzle_effect(effect_transform) + first_step = 0 + else + tracer_effect(effect_transform) + if(!bumped && !isturf(original)) if(loc == get_turf(original)) if(!(original in permutated)) Bump(original) - sleep(1) - + + if(!hitscan) + sleep(1) //add delay between movement iterations if it's not a hitscan weapon + +/obj/item/projectile/proc/setup_trajectory() + // plot the initial trajectory + trajectory = new() + trajectory.setup(starting, original, pixel_x, pixel_y) + + // generate this now since all visual effects the projectile makes can use it + effect_transform = new() + effect_transform.Scale(trajectory.return_hypotenuse(), 1) + effect_transform.Turn(-trajectory.return_angle()) //no idea why this has to be inverted, but it works + +/obj/item/projectile/proc/muzzle_effect(var/matrix/T) + if(silenced) + return + + if(ispath(muzzle_type)) + var/obj/effect/projectile/M = new muzzle_type(get_turf(src)) + + if(istype(M)) + M.set_transform(T) + M.pixel_x = location.pixel_x + M.pixel_y = location.pixel_y + M.activate() + +/obj/item/projectile/proc/tracer_effect(var/matrix/M) + if(ispath(tracer_type)) + var/obj/effect/projectile/P = new tracer_type(location.loc) + + if(istype(P)) + P.set_transform(M) + P.pixel_x = location.pixel_x + P.pixel_y = location.pixel_y + P.activate() + +/obj/item/projectile/proc/impact_effect(var/matrix/M) + if(ispath(tracer_type)) + var/obj/effect/projectile/P = new impact_type(location.loc) + + if(istype(P)) + P.set_transform(M) + P.pixel_x = location.pixel_x + P.pixel_y = location.pixel_y + P.activate() + //"Tracing" projectile /obj/item/projectile/test //Used to see if you can hit them. invisibility = 101 //Nope! Can't see me! @@ -285,12 +362,21 @@ yo = targloc.y - curloc.y xo = targloc.x - curloc.x target = targloc + + //plot the initial trajectory + setup_trajectory() + while(src) //Loop on through! if(result) return (result - 1) if((!( target ) || loc == target)) target = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z) //Finding the target turf at map edge - step_towards(src, target) + + trajectory.increment() // increment the current location + location = trajectory.return_location(location) // update the locally stored location data + + Move(location.return_turf()) + var/mob/living/M = locate() in get_turf(src) if(istype(M)) //If there is someting living... return 1 //Return 1 @@ -310,4 +396,4 @@ trace.firer = user var/output = trace.process() //Test it! del(trace) //No need for it anymore - return output //Send it back to the gun! \ No newline at end of file + return output //Send it back to the gun! diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index b5ce31b168..cbe1ad5625 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -1,13 +1,3 @@ -var/list/beam_master = list() -//Use: Caches beam state images and holds turfs that had these images overlaid. -//Structure: -//beam_master -// icon_states/dirs of beams -// image for that beam -// references for fired beams -// icon_states/dirs for each placed beam image -// turfs that have that icon_state/dir - /obj/item/projectile/beam name = "laser" icon_state = "laser" @@ -17,69 +7,11 @@ var/list/beam_master = list() check_armour = "laser" eyeblur = 4 var/frequency = 1 + hitscan = 1 -/obj/item/projectile/beam/process() - var/reference = "\ref[src]" //So we do not have to recalculate it a ton - var/first = 1 //So we don't make the overlay in the same tile as the firer - spawn while(src) //Move until we hit something - - if((!( current ) || loc == current)) //If we pass our target - current = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z) - if((x == 1 || x == world.maxx || y == 1 || y == world.maxy)) - del(src) //Delete if it passes the world edge - return - step_towards(src, current) //Move~ - - if(kill_count < 1) - del(src) - kill_count-- - - if(!bumped && !isturf(original)) - if(loc == get_turf(original)) - if(!(original in permutated)) - Bump(original) - - if(!first) //Add the overlay as we pass over tiles - var/target_dir = get_dir(src, current) //So we don't call this too much - - //If the icon has not been added yet - if( !("[icon_state][target_dir]" in beam_master) ) - var/image/I = image(icon,icon_state,10,target_dir) //Generate it. - beam_master["[icon_state][target_dir]"] = I //And cache it! - - //Finally add the overlay - src.loc.overlays += beam_master["[icon_state][target_dir]"] - - //Add the turf to a list in the beam master so they can be cleaned up easily. - if(reference in beam_master) - var/list/turf_master = beam_master[reference] - if("[icon_state][target_dir]" in turf_master) - var/list/turfs = turf_master["[icon_state][target_dir]"] - turfs += loc - else - turf_master["[icon_state][target_dir]"] = list(loc) - else - var/list/turfs = list() - turfs["[icon_state][target_dir]"] = list(loc) - beam_master[reference] = turfs - else - first = 0 - cleanup(reference) - return - -/obj/item/projectile/beam/Del() - cleanup("\ref[src]") - ..() - -/obj/item/projectile/beam/proc/cleanup(reference) //Waits .3 seconds then removes the overlay. - src = null //we're getting deleted! this will keep the code running - spawn(3) - var/list/turf_master = beam_master[reference] - for(var/laser_state in turf_master) - var/list/turfs = turf_master[laser_state] - for(var/turf/T in turfs) - T.overlays -= beam_master[laser_state] - return + muzzle_type = /obj/effect/projectile/laser/muzzle + tracer_type = /obj/effect/projectile/laser/tracer + impact_type = /obj/effect/projectile/laser/impact /obj/item/projectile/beam/practice name = "laser" @@ -95,16 +27,28 @@ var/list/beam_master = list() icon_state = "heavylaser" damage = 60 + muzzle_type = /obj/effect/projectile/laser_heavy/muzzle + tracer_type = /obj/effect/projectile/laser_heavy/tracer + impact_type = /obj/effect/projectile/laser_heavy/impact + /obj/item/projectile/beam/xray name = "xray beam" icon_state = "xray" damage = 30 + muzzle_type = /obj/effect/projectile/xray/muzzle + tracer_type = /obj/effect/projectile/xray/tracer + impact_type = /obj/effect/projectile/xray/impact + /obj/item/projectile/beam/pulse name = "pulse" icon_state = "u_laser" damage = 50 + muzzle_type = /obj/effect/projectile/laser_pulse/muzzle + tracer_type = /obj/effect/projectile/laser_pulse/tracer + impact_type = /obj/effect/projectile/laser_pulse/impact + /obj/item/projectile/beam/pulse/on_hit(var/atom/target, var/blocked = 0) if(isturf(target)) target.ex_act(2) @@ -115,6 +59,10 @@ var/list/beam_master = list() icon_state = "emitter" damage = 0 // The actual damage is computed in /code/modules/power/singularity/emitter.dm + muzzle_type = /obj/effect/projectile/emitter/muzzle + tracer_type = /obj/effect/projectile/emitter/tracer + impact_type = /obj/effect/projectile/emitter/impact + /obj/item/projectile/beam/lastertag/blue name = "lasertag beam" icon_state = "bluelaser" @@ -123,6 +71,10 @@ var/list/beam_master = list() damage_type = BURN check_armour = "laser" + muzzle_type = /obj/effect/projectile/laser_blue/muzzle + tracer_type = /obj/effect/projectile/laser_blue/tracer + impact_type = /obj/effect/projectile/laser_blue/impact + /obj/item/projectile/beam/lastertag/blue/on_hit(var/atom/target, var/blocked = 0) if(istype(target, /mob/living/carbon/human)) var/mob/living/carbon/human/M = target @@ -153,6 +105,10 @@ var/list/beam_master = list() damage_type = BURN check_armour = "laser" + muzzle_type = /obj/effect/projectile/laser_omni/muzzle + tracer_type = /obj/effect/projectile/laser_omni/tracer + impact_type = /obj/effect/projectile/laser_omni/impact + /obj/item/projectile/beam/lastertag/omni/on_hit(var/atom/target, var/blocked = 0) if(istype(target, /mob/living/carbon/human)) var/mob/living/carbon/human/M = target @@ -168,6 +124,10 @@ var/list/beam_master = list() weaken = 3 stutter = 3 + muzzle_type = /obj/effect/projectile/xray/muzzle + tracer_type = /obj/effect/projectile/xray/tracer + impact_type = /obj/effect/projectile/xray/impact + /obj/item/projectile/beam/stun name = "stun beam" icon_state = "stun" @@ -175,3 +135,7 @@ var/list/beam_master = list() taser_effect = 1 agony = 40 damage_type = HALLOSS + + muzzle_type = /obj/effect/projectile/stun/muzzle + tracer_type = /obj/effect/projectile/stun/tracer + impact_type = /obj/effect/projectile/stun/impact diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 627785343f..5220ba54af 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -8,6 +8,8 @@ embed = 1 sharp = 1 var/mob_passthrough_check = 0 + + muzzle_type = /obj/effect/projectile/bullet/muzzle /obj/item/projectile/bullet/on_hit(var/atom/target, var/blocked = 0) if (..(target, blocked)) From 11d340f89863b7d93c065d0da314e556777d5c5a Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Mon, 9 Mar 2015 20:40:10 +1300 Subject: [PATCH 107/168] Projectile effects - Part 3 - Fixes for turrets, rogue drones, and emitters - Removed muzzle flash from chem darts - Converted emitters to use spanclasses and have correct capitalization --- code/game/machinery/portable_turret.dm | 1 + code/game/machinery/turrets.dm | 1 + .../living/simple_animal/hostile/hostile.dm | 2 + code/modules/power/singularity/emitter.dm | 63 +++++++++---------- .../projectiles/guns/projectile/dartgun.dm | 2 + 5 files changed, 36 insertions(+), 33 deletions(-) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 2337f58ca6..a5f7bf0be0 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -605,6 +605,7 @@ //Shooting Code: A.current = T + A.starting = T A.yo = U.y - T.y A.xo = U.x - T.x spawn(1) diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 8f81c414de..965210ae15 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -265,6 +265,7 @@ A = new /obj/item/projectile/energy/electrode( loc ) use_power(200) A.current = T + A.starting = T A.yo = U.y - T.y A.xo = U.x - T.x spawn( 0 ) diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 03bf90b0f5..73ff6eab5d 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -188,6 +188,8 @@ del(A) return A.current = target + A.starting = get_turf(src) + A.original = get_turf(target) A.yo = target:y - start:y A.xo = target:x - start:x spawn( 0 ) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 59e93c23b6..c85c48e27a 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -1,7 +1,7 @@ #define EMITTER_DAMAGE_POWER_TRANSFER 450 //used to transfer power to containment field generators /obj/machinery/power/emitter - name = "Emitter" + name = "emitter" desc = "It is a heavy duty industrial laser." icon = 'icons/obj/singularity.dmi' icon_state = "emitter" @@ -60,18 +60,18 @@ /obj/machinery/power/emitter/proc/activate(mob/user as mob) if(state == 2) if(!powernet) - user << "The emitter isn't connected to a wire." + user << "\The [src] isn't connected to a wire." return 1 if(!src.locked) if(src.active==1) src.active = 0 - user << "You turn off the [src]." + user << "You turn off [src]." message_admins("Emitter turned off by [key_name(user, user.client)](?) in ([x],[y],[z] - JMP)",0,1) log_game("Emitter turned off by [user.ckey]([user]) in ([x],[y],[z])") investigate_log("turned off by [user.key]","singulo") else src.active = 1 - user << "You turn on the [src]." + user << "You turn on [src]." src.shot_number = 0 src.fire_delay = 100 message_admins("Emitter turned on by [key_name(user, user.client)](?) in ([x],[y],[z] - JMP)",0,1) @@ -79,9 +79,9 @@ investigate_log("turned on by [user.key]","singulo") update_icon() else - user << "\red The controls are locked!" + user << "The controls are locked!" else - user << "\red The [src] needs to be firmly secured to the floor first." + user << "\The [src] needs to be firmly secured to the floor first." return 1 @@ -138,86 +138,83 @@ s.set_up(5, 1, src) s.start() A.set_dir(src.dir) + A.starting = get_turf(src) switch(dir) if(NORTH) - A.yo = 20 - A.xo = 0 + A.original = locate(x, y+1, z) if(EAST) - A.yo = 0 - A.xo = 20 + A.original = locate(x+1, y, z) if(WEST) - A.yo = 0 - A.xo = -20 + A.original = locate(x-1, y, z) else // Any other - A.yo = -20 - A.xo = 0 - A.process() //TODO: Carn: check this out + A.original = locate(x, y-1, z) + A.process() /obj/machinery/power/emitter/attackby(obj/item/W, mob/user) if(istype(W, /obj/item/weapon/wrench)) if(active) - user << "Turn off the [src] first." + user << "Turn off [src] first." return switch(state) if(0) state = 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) - user.visible_message("[user.name] secures [src.name] to the floor.", \ + user.visible_message("[user.name] secures [src] to the floor.", \ "You secure the external reinforcing bolts to the floor.", \ "You hear a ratchet") src.anchored = 1 if(1) state = 0 playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) - user.visible_message("[user.name] unsecures [src.name] reinforcing bolts from the floor.", \ + user.visible_message("[user.name] unsecures [src] reinforcing bolts from the floor.", \ "You undo the external reinforcing bolts.", \ "You hear a ratchet") src.anchored = 0 if(2) - user << "\red The [src.name] needs to be unwelded from the floor." + user << "\The [src] needs to be unwelded from the floor." return if(istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W if(active) - user << "Turn off the [src] first." + user << "Turn off [src] first." return switch(state) if(0) - user << "\red The [src.name] needs to be wrenched to the floor." + user << "\The [src] needs to be wrenched to the floor." if(1) if (WT.remove_fuel(0,user)) playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) - user.visible_message("[user.name] starts to weld the [src.name] to the floor.", \ - "You start to weld the [src] to the floor.", \ + user.visible_message("[user.name] starts to weld [src] to the floor.", \ + "You start to weld [src] to the floor.", \ "You hear welding") if (do_after(user,20)) if(!src || !WT.isOn()) return state = 2 - user << "You weld the [src] to the floor." + user << "You weld [src] to the floor." connect_to_network() else - user << "\red You need more welding fuel to complete this task." + user << "You need more welding fuel to complete this task." if(2) if (WT.remove_fuel(0,user)) playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) - user.visible_message("[user.name] starts to cut the [src.name] free from the floor.", \ - "You start to cut the [src] free from the floor.", \ + user.visible_message("[user.name] starts to cut [src] free from the floor.", \ + "You start to cut [src] free from the floor.", \ "You hear welding") if (do_after(user,20)) if(!src || !WT.isOn()) return state = 1 - user << "You cut the [src] free from the floor." + user << "You cut [src] free from the floor." disconnect_from_network() else - user << "\red You need more welding fuel to complete this task." + user << "You need more welding fuel to complete this task." return if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda)) if(emagged) - user << "\red The lock seems to be broken" + user << "The lock seems to be broken." return if(src.allowed(user)) if(active) @@ -225,16 +222,16 @@ user << "The controls are now [src.locked ? "locked." : "unlocked."]" else src.locked = 0 //just in case it somehow gets locked - user << "\red The controls can only be locked when the [src] is online" + user << "The controls can only be locked when [src] is online." else - user << "\red Access denied." + user << "Access denied." return if(istype(W, /obj/item/weapon/card/emag) && !emagged) locked = 0 emagged = 1 - user.visible_message("[user.name] emags the [src.name].","\red You short out the lock.") + user.visible_message("[user.name] emags [src].","You short out the lock.") return ..() diff --git a/code/modules/projectiles/guns/projectile/dartgun.dm b/code/modules/projectiles/guns/projectile/dartgun.dm index afb1f33874..a8f93b8d25 100644 --- a/code/modules/projectiles/guns/projectile/dartgun.dm +++ b/code/modules/projectiles/guns/projectile/dartgun.dm @@ -6,6 +6,8 @@ embed = 1 //the dart is shot fast enough to pierce space suits, so I guess splintering inside the target can be a thing. Should be rare due to low damage. var/reagent_amount = 15 kill_count = 15 //shorter range + + muzzle_type = null /obj/item/projectile/bullet/chemdart/New() reagents = new/datum/reagents(reagent_amount) From 2ad8d26aebfcf7caa9ee19fbce75ac54e43c5e5f Mon Sep 17 00:00:00 2001 From: volas Date: Mon, 9 Mar 2015 11:01:00 +0300 Subject: [PATCH 108/168] Play server sound verb for admins --- code/modules/admin/admin_verbs.dm | 4 +++- code/modules/admin/verbs/playsound.dm | 24 +++++++++++++++++++++++- sound/serversound_list.txt | 11 +++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 sound/serversound_list.txt diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 6b079ef1ac..cc31febed8 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -87,7 +87,8 @@ var/list/admin_verbs_ban = list( ) var/list/admin_verbs_sounds = list( /client/proc/play_local_sound, - /client/proc/play_sound + /client/proc/play_sound, + /client/proc/play_server_sound ) var/list/admin_verbs_fun = list( /client/proc/object_talk, @@ -206,6 +207,7 @@ var/list/admin_verbs_hideable = list( /client/proc/check_words, /client/proc/play_local_sound, /client/proc/play_sound, + /client/proc/play_server_sound, /client/proc/object_talk, /client/proc/cmd_admin_dress, /client/proc/cmd_admin_gib_self, diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index 6ff66c4647..3a4b40d985 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -1,3 +1,5 @@ +var/list/sounds_cache = list() + /client/proc/play_sound(S as sound) set category = "Fun" set name = "Play Global Sound" @@ -6,6 +8,11 @@ var/sound/uploaded_sound = sound(S, repeat = 0, wait = 1, channel = 777) uploaded_sound.priority = 250 + sounds_cache += S + + if(alert("Do you ready?\nSong: [S]\nNow you can also play this sound using \"Play Server Sound\".", "Confirmation request" ,"Play", "Cancel") == "Cancel") + return + log_admin("[key_name(src)] played sound [S]") message_admins("[key_name_admin(src)] played sound [S]", 1) for(var/mob/M in player_list) @@ -14,7 +21,6 @@ feedback_add_details("admin_verb","PGS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - /client/proc/play_local_sound(S as sound) set category = "Fun" set name = "Play Local Sound" @@ -26,6 +32,22 @@ feedback_add_details("admin_verb","PLS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/proc/play_server_sound() + set category = "Fun" + set name = "Play Server Sound" + if(!check_rights(R_SOUNDS)) return + + var/list/sounds = file2list("sound/serversound_list.txt"); + sounds += "--CANCEL--" + sounds += sounds_cache + + var/melody = input("Select a sound from the server to play", "Server sound list", "--CANCEL--") in sounds + + if(melody == "--CANCEL--") return + + play_sound(melody) + feedback_add_details("admin_verb","PSS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + /* /client/proc/cuban_pete() set category = "Fun" diff --git a/sound/serversound_list.txt b/sound/serversound_list.txt new file mode 100644 index 0000000000..24cbafaf15 --- /dev/null +++ b/sound/serversound_list.txt @@ -0,0 +1,11 @@ +sound/music/1.ogg +sound/music/b12_combined_start.ogg +sound/music/main.ogg +sound/music/space.ogg +sound/music/space_asshole.ogg +sound/music/space_oddity.ogg +sound/music/title1.ogg +sound/music/title2.ogg +sound/music/traitor.ogg +sound/items/bikehorn.ogg +sound/effects/siren.ogg \ No newline at end of file From c7573a0d11a37dc2dfd14699a30a8bb687fe2eb8 Mon Sep 17 00:00:00 2001 From: volas Date: Mon, 9 Mar 2015 11:57:40 +0300 Subject: [PATCH 109/168] Antag-OOC --- baystation12.dme | 1 + code/modules/admin/admin_verbs.dm | 3 ++- code/modules/admin/verbs/antag-ooc.dm | 18 ++++++++++++++++++ icons/chattags.dmi | Bin 1147 -> 1275 bytes 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 code/modules/admin/verbs/antag-ooc.dm diff --git a/baystation12.dme b/baystation12.dme index a8ceac79f0..82d3fd6102 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -782,6 +782,7 @@ #include "code\modules\admin\verbs\adminjump.dm" #include "code\modules\admin\verbs\adminpm.dm" #include "code\modules\admin\verbs\adminsay.dm" +#include "code\modules\admin\verbs\antag-ooc.dm" #include "code\modules\admin\verbs\atmosdebug.dm" #include "code\modules\admin\verbs\BrokenInhands.dm" #include "code\modules\admin\verbs\buildmode.dm" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index cc31febed8..ceb093c5d6 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -79,7 +79,8 @@ var/list/admin_verbs_admin = list( /client/proc/toggle_antagHUD_restrictions, /client/proc/allow_character_respawn, /* Allows a ghost to respawn */ /client/proc/event_manager_panel, - /client/proc/empty_ai_core_toggle_latejoin + /client/proc/empty_ai_core_toggle_latejoin, + /client/proc/aooc ) var/list/admin_verbs_ban = list( /client/proc/unban_panel, diff --git a/code/modules/admin/verbs/antag-ooc.dm b/code/modules/admin/verbs/antag-ooc.dm new file mode 100644 index 0000000000..65cf596bab --- /dev/null +++ b/code/modules/admin/verbs/antag-ooc.dm @@ -0,0 +1,18 @@ +/client/proc/aooc() + set category = "Admin" + set name = "Antag OOC" + + if(!check_rights(R_ADMIN)) return + + var/msg = sanitize(copytext(input(usr, "", "Antag OOC") as text, 1, MAX_MESSAGE_LEN)) + if(!msg) return + + var/display_name = src.key + if(holder && holder.fakekey) + display_name = holder.fakekey + + for(var/mob/M in mob_list) + if((M.mind && M.mind.special_role && M.client) || (M.client && M.client.holder)) + M << "" + create_text_tag("aooc", "Antag-OOC:", M.client) + " [display_name]: [msg]" + + log_ooc("Antag-OOC: [key] : [msg]") \ No newline at end of file diff --git a/icons/chattags.dmi b/icons/chattags.dmi index 317ce5a992b23e3e37dc1c87c9789a1a03a4341e..5cfdcd689dbbc23276a5c8e26ead700deee7e233 100644 GIT binary patch delta 1246 zcmV<41R?wT2>S_;7g;V=-0C=2@(6I`_ zFcgL1Irk|J?JljlW|0=@(7r+l=4t{-Q_`rf?;tpuY-jl3z~ACBUZ(}aJkg8O?&1oO zZyA5aTSLOQv_qmNaZft%cmIs9LD~ej7FCF*XbkHz+JdUM+k%SET*;L7bu?Q}MQGV? z;RZTa#*hKPSyaRdUIohe>uAwR2Ys?Pa7 zBAaACXpj6cXnSI08UI%!G4lHEWNka0Hpai5PS;WZ@ZtB1gt-|y0D$Ko-GyDC?E{1j~MZk;PKUBXyu0zssKTt z1XbWybfCddIH1*Ek_oW_z=MA(fxaPXee?YlWuR1o%qjn>Q#PG(1n#T^rBLqy?U6qQ z?eb~Xm=Y_WW@|0iHOAj^-JTNkRv~e;-~s@gLcs|CH~^~)7%c(M`QcQ8NhmSd!$Pwe zXgkGX$j0n(`N=!M04yu)AZyDU*E_$JcY;o_7;=!cWsXyUqWA}MC#Ziueg=v{v#FgG zY9SO?iBaVf1DY!t>Q9vq1$6-8D6u|fK-BtX`-JW|8-qB1H9mxRXb*y4v{_R8BYzCq zrj^)urDBYKyi(~Y!NQ)CFn14|-tU5AhQC#*z{>AAW=mjWNR^u>;+I*sz&$KQ7)=&a`h!4YN7 zus|w=qE4Lkr^fMt(T3=b4-l_%1obKnK-3Ad)#k^=b{-I4i|dThK;M-hpYjUl<0-*z zHy9AUt&jG|AA|Ph?3ghnwmCaC9Cw2G4KsIga9!kbIRL16KgoI`mxJ}m@Q0!ICLH%c zs07R0rgGrhS*d5bHV!)&f&d7W7@IKfi0GNjCP0$^Bt>H6zb7aSK)KrutR|HS_Z`vz z99UK$g%#<1FQNTCK^{~#sBA<4lRo=H82Mw+eq~UJdE7?v4*?Ai2T^Z*761SM07*qo IM6N<$f^G9!7ytkO delta 1117 zcmV-j1fu)<3Hu0;7g#a~1^@s6?1SAD0001;dQ@0+L}hbha%pgMX>V=-0C=2@&9Mr? zFce1NIrk}k+Fe?8%_1q%p?!rC%+&;%CZthc-$8JbWIMwLr^RKsjx*FW(u>pX!UmCW z8GnRZL&CVUL!u{fPulahe`c*g+IY7Wl@F$94C^wAeyP|+zl3M5WQ$(wXttb+(DEAp zp%%lepr(;NjMsZS-}u(7000A-Nkl`DQ@9&N19~6rXtNgCH4&Y0U!m*c_ z-+uv<`UUheFGcsN8f#B4w6r+|q}tzBR9MXGjss}uRpyvBVTu6eSY=JXbJp$y8x5= z2`9LHGZ*V|I&~f6PN%NPexknA^M4{xx=;W(`*D}xwiZhXp69j}OR7g7+8}n|)2VCz zMISgS8PUEXj(=W=8A_i53x*GBYq2EcsKoL5&pv=6spb7tL9PJFl6`W}c7kkGs1n2a zZQso4BvI)ERiNseaT=RoF!slwJ$v3Y=EP>tyN%7dYfOK$?)IJF_rHH~)_?9}7G(gy z+10%f{SE-DT51_Bf#zKmCiSIvg3a62hwp1Izmiu0T0CFeT>&4ramE;(o4eC3= zXyEKSACxFL{5S&Y-Jb;)4V)!Hln@5iM~rMvuz9v1S`TmMBP=7i>7F2ZBDNbh`fk!(*Db#yFF!slwy>n4E=EQa`%8ici z8`JOje%}d(vyeMF@Bsjx;~3GO1Yq?5qa_dqKblT34<{!3(P_71ZLd;EaE#BYPu>Z} zU|GokSz8vk-ubP(6Z9&TM1ZU<3!F+6r9YfILG|%7R5as1uOIi4AZCq^)nZPw0-bF^uz9@Yqh=; zbdJ58wfoo$KON7Eey3K0wS4TEErAas>IA*rI;BGCTta14|?P4jz1f8b8g+g*+&N3?QA1yUoF_QhF$Y8;;! zZHVsp0P!rRaIew?qmwNZW6<84 jpD^ac_U0#y-wFN$#nIDA3E Date: Mon, 9 Mar 2015 14:20:31 +0300 Subject: [PATCH 110/168] 'Who' verb now shows the age of players on the server for admins --- code/game/verbs/who.dm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index e96bc3b4da..c26d86858d 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -25,6 +25,20 @@ entry += " - DEAD" else entry += " - DEAD" + + var/age + if(isnum(C.player_age)) + age = C.player_age + else + age = 0 + + if(age <= 1) + age = "[age]" + else if(age < 10) + age = "[age]" + + entry += " - [age]" + if(is_special_character(C.mob)) entry += " - Antagonist" entry += " (?)" From 64d6012399012b5b3d8a06baad8de47bd6d88e42 Mon Sep 17 00:00:00 2001 From: errorage Date: Tue, 16 Jul 2013 07:26:51 +0200 Subject: [PATCH 111/168] Added the ability to define the ip and computer id for a manual ban (in the banning panel). This is so mirroring bans or banning people who were not online during the round in progress does not require admins to spawn a mob, set their variables and then ban the mob. If however an admin attempts to add a manual ban for a player who was present during the current round, a player who still has a mob somewhere in the game world, the proc will prioritize the mob's ip and computer id variables, not the things entered in the banning panel form. --- code/modules/admin/DB ban/functions.dm | 7 ++++++- code/modules/admin/topic.dm | 13 ++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm index 804116fede..50f229ceaf 100644 --- a/code/modules/admin/DB ban/functions.dm +++ b/code/modules/admin/DB ban/functions.dm @@ -1,5 +1,6 @@ -datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = -1, var/reason, var/job = "", var/rounds = 0, var/banckey = null) +//Either pass the mob you wish to ban in the 'banned_mob' attribute, or the banckey, banip and bancid variables. If both are passed, the mob takes priority! If a mob is not passed, banckey is the minimum that needs to be passed! banip and bancid are optional. +datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = -1, var/reason, var/job = "", var/rounds = 0, var/banckey = null, var/banip = null, var/bancid = null) if(!check_rights(R_MOD,0) && !check_rights(R_BAN)) return @@ -40,6 +41,8 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = ip = banned_mob.client.address else if(banckey) ckey = ckey(banckey) + computerid = bancid + ip = banip var/DBQuery/query = dbcon.NewQuery("SELECT id FROM erro_player WHERE ckey = '[ckey]'") query.Execute() @@ -290,6 +293,8 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) output += "" output += "" output += "Ckey: " + output += "IP: " + output += "Computer id: " output += "Duration: " output += "Job:" output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" + output += "" + output += "" + output += "" + output += "" output += "
Ban type:Ban type:Ckey:
IP: Computer id:
Duration: Job:Ckey:
IP: CID:
Duration: Job:
" - output += "
Search: " - output += "" - output += "Ckey: " - output += "Admin ckey: " - output += "" + output += "" + output += "" + output += "" + output += "" + output += "
Search:" + output += "
Ckey: Admin ckey:
IP: CID:
" + output += "

" + output += " Match(min. 3 characters to search)
" output += "
" output += "Please note that all jobban bans or unbans are in-effect the following round." - if(adminckey || playerckey) + if(adminckey || playerckey || playerip || playercid) var/blcolor = "#ffeeee" //banned light var/bdcolor = "#ffdddd" //banned dark @@ -339,14 +342,33 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) adminckey = ckey(adminckey) playerckey = ckey(playerckey) + playerip = sql_sanitize_text(playerip) + playercid = sql_sanitize_text(playercid) + var/adminsearch = "" var/playersearch = "" - if(adminckey) - adminsearch = "AND a_ckey = '[adminckey]' " - if(playerckey) - playersearch = "AND ckey = '[playerckey]' " + var/ipsearch = "" + var/cidsearch = "" + if(!match) + if(adminckey) + adminsearch = "AND a_ckey = '[adminckey]' " + if(playerckey) + playersearch = "AND ckey = '[playerckey]' " + if(playerip) + ipsearch = "AND ip = '[playerip]' " + if(playercid) + cidsearch = "AND computerid = '[playercid]' " + else + if(adminckey && lentext(adminckey) > 3) + adminsearch = "AND a_ckey LIKE '[adminckey]%' " + if(playerckey && lentext(playerckey) > 3) + playersearch = "AND ckey LIKE '[playerckey]%' " + if(playerip && lentext(playerip) > 3) + ipsearch = "AND ip LIKE '[playerip]%' " + if(playercid && lentext(playercid) > 3) + cidsearch = "AND computerid LIKE '[playercid]%' " - var/DBQuery/select_query = dbcon.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits FROM erro_ban WHERE 1 [playersearch] [adminsearch] ORDER BY bantime DESC") + var/DBQuery/select_query = dbcon.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits, ip, computerid FROM erro_ban WHERE 1 [playersearch] [adminsearch] [ipsearch] [cidsearch] ORDER BY bantime DESC") select_query.Execute() while(select_query.NextRow()) @@ -363,6 +385,8 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) var/unbanckey = select_query.item[11] var/unbantime = select_query.item[12] var/edits = select_query.item[13] + var/ip = select_query.item[14] + var/cid = select_query.item[15] var/lcolor = blcolor var/dcolor = bdcolor @@ -388,6 +412,10 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) output += "[ackey]" output += "[(unbanned) ? "" : "Unban"]" output += "" + output += "" + output += "IP: [ip]" + output += "CIP: [cid]" + output += "" output += "" output += "Reason: [(unbanned) ? "" : "(Edit)"] \"[reason]\"" output += "" @@ -408,4 +436,4 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) output += "
" - usr << browse(output,"window=lookupbans;size=900x500") \ No newline at end of file + usr << browse(output,"window=lookupbans;size=900x700") \ No newline at end of file diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index c9d3306797..0471d4b2e5 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -52,11 +52,16 @@ log_admin("[key_name(usr)] has spawned vox raiders.") if(!src.makeVoxRaiders()) usr << "\red Unfortunately there weren't enough candidates available." - else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"]) + else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbsearchcid"]) var/adminckey = href_list["dbsearchadmin"] var/playerckey = href_list["dbsearchckey"] + var/playerip = href_list["dbsearchip"] + var/playercid = href_list["dbsearchcid"] + var/match = 0 + if("dbmatch" in href_list) + match = 1 - DB_ban_panel(playerckey, adminckey) + DB_ban_panel(playerckey, adminckey, playerip, playercid, match) return else if(href_list["dbbanedit"]) From ca079144249b3cb010f50a8cf4dfc26e25445e8a Mon Sep 17 00:00:00 2001 From: volas Date: Thu, 10 Apr 2014 00:45:51 +0400 Subject: [PATCH 113/168] Ability to search bans by bantype --- code/modules/admin/DB ban/functions.dm | 225 ++++++++++++++----------- code/modules/admin/topic.dm | 6 +- 2 files changed, 129 insertions(+), 102 deletions(-) diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm index d5354dfa41..ae8c8c4865 100644 --- a/code/modules/admin/DB ban/functions.dm +++ b/code/modules/admin/DB ban/functions.dm @@ -263,7 +263,7 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) holder.DB_ban_panel() -/datum/admins/proc/DB_ban_panel(var/playerckey = null, var/adminckey = null, var/playerip = null, var/playercid = null, var/match = null) +/datum/admins/proc/DB_ban_panel(var/playerckey = null, var/adminckey = null, var/playerip = null, var/playercid = null, var/dbbantype = null, var/match = null) if(!usr.client) return @@ -318,122 +318,147 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) output += "Ckey: " output += "Admin ckey: " output += "IP: " - output += "CID: " + output += "CID: " + output += "Ban type:" output += "

" - output += " Match(min. 3 characters to search)
" + output += " Match(min. 3 characters to search by key or ip, and 7 to search by cid)
" output += "" - output += "Please note that all jobban bans or unbans are in-effect the following round." + output += "Please note that all jobban bans or unbans are in-effect the following round.
" + output += "This search shows only last 100 bans." - if(adminckey || playerckey || playerip || playercid) - - var/blcolor = "#ffeeee" //banned light - var/bdcolor = "#ffdddd" //banned dark - var/ulcolor = "#eeffee" //unbanned light - var/udcolor = "#ddffdd" //unbanned dark - - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" + if(adminckey || playerckey || playerip || playercid || dbbantype) adminckey = ckey(adminckey) playerckey = ckey(playerckey) playerip = sql_sanitize_text(playerip) playercid = sql_sanitize_text(playercid) - var/adminsearch = "" - var/playersearch = "" - var/ipsearch = "" - var/cidsearch = "" - if(!match) - if(adminckey) - adminsearch = "AND a_ckey = '[adminckey]' " - if(playerckey) - playersearch = "AND ckey = '[playerckey]' " - if(playerip) - ipsearch = "AND ip = '[playerip]' " - if(playercid) - cidsearch = "AND computerid = '[playercid]' " - else - if(adminckey && lentext(adminckey) > 3) - adminsearch = "AND a_ckey LIKE '[adminckey]%' " - if(playerckey && lentext(playerckey) > 3) - playersearch = "AND ckey LIKE '[playerckey]%' " - if(playerip && lentext(playerip) > 3) - ipsearch = "AND ip LIKE '[playerip]%' " - if(playercid && lentext(playercid) > 3) - cidsearch = "AND computerid LIKE '[playercid]%' " + if(adminckey || playerckey || playerip || playercid || dbbantype) - var/DBQuery/select_query = dbcon.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits, ip, computerid FROM erro_ban WHERE 1 [playersearch] [adminsearch] [ipsearch] [cidsearch] ORDER BY bantime DESC") - select_query.Execute() + var/blcolor = "#ffeeee" //banned light + var/bdcolor = "#ffdddd" //banned dark + var/ulcolor = "#eeffee" //unbanned light + var/udcolor = "#ddffdd" //unbanned dark - while(select_query.NextRow()) - var/banid = select_query.item[1] - var/bantime = select_query.item[2] - var/bantype = select_query.item[3] - var/reason = select_query.item[4] - var/job = select_query.item[5] - var/duration = select_query.item[6] - var/expiration = select_query.item[7] - var/ckey = select_query.item[8] - var/ackey = select_query.item[9] - var/unbanned = select_query.item[10] - var/unbanckey = select_query.item[11] - var/unbantime = select_query.item[12] - var/edits = select_query.item[13] - var/ip = select_query.item[14] - var/cid = select_query.item[15] - - var/lcolor = blcolor - var/dcolor = bdcolor - if(unbanned) - lcolor = ulcolor - dcolor = udcolor - - var/typedesc ="" - switch(bantype) - if("PERMABAN") - typedesc = "PERMABAN" - if("TEMPBAN") - typedesc = "TEMPBAN
([duration] minutes [(unbanned) ? "" : "(Edit))"]
Expires [expiration]
" - if("JOB_PERMABAN") - typedesc = "JOBBAN
([job])" - if("JOB_TEMPBAN") - typedesc = "TEMP JOBBAN
([job])
([duration] minutes
Expires [expiration]" - - output += "
" - output += "" - output += "" - output += "" - output += "" - output += "" + output += "
TYPECKEYTIME APPLIEDADMINOPTIONS
[typedesc][ckey][bantime][ackey][(unbanned) ? "" : "Unban"]
" + output += "" + output += "" + output += "" + output += "" + output += "" + output += "" output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - if(edits) + + var/adminsearch = "" + var/playersearch = "" + var/ipsearch = "" + var/cidsearch = "" + var/bantypesearch = "" + + if(!match) + if(adminckey) + adminsearch = "AND a_ckey = '[adminckey]' " + if(playerckey) + playersearch = "AND ckey = '[playerckey]' " + if(playerip) + ipsearch = "AND ip = '[playerip]' " + if(playercid) + cidsearch = "AND computerid = '[playercid]' " + else + if(adminckey && lentext(adminckey) > 3) + adminsearch = "AND a_ckey LIKE '[adminckey]%' " + if(playerckey && lentext(playerckey) > 3) + playersearch = "AND ckey LIKE '[playerckey]%' " + if(playerip && lentext(playerip) > 3) + ipsearch = "AND ip LIKE '[playerip]%' " + if(playercid && lentext(playercid) > 7) + cidsearch = "AND computerid LIKE '[playercid]%' " + + if(dbbantype) + bantypesearch = "AND bantype = " + + switch(dbbantype) + if(BANTYPE_TEMP) + bantypesearch += "'TEMPBAN' " + if(BANTYPE_JOB_PERMA) + bantypesearch += "'JOB_PERMABAN' " + if(BANTYPE_JOB_TEMP) + bantypesearch += "'JOB_TEMPBAN' " + else + bantypesearch += "'PERMABAN' " + + var/DBQuery/select_query = dbcon.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits, ip, computerid FROM erro_ban WHERE 1 [playersearch] [adminsearch] [ipsearch] [cidsearch] [bantypesearch] ORDER BY bantime DESC LIMIT 100") + select_query.Execute() + + while(select_query.NextRow()) + var/banid = select_query.item[1] + var/bantime = select_query.item[2] + var/bantype = select_query.item[3] + var/reason = select_query.item[4] + var/job = select_query.item[5] + var/duration = select_query.item[6] + var/expiration = select_query.item[7] + var/ckey = select_query.item[8] + var/ackey = select_query.item[9] + var/unbanned = select_query.item[10] + var/unbanckey = select_query.item[11] + var/unbantime = select_query.item[12] + var/edits = select_query.item[13] + var/ip = select_query.item[14] + var/cid = select_query.item[15] + + var/lcolor = blcolor + var/dcolor = bdcolor + if(unbanned) + lcolor = ulcolor + dcolor = udcolor + + var/typedesc ="" + switch(bantype) + if("PERMABAN") + typedesc = "PERMABAN" + if("TEMPBAN") + typedesc = "TEMPBAN
([duration] minutes [(unbanned) ? "" : "(Edit))"]
Expires [expiration]
" + if("JOB_PERMABAN") + typedesc = "JOBBAN
([job])" + if("JOB_TEMPBAN") + typedesc = "TEMP JOBBAN
([job])
([duration] minutes
Expires [expiration]" + output += "
" - output += "" + output += "" + output += "" + output += "" + output += "" + output += "" + output += "" + output += "" + output += "" + output += "" output += "" output += "" - output += "" + output += "" output += "" - if(unbanned) - output += "" - output += "" + if(edits) + output += "" + output += "" + output += "" + output += "" + output += "" + output += "" + if(unbanned) + output += "" + output += "" + output += "" + output += "" + output += "" output += "" - output += "" - output += "" - output += "" - output += "
TYPECKEYTIME APPLIEDADMINOPTIONS
IP: [ip]CIP: [cid]
Reason: [(unbanned) ? "" : "(Edit)"] \"[reason]\"
EDITS[typedesc][ckey][bantime][ackey][(unbanned) ? "" : "Unban"]
IP: [ip]CIP: [cid]
[edits]Reason: [(unbanned) ? "" : "(Edit)"] \"[reason]\"
UNBANNED by admin [unbanckey] on [unbantime]
EDITS
[edits]
UNBANNED by admin [unbanckey] on [unbantime]
 
 
" + output += "
" usr << browse(output,"window=lookupbans;size=900x700") \ No newline at end of file diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 0471d4b2e5..1f98e4ee3a 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -52,16 +52,18 @@ log_admin("[key_name(usr)] has spawned vox raiders.") if(!src.makeVoxRaiders()) usr << "\red Unfortunately there weren't enough candidates available." - else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbsearchcid"]) + else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbsearchcid"] || href_list["dbsearchbantype"]) var/adminckey = href_list["dbsearchadmin"] var/playerckey = href_list["dbsearchckey"] var/playerip = href_list["dbsearchip"] var/playercid = href_list["dbsearchcid"] + var/dbbantype = text2num(href_list["dbsearchbantype"]) var/match = 0 + if("dbmatch" in href_list) match = 1 - DB_ban_panel(playerckey, adminckey, playerip, playercid, match) + DB_ban_panel(playerckey, adminckey, playerip, playercid, dbbantype, match) return else if(href_list["dbbanedit"]) From a9b30da7cc679116bf9be6b45c51312824c7dc0b Mon Sep 17 00:00:00 2001 From: volas Date: Mon, 9 Mar 2015 16:53:08 +0300 Subject: [PATCH 114/168] Small correction --- code/modules/admin/DB ban/functions.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm index ae8c8c4865..32e633a200 100644 --- a/code/modules/admin/DB ban/functions.dm +++ b/code/modules/admin/DB ban/functions.dm @@ -371,13 +371,13 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) if(playercid) cidsearch = "AND computerid = '[playercid]' " else - if(adminckey && lentext(adminckey) > 3) + if(adminckey && lentext(adminckey) >= 3) adminsearch = "AND a_ckey LIKE '[adminckey]%' " - if(playerckey && lentext(playerckey) > 3) + if(playerckey && lentext(playerckey) >= 3) playersearch = "AND ckey LIKE '[playerckey]%' " - if(playerip && lentext(playerip) > 3) + if(playerip && lentext(playerip) >= 3) ipsearch = "AND ip LIKE '[playerip]%' " - if(playercid && lentext(playercid) > 7) + if(playercid && lentext(playercid) >= 7) cidsearch = "AND computerid LIKE '[playercid]%' " if(dbbantype) From c03535f03dd31bfae2c7404763309095f2928d81 Mon Sep 17 00:00:00 2001 From: Neerti Date: Mon, 9 Mar 2015 11:07:21 -0400 Subject: [PATCH 115/168] Makes the width of the nanoUI for air alarms smaller. --- code/game/machinery/alarm.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 0f2af7485f..32847060d2 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -488,7 +488,7 @@ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if(!ui) - ui = new(user, src, ui_key, "air_alarm.tmpl", src.name, 625, 625, master_ui = master_ui, custom_state = custom_state) + ui = new(user, src, ui_key, "air_alarm.tmpl", src.name, 325, 625, master_ui = master_ui, custom_state = custom_state) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) From 721bdac9046200843f1662adbc4ad428330e04d2 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 11:41:27 -0400 Subject: [PATCH 116/168] Fixes atmos space vent pump Fixes atmos space vent pump not being on and shifts it closer so that it is visible from inside atmos. --- maps/exodus-1.dmm | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index e19eaf628a..8b680f0f3a 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -6216,7 +6216,7 @@ "cpB" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/engineering/atmos) "cpC" = (/obj/machinery/atmospherics/binary/pump,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos) "cpD" = (/obj/machinery/atmospherics/valve/digital/open{name = "Nitrogen Outlet Valve"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/engineering/atmos) -"cpE" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/space,/area/space) +"cpE" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/plating/airless,/area/engineering/atmos) "cpF" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2_in"; name = "Nitrogen Supply Control"; output_tag = "n2_out"; sensors = list("n2_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/engineering/atmos) "cpG" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/space,/area/space) "cpH" = (/turf/simulated/floor,/area/engineering/atmos) @@ -6853,7 +6853,7 @@ "cBO" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 4},/turf/simulated/floor/plating/airless,/area/medical/virology) "cBP" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating/airless,/area/medical/virology) "cBQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/plating/airless,/area/medical/virology) -"cBR" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1},/turf/simulated/floor/plating/airless,/area/engineering/atmos) +"cBR" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/structure/lattice,/turf/space,/area/space) "cBS" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/engineering/atmos) "cBT" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) "cBU" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) @@ -7472,17 +7472,17 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpHcpHcpHcpHcpHcwUcpHcpHcpHcwUcpHcpHcpHcpHcpHcqYcpHcpHcwVcqWcwXcwWcwWcwXcwYcwXcxacwZcxbcwWcxdcxccxocxlcxpcvYcoTcxqcoTcxrcxscpacpacxtcpacxucpjcxvcxvcxwcwucwtcpjbPxcvMcvNcxKcxLcxMcxNcxOcxNcxPcvNcxQcxRcrGaaaaaaaaaaaaaaaaaacqvcxScxTcxUcxVcxWcxXcxYcxZcuTcyacuScxAcuTcxBcqvcqvcqvcqvaaaaaacdOcplcpmcplctbcpocppcrNcrNcyecyfcrNcygcomcomcomcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaaaaaaaaaaaaaaaaaaaaaaacyhaaaaaaaaacyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpHcsbcsacsacxDcxCcsacxDcsacxEcxDcsacsacsacsacxFcsacxGcxIcxHcvKcpHcpHcxJcyccybcyjcyicykcpHcymcylcyncyncyqcyocoTcxqcyrcnOcyscpacytcpacyvcyucpjcpjcpjcpjcpjcpjcpjbPxcvMcvNcyMcyNcxLcyOcxLcxNcyPcvNcyQcyRcrGaaaaaaaaaaaaaaaaaacqvcuVcySctFctFcyTcywcyVcyWctMctDctNcyxctMcuRcyYcqvaaaaaaaaaaaacdOcplcplcplckXcyZczacrNcrNcrNcyfcrNczbcrNczccrNczdaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpHcqXcpHcpHcpHcwUcpHcpHcpHcwUcpHcpHcpHcpHcpHcqYcpHcybcpHcyycvKcpHcpHcyzcwYcyAcyBcvXcyCcvXcvXcylcyEcyDcyFcyocoTcxqcoTcnOcyHcyGcyJcyIcyKcpacnOcyLczJczJcyUczLczMczNczOcvNcxNczPczQcxNczRczSczTcvNczUczVcrGaaaaaaaaaaaaaaaaaacqvczWcuMczXcuVczYczZcAactFcAbcAccsPcyxczWcyXcAecqvaaaaaaaaaaaackEcdOcAfcAgcAgczecAicAjcAkcAlcAmcAncAocApcAqcokcAraaaaaacrPaafcwjcwjcwjcwjcwjaaackxaafcwjcwjcwjcwjcwjaaacrPaaacyhaaaaaacyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhaaaaaacyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaczfcpHcqXcpHczgcrVcrUcrVczhcrVcrUcrVczhcrVcrVcrVczjczkczjcrZczlcyAczmczocznczqczpczrcvXcztczscvXcvXcvXcvXcvXczucnLczvcnLcnOcnOcnOcnOcnOcnOcnOcnOczwczJczJczxcANcAObPxcAPcvNcAQcARczycATcAUcAVcAWcvNcAXcAYcrGaaaaaaaaaaaaaaaaaacqvcuQcAZcAectFcBacBbcBcctFcBdcBeczAczzczBcBeczDcqvaafaafaaaaaaaaaaaabquaaacdOcBlcBmcBncBocBpcBmcBqcBrcBpcBmcBscdOaaaaaabZSaaaaafaaaaafaaaaafaaackxaaaaafaaaaafaafaafaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaaaaaaaaaamaaaaaaaaaczEcpHcqXcpHcybcyccqXcpHcybcyccqXcpHcybcyccpHcpHcxJcpHcybcycczFczHczGczKczIcAhcAdcAtcvXcAvcAucAxcAwcAycujcAAcAzcujcABcujcACculcADcAFcAEcAEcAHcAIcBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcCccCbcCacCdcvNcrGcCecrGaaaaaaaaaaaaaaaaaacqvctFcCfcuVctFcCgcChcCictFcCjcCkcqycgvcAJcCncCocrHaaaaaaaaaaaaaaaaaacgwaafcdOcCqcluclUcomclsclpclqcomcloclVclWcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaafaamaafaafaafczEcALcAKcAScAMcBgcBfcBicBhcBkcBjcBucBtcBgcpHcALcBvcBycBxcBkcBzcnycnycnycnycnycnycnycnycBBcBAczucBCcBDcoTcBEcoTcoTcxqcoTcoTcBFcoTcBDcBGcBIcBHcBJciCcCNcCOcCPcCQcAObPwcCRcCScCTcCacAGcAVcBwcCacBLcBKcBMcCYcCXaaaaaaaaaaaaaaaaaacqvcBNctDcuQcDacDbcuQcDccDdcDeaafaaachxcBPcBOcBQaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcBRaaaaaaaaaaamaaaaaaaaacBScBUcBTcCrcCpcCtcCscCucCpcCtcCscCucCpcCtcCvcCvcCwcCucCpcCtcCxcnyaaacCzcCycCBcCAcCDcCCcCFcCEcCGcCGcCIcCHcCKcCJcCMcCLcCJcCMcCKcCUcCWcCVcCUczuczucAOcDNcDOcDPcDQcAObNUcDRcDScDTcCacCbcDUcCbcCacDgcCZcDfaafaaaaaaaaaaaaaaaaaaaaacqvcBNcDVcDjcDXcDXcDjcsPcDYcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDZcplcplcomcEacplcplcomcEacplcplcdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcqLcqLcpEcpIcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaacDlcDkcDncDmcDpcDocCFcDqcCGcDrcDtcDscDvcDucDxcDwcDzcDycDvcDAcDCcDBcCUaaaaafcAOcEBcECcEDaafaaabNUbPxbPxbSkcCaclZcEFclYcCaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcDDcuXcDEcEJcEJcDEcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacmTaafaaaaaaaafaafaaaaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaacrPaafaafaaaaaaaaqaaaaaaaaaaafcgFcmscmmcDFcgFcmscmmcDFcgFcmscmmcDGcgFaaacgFcDHcmmcDGcgFaaaaafaaacDlcDIcDKcDJcDMcDLcEbcDWcCGcEccEecEdcDvcEfcEhcEgcEjcEicDvcEkcEmcElcCUaaaaaacAOcFgcFhcFiaaaaaabNUbPxbPxbNUcCacmUcmUcmUcCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcEncFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcmYcmYcmYckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacmZaaaaaaaaacrPcrPcrPbZScrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaaaamaaaaaaaaaaafcgFcEocEqcEpcgFcErcEtcEscgFcEucEwcEvcgFaafcgFcExcEzcEycgFaaaaafaaacDlcEAcDncDMcDMcEEcEHcEGcEMcEIcEOcENcEQcEPcEScERcEUcETcEWcEVcEYcEXcCUaafaaacFJcDNcFKcAOcFLaaabNUcFMbPxcFNcFOaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcFPcFQcDEcDEcDEcFRcFPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqpbqpbqpaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcfTaafcrPaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaamaaaaaaaafaafcgFcEZcFacEZcgFcFbcFccFbcgFcFdcFecFdcgFaaacgFcFdcFdcFfcgFaaaaafaaacDlcCycFjcDJcDMcDocFkcDqcCGcFlcFpcFmcDvcFqcFscFrcFscFtcDvcFucFwcFvcCUaaLcGgcGgcGgcGgcGgcGgcGgbNUciEciDcGjaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaafaamaaaaafaafaaacgFcEZcFxcEZcgFcFbcFycFbcgFcFdcFzcFdcgFaafcgFcFdcFdcFdcgFaafaafaafcFBcFAcFDcFCcFFcFEcFGcDqcCGcFHcFScFIcDvcFTcFVcFUcFXcFWcDvcFYcGacFZcCUaaacGgcGgcGgcGgcGgcGgcGgcGFcGGcGHbNUaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZSaaaaaacgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFaaacGbcgFcgFcgFcgFaaaaaaaaaaaacBAcBAcBAcBAcBAcGdcGccGccGccGccGecGccGfcGicGhcGicGkcGccGccGmcGccGccGccGgcGgcGgcGgcGgcGgcGgaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhabgaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScGncGpcGocGrcGqcGtcGscGvcGucGxcGwcGzcGycGBcGAcGDcGCcGIcGEcGKcGJcGEcGccGgcGgcGgcGgcGgcGgcGgaafaaacGQcGLcGQcGLcGQcGLaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaIaaaaaaczfcpHcqXcpHczgcrVcrUcrVczhcrVcrUcrVczhcrVcrVcrVczjczkczjcrZczlcyAczmczocznczqczpczrcvXcztczscvXcvXcvXcvXcvXczucnLczvcnLcnOcnOcnOcnOcnOcnOcnOcnOczwczJczJczxcANcAObPxcAPcvNcAQcARczycATcAUcAVcAWcvNcAXcAYcrGaaaaaaaaaaaaaaaaaacqvcuQcAZcAectFcBacBbcBcctFcBdcBeczAczzczBcBeczDcqvaafaafaaaaaaaaaaaabquaaacdOcBlcBmcBncBocBpcBmcBqcBrcBpcBmcBscdOaaaaaabZSaaaaafaaaaafaaaaafaaackxaaaaafaaaaafaafaafaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaaaaaaaIaaaaaaczEcpHcqXcpHcybcyccqXcpHcybcyccqXcpHcybcyccpHcpHcxJcpHcybcycczFczHczGczKczIcAhcAdcAtcvXcAvcAucAxcAwcAycujcAAcAzcujcABcujcACculcADcAFcAEcAEcAHcAIcBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcCccCbcCacCdcvNcrGcCecrGaaaaaaaaaaaaaaaaaacqvctFcCfcuVctFcCgcChcCictFcCjcCkcqycgvcAJcCncCocrHaaaaaaaaaaaaaaaaaacgwaafcdOcCqcluclUcomclsclpclqcomcloclVclWcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaaIaafaafczEcALcAKcAScAMcBgcBfcBicBhcBkcBjcBucBtcBgcpHcALcBvcBycBxcBkcBzcnycnycnycnycnycnycnycnycBBcBAczucBCcBDcoTcBEcoTcoTcxqcoTcoTcBFcoTcBDcBGcBIcBHcBJciCcCNcCOcCPcCQcAObPwcCRcCScCTcCacAGcAVcBwcCacBLcBKcBMcCYcCXaaaaaaaaaaaaaaaaaacqvcBNctDcuQcDacDbcuQcDccDdcDeaafaaachxcBPcBOcBQaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcpEaaaaaaaaIaaaaaacBScBUcBTcCrcCpcCtcCscCucCpcCtcCscCucCpcCtcCvcCvcCwcCucCpcCtcCxcnyaaacCzcCycCBcCAcCDcCCcCFcCEcCGcCGcCIcCHcCKcCJcCMcCLcCJcCMcCKcCUcCWcCVcCUczuczucAOcDNcDOcDPcDQcAObNUcDRcDScDTcCacCbcDUcCbcCacDgcCZcDfaafaaaaaaaaaaaaaaaaaaaaacqvcBNcDVcDjcDXcDXcDjcsPcDYcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDZcplcplcomcEacplcplcomcEacplcplcdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcpIcBRcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaacDlcDkcDncDmcDpcDocCFcDqcCGcDrcDtcDscDvcDucDxcDwcDzcDycDvcDAcDCcDBcCUaaaaafcAOcEBcECcEDaafaaabNUbPxbPxbSkcCaclZcEFclYcCaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcDDcuXcDEcEJcEJcDEcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacmTaafaaaaaaaafaafaaaaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaacrPaafaafaaaaaqaaaaaaaafcgFcmscmmcDFcgFcmscmmcDFcgFcmscmmcDGcgFaaacgFcDHcmmcDGcgFaaaaafaaacDlcDIcDKcDJcDMcDLcEbcDWcCGcEccEecEdcDvcEfcEhcEgcEjcEicDvcEkcEmcElcCUaaaaaacAOcFgcFhcFiaaaaaabNUbPxbPxbNUcCacmUcmUcmUcCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcEncFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcmYcmYcmYckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacmZaaaaaaaaacrPcrPcrPbZScrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaIaaaaaaaafcgFcEocEqcEpcgFcErcEtcEscgFcEucEwcEvcgFaafcgFcExcEzcEycgFaaaaafaaacDlcEAcDncDMcDMcEEcEHcEGcEMcEIcEOcENcEQcEPcEScERcEUcETcEWcEVcEYcEXcCUaafaaacFJcDNcFKcAOcFLaaabNUcFMbPxcFNcFOaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcFPcFQcDEcDEcDEcFRcFPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqpbqpbqpaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcfTaafcrPaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaIaaaaafaafcgFcEZcFacEZcgFcFbcFccFbcgFcFdcFecFdcgFaaacgFcFdcFdcFfcgFaaaaafaaacDlcCycFjcDJcDMcDocFkcDqcCGcFlcFpcFmcDvcFqcFscFrcFscFtcDvcFucFwcFvcCUaaLcGgcGgcGgcGgcGgcGgcGgbNUciEciDcGjaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaIaafaafaaacgFcEZcFxcEZcgFcFbcFycFbcgFcFdcFzcFdcgFaafcgFcFdcFdcFdcgFaafaafaafcFBcFAcFDcFCcFFcFEcFGcDqcCGcFHcFScFIcDvcFTcFVcFUcFXcFWcDvcFYcGacFZcCUaaacGgcGgcGgcGgcGgcGgcGgcGFcGGcGHbNUaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaacgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFcgFaaacGbcgFcgFcgFcgFaaaaaaaaaaaacBAcBAcBAcBAcBAcGdcGccGccGccGccGecGccGfcGicGhcGicGkcGccGccGmcGccGccGccGgcGgcGgcGgcGgcGgcGgaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhabgaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScGncGpcGocGrcGqcGtcGscGvcGucGxcGwcGzcGycGBcGAcGDcGCcGIcGEcGKcGJcGEcGccGgcGgcGgcGgcGgcGgcGgaafaaacGQcGLcGQcGLcGQcGLaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcHncjVcHpaaacHncjVcHpaaacHncjVcHpaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScGncGOcGNcGTcGPcGVcGUcGXcGWcGZcGYcHbcHacHdcHccHdcHdcHdcHecHdcHfcHgcGccGgcGgcGgcGgcGgcGgcGgaafaafcHhcHhcHhcHhcHhcHhaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncjWcHpaaacHncjWcHpaaacHncjWcHpaafaafaaaaafaaaaaacHKaafcGQcGRcGRcGRcGScGncGOcHicHkcHjcHlcGUcHocHmcHrcGKcGKcGKcHtcHscHucGKcGKcHmcHwcHvcHxcGccGccGccHyaaaaaaaaaaaacHzaaacHAcHAcHAcHAcHAcHAaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncjWcHpaaacHncjWcHpaafcHncjWcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScGncHCcHBcHEcHDcHGcHFcHIcHHcHLcHJcHJcHJcHNcHMcHOcHJcHJcHPcHRcHQcHTcHScHVcHUcHXcHWcHWcHWcHWcHWcHWcHYcHZcHYcHZcHYcHhaafcGMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 6bfa4ef3d54d6f2f2512f6397d5264af735b8821 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 11:59:02 -0400 Subject: [PATCH 117/168] Fixes AI freelook runtime --- code/modules/mob/living/silicon/ai/freelook/chunk.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index 11c8715979..90147f5b26 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -75,8 +75,9 @@ for(var/camera in cameras) var/obj/machinery/camera/c = camera - if(!c) + if(!istype(c)) cameras -= c + continue if(!c.can_use()) continue From 26cb0fe2c6d0b589485a751fe7fa7301471485db Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 12:04:04 -0400 Subject: [PATCH 118/168] Fixes medical records laptop runtime --- code/game/machinery/computer3/computers/medical.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/game/machinery/computer3/computers/medical.dm b/code/game/machinery/computer3/computers/medical.dm index fa75c69ac6..42fcb9e5e7 100644 --- a/code/game/machinery/computer3/computers/medical.dm +++ b/code/game/machinery/computer3/computers/medical.dm @@ -86,12 +86,13 @@ if(3.0) dat += text("Records Maintenance
\nBackup To Disk
\nUpload From disk
\nDelete All Records
\n
\nBack", src, src, src, src) if(4.0) - var/icon/front = active1.fields["photo_front"] - var/icon/side = active1.fields["photo_side"] - usr << browse_rsc(front, "front.png") - usr << browse_rsc(side, "side.png") dat += "
Medical Record

" if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))) + var/icon/front = active1.fields["photo_front"] + var/icon/side = active1.fields["photo_side"] + usr << browse_rsc(front, "front.png") + usr << browse_rsc(side, "side.png") + dat += "
Name: [active1.fields["name"]] \ ID: [active1.fields["id"]]
\n \ Sex: [active1.fields["sex"]]
\n \ From 385ff4f2fa93973cbf3c40df302d38b4529b663c Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 11:51:41 -0400 Subject: [PATCH 119/168] Examine tab modularity Also fixes antag info text sticking around if antag/observer status is lost --- code/game/atoms.dm | 1 + code/modules/examine/examine.dm | 18 +++++++++++++----- code/modules/mob/mob.dm | 5 +---- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 6900a2e030..63c309bb0b 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -201,6 +201,7 @@ its easier to just keep the beam vertical. f_name += "oil-stained [name][infix]." user << "\icon[src] That's [f_name] [suffix]" + user << desc return distance == -1 || (get_dist(src, user) <= distance) diff --git a/code/modules/examine/examine.dm b/code/modules/examine/examine.dm index 6f797f5cb9..3f15fa22d4 100644 --- a/code/modules/examine/examine.dm +++ b/code/modules/examine/examine.dm @@ -40,18 +40,17 @@ /client/var/description_holders[0] -/client/proc/update_description_holders(atom/A) +/client/proc/update_description_holders(atom/A, update_antag_info=0) description_holders["info"] = A.get_description_info() description_holders["fluff"] = A.get_description_fluff() - if(mob.mind && mob.mind.special_role || isobserver(src)) //ghosts don't have minds. - description_holders["antag"] = A.get_description_antag() + description_holders["antag"] = (update_antag_info)? A.get_description_antag() : "" description_holders["name"] = "[A.name]" description_holders["icon"] = "\icon[A]" description_holders["desc"] = A.desc /client/Stat() - ..() + . = ..() if(statpanel("Examine")) stat(null,"[description_holders["icon"]] [description_holders["name"]]") //The name, written in big letters. stat(null,"[description_holders["desc"]]") //the default examine text. @@ -60,4 +59,13 @@ if(description_holders["fluff"]) stat(null,"[description_holders["fluff"]]") //Yellow, fluff-related text. if(description_holders["antag"]) - stat(null,"[description_holders["antag"]]") //Red, malicious antag-related text \ No newline at end of file + stat(null,"[description_holders["antag"]]") //Red, malicious antag-related text + +//override examinate verb to update description holders when things are examined +/mob/examinate(atom/A as mob|obj|turf in view()) + if(..()) + return 1 + + var/is_antag = ((mind && mind.special_role) || isobserver(src)) //ghosts don't have minds + if(client) + client.update_description_holders(A, is_antag) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index c3e5fbf90b..16ff11ea9b 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -228,13 +228,10 @@ var/list/slot_equipment_priority = list( \ if((is_blind(src) || usr.stat) && !isobserver(src)) src << "Something is there but you can't see it." - return + return 1 face_atom(A) A.examine(src) - - if(client) - client.update_description_holders(A) /mob/verb/pointed(atom/A as mob|obj|turf in view()) set name = "Point To" From e840ba2d2554baac1f71024d3c3552d664c4d4ae Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 12:12:31 -0400 Subject: [PATCH 120/168] Fixes photocopier runtime --- code/modules/paperwork/paper.dm | 6 +++--- code/modules/paperwork/photocopier.dm | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 3608386f9a..73d7005eb9 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -23,9 +23,9 @@ var/stamps //The (text for the) stamps on the paper. var/fields //Amount of user created fields var/list/stamped - var/ico[0] //Icons and - var/offset_x[0] //offsets stored for later - var/offset_y[0] //usage by the photocopier + var/list/ico[0] //Icons and + var/list/offset_x[0] //offsets stored for later + var/list/offset_y[0] //usage by the photocopier var/rigged = 0 var/spam_flag = 0 diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 83b27b7a2b..7f0ed21c78 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -175,7 +175,7 @@ c.offset_y = copy.offset_y var/list/temp_overlays = copy.overlays //Iterates through stamps var/image/img //and puts a matching - for (var/j = 1, j <= temp_overlays.len, j++) //gray overlay onto the copy + for (var/j = 1, j <= min(temp_overlays.len, copy.ico.len), j++) //gray overlay onto the copy if (findtext(copy.ico[j], "cap") || findtext(copy.ico[j], "cent")) img = image('icons/obj/bureaucracy.dmi', "paper_stamp-circle") else if (findtext(copy.ico[j], "deny")) From 188c4491c75e00f50b8a520cdb4eca491a6b1569 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 12:20:08 -0400 Subject: [PATCH 121/168] Fixes xenoarch runtime --- code/modules/research/xenoarchaeology/finds/finds.dm | 8 ++------ .../research/xenoarchaeology/finds/finds_talkingitem.dm | 6 +++++- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm index 518b2ddc40..39b01f0580 100644 --- a/code/modules/research/xenoarchaeology/finds/finds.dm +++ b/code/modules/research/xenoarchaeology/finds/finds.dm @@ -545,13 +545,9 @@ new_item.desc = src.desc if(talkative) - new_item.talking_atom = new() - talking_atom.holder_atom = new_item - talking_atom.init() + new_item.talking_atom = new(new_item) del(src) else if(talkative) - src.talking_atom = new() - talking_atom.holder_atom = src - talking_atom.init() + src.talking_atom = new(src) diff --git a/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm b/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm index 65a2e24ca0..58cfdbb031 100644 --- a/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm +++ b/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm @@ -14,6 +14,10 @@ var/talk_interval = 50 var/talk_chance = 10 +/datum/talking_atom/New(atom/holder) + holder_atom = holder + init() + /datum/talking_atom/proc/init() if(holder_atom) processing_objects.Add(src) @@ -55,7 +59,7 @@ if(prob(30)) var/list/options = list("[holder_atom] seems to be listening intently to [source]...",\ - "[holder_atom] seems to be focussing on [source]...",\ + "[holder_atom] seems to be focusing on [source]...",\ "[holder_atom] seems to turn it's attention to [source]...") holder_atom.loc.visible_message("\blue \icon[holder_atom] [pick(options)]") From b60a045d702df225914076003c254b29e597b63c Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 12:43:10 -0400 Subject: [PATCH 122/168] Fixes door runtime, removes user = null hack --- code/game/machinery/doors/door.dm | 12 +++++------- code/game/machinery/doors/windowdoor.dm | 3 --- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 32d2b314dc..19b5b907a8 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -126,9 +126,6 @@ if(user.last_airflow > world.time - vsc.airflow_delay) //Fakkit return src.add_fingerprint(user) - if(!src.requiresID()) - user = null - if(density) if(allowed(user)) open() else flick("door_deny", src) @@ -193,10 +190,6 @@ return if(src.operating > 0 || isrobot(user)) return //borgs can't attack doors open because it conflicts with their AI-like interaction with them. src.add_fingerprint(user) - if(!Adjacent(user)) - user = null - if(!src.requiresID()) - user = null if(istype(I, /obj/item/stack/sheet/metal)) if(stat & BROKEN) @@ -423,6 +416,11 @@ /obj/machinery/door/proc/requiresID() return 1 +/obj/machinery/door/allowed(mob/M) + if(!requiresID()) + return ..(null) //don't care who they are or what they have, act as if they're NOTHING + return ..(M) + /obj/machinery/door/update_nearby_tiles(need_rebuild) if(!air_master) return 0 diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index eefe844e47..362753cac8 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -234,9 +234,6 @@ src.add_fingerprint(user) - if (!src.requiresID()) - //don't care who they are or what they have, act as if they're NOTHING - user = null if (src.allowed(user)) if (src.density) From 57c059128385d405911dc9eb484ff9e3ed841f94 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 9 Mar 2015 19:22:07 +0100 Subject: [PATCH 123/168] Fixes ninja spawn logic. Fixes the logic I re-made after a PR comment without double-checking it. Changes ninjastart to use the actual landmarks instead of locs for consistency. --- code/game/gamemodes/ninja/ninja.dm | 12 ++++++------ code/game/objects/effects/landmarks.dm | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/game/gamemodes/ninja/ninja.dm b/code/game/gamemodes/ninja/ninja.dm index b4c0c5f555..f136d63e45 100644 --- a/code/game/gamemodes/ninja/ninja.dm +++ b/code/game/gamemodes/ninja/ninja.dm @@ -32,15 +32,15 @@ if(L.name == "carpspawn") ninjastart.Add(L) - if(ninjastart.len == 0 && latejoin.len > 0) - ninja.current << "\red No spawneable locations could be found. Defaulting to latejoin." + if(ninjastart.len) return 1 - else - ninja.current << "\red No spawneable locations could be found. Aborting." - return 0 - + if(ninjastart.len == 0 && latejoin.len > 0) + ninja.current << "\red No spawn locations could be found. Defaulting to late-join locations." return 1 + ninja.current << "\red No spawn locations could be found. Aborting." + return 0 + /datum/game_mode/ninja/pre_setup() for(var/datum/mind/ninja in ninjas) ninja.current << browse(null, "window=playersetup") diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index b9facb09b8..8df98464e6 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -117,7 +117,7 @@ /obj/effect/landmark/start/ninja/New() ..() - ninjastart += loc + ninjastart += src //Costume spawner landmarks From 91d7dd70493eb9161bcf3c1bb0a301a40e0ea420 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 15:39:24 -0400 Subject: [PATCH 124/168] Adjusts item_state placeholders Tries to switch the current placeholders for something less awkward looking. As well, the WT550 will no longer be mistaken for a pistol. --- code/modules/projectiles/guns/projectile/automatic.dm | 7 ++++--- code/modules/projectiles/guns/projectile/sniper.dm | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 3a0cca54e3..5778b3febe 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -51,7 +51,7 @@ name = "\improper STS-35 automatic rifle" desc = "A durable, rugged looking automatic weapon of a make popular on the frontier worlds. Uses 7.62mm rounds. It is unmarked." icon_state = "arifle" - item_state = "shotgun" + item_state = "l6closednomag" //placeholder w_class = 4 force = 10 caliber = "a762" @@ -68,7 +68,8 @@ name = "\improper W-T 550 Saber" desc = "A cheap, mass produced Ward-Takahashi PDW. Uses 9mm rounds." icon_state = "wt550" - w_class = 3.0 + item_state = "c20r" //placeholder + w_class = 3 caliber = "9mm" origin_tech = "combat=5;materials=2" slot_flags = SLOT_BELT @@ -89,7 +90,7 @@ name = "\improper Z8 Bulldog" desc = "An older model bullpup carbine, made by the now defunct Zendai Foundries. Uses armor piercing 5.56mm rounds. Makes you feel like a space marine when you hold it." icon_state = "carbine" - item_state = "shotgun" + item_state = "l6closednomag" //placeholder w_class = 4 force = 10 caliber = "a556" diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 6c3be17c68..29250cc6fe 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -2,7 +2,7 @@ name = "\improper PTRS-7 rifle" desc = "A portable anti-armour rifle fitted with a scope. Originally designed to used against armoured exosuits, it is capable of punching through windows and non-reinforced walls with ease. Fires armor piercing 14.5mm shells." icon_state = "heavysniper" - item_state = "shotgun" + item_state = "l6closednomag" //placeholder w_class = 4 force = 10 slot_flags = SLOT_BACK From b9d2517d835e7531be388ac034da1745d7a45645 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 15:47:25 -0400 Subject: [PATCH 125/168] Tweaks random gun spawners and supply packs laser carbines and laser pistols spawn in the armoury with equal probability. Stunshells are now rare like they should be. Shotgun crates now have two combat shotguns, as they are less likely to spawn in the armoury anyways. Weapons crate comes with laser pistols, energy weapons crate comes with laser carbines. Seemed more consistent that way. --- code/datums/supplypacks.dm | 13 +++++++------ code/game/objects/random/random.dm | 22 +++++++++++----------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 9beb08adc2..35ff79cac1 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -696,15 +696,15 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee name = "Weapons crate" contains = list(/obj/item/weapon/melee/baton, /obj/item/weapon/melee/baton, - /obj/item/weapon/gun/energy/laser, - /obj/item/weapon/gun/energy/laser, + /obj/item/weapon/gun/energy/gun, + /obj/item/weapon/gun/energy/gun, /obj/item/weapon/gun/energy/taser, /obj/item/weapon/gun/energy/taser, /obj/item/weapon/gun/projectile/sec, /obj/item/weapon/gun/projectile/sec, /obj/item/weapon/storage/box/flashbangs, /obj/item/weapon/storage/box/flashbangs) - cost = 30 + cost = 40 containertype = /obj/structure/closet/crate/secure/weapon containername = "Weapons crate" access = access_security @@ -777,7 +777,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee name = "Energy weapons crate" contains = list(/obj/item/weapon/gun/energy/laser, /obj/item/weapon/gun/energy/laser, - /obj/item/weapon/gun/energy/gun) + /obj/item/weapon/gun/energy/laser) cost = 50 containertype = /obj/structure/closet/crate/secure containername = "energy weapons crate" @@ -789,9 +789,10 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee contains = list(/obj/item/clothing/suit/armor/bulletproof, /obj/item/clothing/suit/armor/bulletproof, /obj/item/weapon/storage/box/shotgunammo, - /obj/item/weapon/gun/projectile/shotgun/pump, + /obj/item/weapon/storage/box/shotgunshells, + /obj/item/weapon/gun/projectile/shotgun/pump/combat, /obj/item/weapon/gun/projectile/shotgun/pump/combat) - cost = 50 + cost = 65 containertype = /obj/structure/closet/crate/secure containername = "Shotgun crate" access = access_armory diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index d9a12efa6c..7508d34a94 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -177,8 +177,8 @@ icon_state = "energykill100" item_to_spawn() return pick(prob(2);/obj/item/weapon/gun/energy/laser,\ - prob(1);/obj/item/weapon/gun/energy/gun,\ - prob(2);/obj/item/weapon/gun/energy/stunrevolver) + prob(2);/obj/item/weapon/gun/energy/gun,\ + prob(1);/obj/item/weapon/gun/energy/stunrevolver) /obj/random/projectile name = "Random Projectile Weapon" @@ -206,15 +206,15 @@ icon = 'icons/obj/ammo.dmi' icon_state = "45-10" item_to_spawn() - return pick(prob(3);/obj/item/weapon/storage/box/beanbags,\ - prob(1);/obj/item/weapon/storage/box/shotgunammo,\ - prob(2);/obj/item/weapon/storage/box/shotgunshells,\ - prob(2);/obj/item/weapon/storage/box/stunshells,\ - prob(1);/obj/item/ammo_magazine/c45m,\ - prob(2);/obj/item/ammo_magazine/c45m/rubber,\ - prob(2);/obj/item/ammo_magazine/c45m/flash,\ - prob(1);/obj/item/ammo_magazine/mc9mmt,\ - prob(3);/obj/item/ammo_magazine/mc9mmt/rubber) + return pick(prob(6);/obj/item/weapon/storage/box/beanbags,\ + prob(2);/obj/item/weapon/storage/box/shotgunammo,\ + prob(4);/obj/item/weapon/storage/box/shotgunshells,\ + prob(1);/obj/item/weapon/storage/box/stunshells,\ + prob(2);/obj/item/ammo_magazine/c45m,\ + prob(4);/obj/item/ammo_magazine/c45m/rubber,\ + prob(4);/obj/item/ammo_magazine/c45m/flash,\ + prob(2);/obj/item/ammo_magazine/mc9mmt,\ + prob(6);/obj/item/ammo_magazine/mc9mmt/rubber) /obj/random/action_figure From baed39c2633eb9d910b7267959f21cf5b9e60c3a Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 9 Mar 2015 20:55:05 +0100 Subject: [PATCH 126/168] Attempts to fix persistent station alarms. Makes wardrobes solid. --- code/game/area/areas.dm | 10 +++++----- code/game/objects/structures/under_wardrobe.dm | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index ae11b5aa48..0778f50174 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -38,6 +38,11 @@ return cameras /area/proc/atmosalert(danger_level, var/alarm_source) + if (danger_level == 0) + atmosphere_alarm.clearAlarm(master, alarm_source) + else + atmosphere_alarm.triggerAlarm(master, alarm_source, severity = danger_level) + //Check all the alarms before lowering atmosalm. Raising is perfectly fine. for (var/area/RA in related) for (var/obj/machinery/alarm/AA in RA) @@ -51,11 +56,6 @@ else if (danger_level >= 2 && atmosalm < 2) air_doors_close() - if (danger_level == 0) - atmosphere_alarm.clearAlarm(master, alarm_source) - else - atmosphere_alarm.triggerAlarm(master, alarm_source, severity = danger_level) - atmosalm = danger_level for(var/area/RA in related) for (var/obj/machinery/alarm/AA in RA) diff --git a/code/game/objects/structures/under_wardrobe.dm b/code/game/objects/structures/under_wardrobe.dm index fbb9470aa6..d053849496 100644 --- a/code/game/objects/structures/under_wardrobe.dm +++ b/code/game/objects/structures/under_wardrobe.dm @@ -3,7 +3,7 @@ desc = "Holds item of clothing you shouldn't be showing off in the hallways." icon = 'icons/obj/closet.dmi' icon_state = "cabinet_closed" - + density = 1 /obj/structure/undies_wardrobe/attack_hand(mob/user as mob) src.add_fingerprint(user) From 5fa66b2a8afcc9cbc52730096ff26f596aa38a85 Mon Sep 17 00:00:00 2001 From: volas Date: Mon, 9 Mar 2015 22:59:52 +0300 Subject: [PATCH 127/168] Changes to aooc --- code/modules/admin/verbs/antag-ooc.dm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/code/modules/admin/verbs/antag-ooc.dm b/code/modules/admin/verbs/antag-ooc.dm index 65cf596bab..82e81c0595 100644 --- a/code/modules/admin/verbs/antag-ooc.dm +++ b/code/modules/admin/verbs/antag-ooc.dm @@ -1,10 +1,11 @@ -/client/proc/aooc() - set category = "Admin" - set name = "Antag OOC" +/client/proc/aooc(msg as text) + set category = "OOC" + set name = "AOOC" + set desc = "Antagonist OOC" if(!check_rights(R_ADMIN)) return - var/msg = sanitize(copytext(input(usr, "", "Antag OOC") as text, 1, MAX_MESSAGE_LEN)) + msg = sanitize(copytext(msg, 1, MAX_MESSAGE_LEN)) if(!msg) return var/display_name = src.key @@ -15,4 +16,4 @@ if((M.mind && M.mind.special_role && M.client) || (M.client && M.client.holder)) M << "" + create_text_tag("aooc", "Antag-OOC:", M.client) + " [display_name]: [msg]" - log_ooc("Antag-OOC: [key] : [msg]") \ No newline at end of file + log_ooc("(ANTAG) [key] : [msg]") \ No newline at end of file From 645910947b423e025506d054db9a04adb72b75e7 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 16:00:49 -0400 Subject: [PATCH 128/168] Adds orderable flaregun crate Mainly to make double-barrelled shotguns orderable. --- code/datums/supplypacks.dm | 11 +++++++++++ code/modules/projectiles/guns/projectile/shotgun.dm | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 35ff79cac1..59926a6e0b 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -710,6 +710,17 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee access = access_security group = "Security" +/datum/supply_packs/flareguns + name = "Flare guns crate" + contains = list(/obj/item/weapon/gun/projectile/sec/flash, + /obj/item/ammo_magazine/c45m/flash, + /obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare, + /obj/item/weapon/storage/box/flashshells) + cost = 25 + containertype = /obj/structure/closet/crate/secure/weapon + containername = "Flare gun crate" + access = access_security + group = "Security" /datum/supply_packs/eweapons name = "Experimental weapons crate" diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index f7f4fbdbe0..fd85bc28be 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -65,6 +65,11 @@ origin_tech = "combat=3;materials=1" ammo_type = /obj/item/ammo_casing/shotgun/beanbag +/obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare + name = "signal shotgun" + desc = "A double-barreled shotgun meant to fire signal flash shells." + ammo_type = /obj/item/ammo_casing/shotgun/flash + //this is largely hacky and bad :( -Pete /obj/item/weapon/gun/projectile/shotgun/doublebarrel/attackby(var/obj/item/A as obj, mob/user as mob) if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter)) From 2fa6bb9ab2286df0d556d3900c7591ada197e6a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Mon, 9 Mar 2015 21:54:38 +0100 Subject: [PATCH 129/168] Fixes mass driver not being registered on machines. --- code/game/machinery/mass_driver.dm | 47 ++++++++++++++++-------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index 036edb8730..2a3589db2d 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -16,27 +16,30 @@ var/drive_range = 50 //this is mostly irrelevant since current mass drivers throw into space, but you could make a lower-range mass driver for interstation transport or something I guess. - proc/drive(amount) - if(stat & (BROKEN|NOPOWER)) - return - use_power(500) - var/O_limit - var/atom/target = get_edge_target_turf(src, dir) - for(var/atom/movable/O in loc) - if(!O.anchored||istype(O, /obj/mecha))//Mechs need their launch platforms. - O_limit++ - if(O_limit >= 20) - for(var/mob/M in hearers(src, null)) - M << "\blue The mass driver lets out a screech, it mustn't be able to handle any more items." - break - use_power(500) - spawn( 0 ) - O.throw_at(target, drive_range * power, power) - flick("mass_driver1", src) +/obj/machinery/mass_driver/proc/drive(amount) + if(stat & (BROKEN|NOPOWER)) return + use_power(500) + var/O_limit + var/atom/target = get_edge_target_turf(src, dir) + for(var/atom/movable/O in loc) + if(!O.anchored||istype(O, /obj/mecha))//Mechs need their launch platforms. + O_limit++ + if(O_limit >= 20) + for(var/mob/M in hearers(src, null)) + M << "\blue The mass driver lets out a screech, it mustn't be able to handle any more items." + break + use_power(500) + spawn( 0 ) + O.throw_at(target, drive_range * power, power) + flick("mass_driver1", src) + return - emp_act(severity) - if(stat & (BROKEN|NOPOWER)) - return - drive() - ..(severity) \ No newline at end of file +/obj/machinery/mass_driver/emp_act(severity) + if(stat & (BROKEN|NOPOWER)) + return + drive() + ..(severity) + +/obj/machinery/mass_driver/process() + return \ No newline at end of file From 1150902c9fd103efa2b5ce75175b0894f6f48a42 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Mar 2015 16:57:10 -0400 Subject: [PATCH 130/168] Adds custom item for Von2531 Blue blazer loadout item --- code/modules/client/preferences_gear.dm | 6 ++++++ code/modules/clothing/under/miscellaneous.dm | 7 +++++++ icons/mob/items_lefthand.dmi | Bin 155467 -> 155760 bytes icons/mob/items_righthand.dmi | Bin 158839 -> 159077 bytes icons/mob/uniform.dmi | Bin 257089 -> 258025 bytes icons/obj/clothing/uniforms.dmi | Bin 58938 -> 59187 bytes 6 files changed, 13 insertions(+) diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index 905eb9b886..5ac54a0498 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -282,6 +282,12 @@ var/global/list/gear_datums = list() slot = slot_w_uniform cost = 2 +/datum/gear/blazer_blue + display_name = "blazer, blue" + path = /obj/item/clothing/under/blazer + slot = slot_w_uniform + cost = 2 + /datum/gear/kilt display_name = "kilt" path = /obj/item/clothing/under/kilt diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index bc4d37c672..9c73fe90b9 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -490,3 +490,10 @@ item_state = "mai_yang" item_color = "mai_yang" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS + +/obj/item/clothing/under/blazer + name = "blue blazer" + desc = "A bold but yet conservative outfit, red corduroys, navy blazer and a tie." + icon_state = "blue_blazer" + item_state = "blue_blazer" + item_color = "blue_blazer" \ No newline at end of file diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index 9f1f22c1a31e9063afd95304becd35d5185d168d..d200726c6a91fb75135c2ee90cc00fd6b19a206a 100644 GIT binary patch delta 17261 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 g*)ac=t64-cq;iO#Qt=m^iMX-jUt{QbP|)@4Y5~ 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 E2d+0?R{#J2 diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 11e62da896d10b0ee4284c9165b12e7992353630..a5c9905b54903df435531fdbd2524b5bb35066e8 100644 GIT binary patch delta 17293 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 B%;o?9 delta 16350 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 diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index a1189267e9d2713dc7a118843f67a33d1f92716c..32e720754f5993cee1773bf6f48e10e4e434ec99 100644 GIT binary patch delta 3830 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 Date: Mon, 9 Mar 2015 23:19:15 -0400 Subject: [PATCH 131/168] Adds sabiram's help text to the game. --- baystation12.dme | 1 + code/modules/examine/descriptions/medical.dm | 42 +++++++++++++++++++ .../examine/descriptions/structures.dm | 6 +++ 3 files changed, 49 insertions(+) create mode 100644 code/modules/examine/descriptions/medical.dm diff --git a/baystation12.dme b/baystation12.dme index bf45a077a4..f6683c342f 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -964,6 +964,7 @@ #include "code\modules\examine\examine.dm" #include "code\modules\examine\descriptions\atmospherics.dm" #include "code\modules\examine\descriptions\engineering.dm" +#include "code\modules\examine\descriptions\medical.dm" #include "code\modules\examine\descriptions\mobs.dm" #include "code\modules\examine\descriptions\stacks.dm" #include "code\modules\examine\descriptions\structures.dm" diff --git a/code/modules/examine/descriptions/medical.dm b/code/modules/examine/descriptions/medical.dm new file mode 100644 index 0000000000..7b55c7b9ce --- /dev/null +++ b/code/modules/examine/descriptions/medical.dm @@ -0,0 +1,42 @@ +/obj/machinery/bodyscanner + description_info = "The advanced scanner detects and reports internal injuries such as bone fractures, internal bleeding, and organ damage. \ + This is useful if you are about to perform surgery.
\ +
\ + Click your target with Grab intent, then click on the scanner to place them in it. Click the red terminal to operate. \ + Right-click the scanner and click 'Eject Occupant' to remove them. You can enter the scanner yourself in a similar way, using the 'Enter Body Scanner' \ + verb." + +/obj/machinery/atmospherics/unary/cryo_cell + description_info = "The cryogenic chamber, or 'cryo', treats most damage types, most notably genetic damage. It also stabilizes patients \ + in critical condition by placing them in stasis, so they can be treated at a later time.
\ +
\ + In order for it to work, it must be loaded with chemicals, and the temperature of the solution must reach a certain point. Additionally, it \ + requires a supply of pure oxygen, provided by canisters that are attached. The most commonly used chemicals in the chambers are Cryoaxadone and \ + Clonexadone. Clonexadone is more effective in treating Genetic damage, but is otherwise functionally identical.
\ +
\ + Activating the freezer nearby, and setting it to a temperature setting below 50, is required before operation! Further, any clothing the patient \ + is wearing that act as an insulator will reduce its effectiveness, and should be removed.
\ +
\ + Clicking the tube with a beaker full of chemicals in hand will place it in its storage to distribute when it is activated.
\ +
\ + Click your target with Grab intent, then click on the tube, with an empty hand, to place them it. Click the tube again to open the menu. \ + Press the button on the menu to activate it. Once they have reached 100 health, right-click the cell and click 'Eject Occupant' to remove them. \ + Remember to turn it off, once you've finished, to save power and chemicals!" + +/obj/machinery/optable + description_info = "Click your target with Grab intent, then click on the table with an empty hand, to place them on it." + +/obj/machinery/computer/operating + description_info = "This console gives information on the status of the patient on the adjacent operating table, notably their consciousness." + +/obj/machinery/sleeper + description_info = "The sleeper allows you to clean the blood by means of dialysis, and to administer medication in controlled environment.
\ +
\ + Click your target with Grab intent, then click on the sleeper to place them in it. Click the green console, with an empty hand, to open the menu. \ + Click 'Start Dialysis' to begin filtering unwanted chemicals from the occupant's blood. The beaker contained will begin to fill with their \ + contaminated blood, and will need to be emptied when full.
\ +
\ + You can also inject common medicines directly into their bloodstream.\ +
\ + Right-click the cell and click 'Eject Occupant' to remove them. You can enter the cell yourself by right clicking and selecting 'Enter Sleeper'. \ + Note that you cannot control the sleeper while inside of it." \ No newline at end of file diff --git a/code/modules/examine/descriptions/structures.dm b/code/modules/examine/descriptions/structures.dm index fa46c1501f..858653b094 100644 --- a/code/modules/examine/descriptions/structures.dm +++ b/code/modules/examine/descriptions/structures.dm @@ -13,3 +13,9 @@ /obj/structure/lattice description_info = "Add a metal floor tile to build a floor on top of the lattice.
\ Lattices can be made by applying metal rods to a space tile." + +/obj/structure/bed + description_info = "Click and drag yourself (or anyone) to this to buckle in. Click on this with an empty hand to undo the buckles.
\ +
\ + Anyone with restraints, such as handcuffs, will not be able to unbuckle themselves. They must use the Resist button, or verb, to break free of \ + the buckles, instead." \ No newline at end of file From 3de6374b4acd26ce8c32bf59a5de65fc0721c710 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Tue, 10 Mar 2015 02:47:54 -0400 Subject: [PATCH 132/168] Allows unconscious/dead exosuit pilots to be removed if maintenance protocols are enabled. Enable maintenance protocols -> wrench -> crowbar -> multitool. --- code/game/mecha/mecha.dm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index e57b4da227..b2bdadfdbe 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -760,6 +760,18 @@ user << "You screw the cell in place" return + else if(istype(W, /obj/item/device/multitool)) + if(state>=3 && src.occupant) + user << "You attempt to eject the pilot using the maintenance controls." + if(src.occupant.stat) + src.go_out() + src.log_message("[src.occupant] was ejected using the maintenance controls.") + else + user << "Your attempt is rejected." + src.occupant_message("An attempt to eject you was made using the maintenance controls.") + src.log_message("Eject attempt made using maintenance controls - rejected.") + return + else if(istype(W, /obj/item/weapon/cell)) if(state==4) if(!src.cell) From 65a34943cd8f1b22f87b825187ce472e3227cab3 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Tue, 10 Mar 2015 03:00:24 -0400 Subject: [PATCH 133/168] Penetrating bullets are now more likely to go through glass doors --- code/modules/projectiles/projectile/bullets.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 627785343f..1e4ddf7c5e 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -47,6 +47,7 @@ else if(istype(A, /obj/machinery/door)) var/obj/machinery/door/D = A chance = round(damage/D.maxhealth*180) + if(D.glass) chance *= 2 else if(istype(A, /obj/structure/girder) || istype(A, /obj/structure/cultgirder)) chance = 100 else if(istype(A, /obj/machinery) || istype(A, /obj/structure)) From a86c16b3e325e08209e1e60c71fcc0d4d170b302 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 10 Mar 2015 08:16:20 +0100 Subject: [PATCH 134/168] Fixes hydroponics update_icon() runtime. Rounding could cause plant maturation to have a value of 0. --- code/modules/hydroponics/trays/tray_update_icons.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/hydroponics/trays/tray_update_icons.dm b/code/modules/hydroponics/trays/tray_update_icons.dm index ea8fb669cd..61e19632ea 100644 --- a/code/modules/hydroponics/trays/tray_update_icons.dm +++ b/code/modules/hydroponics/trays/tray_update_icons.dm @@ -36,7 +36,8 @@ if(age >= seed.get_trait(TRAIT_MATURATION)) overlay_stage = seed.growth_stages else - overlay_stage = max(1,round(age/round(seed.get_trait(TRAIT_MATURATION)/seed.growth_stages))) + var/maturation = round(seed.get_trait(TRAIT_MATURATION)/seed.growth_stages) + overlay_stage = maturation ? max(1,round(age/maturation)) : 1 var/ikey = "[seed.get_trait(TRAIT_PLANT_ICON)]-[overlay_stage]" var/image/plant_overlay = plant_controller.plant_icon_cache["[ikey]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"] if(!plant_overlay) From 9fdd3ccbdfdc11296af15da6b7262cb11b38d93e Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 10 Mar 2015 09:08:52 +0100 Subject: [PATCH 135/168] Can now destroy/delete the suit cycler. --- code/game/machinery/suit_storage_unit.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 4bf1c07abc..d0ac55780d 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -618,6 +618,7 @@ /obj/machinery/suit_cycler/Del() del(wires) // qdel wires = null + ..() /obj/machinery/suit_cycler/engineering name = "Engineering suit cycler" From 533ccef0ab7ad324e81bc049999a4012c9bcd2da Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 10 Mar 2015 13:37:20 +0100 Subject: [PATCH 136/168] Robot code clean up and fixes. Fixes runtime when a borg is reset. Fixes issue where /proc/select_active_ai_with_fewest_borgs() would not always return the intended AI. Fixes issues with new borgs spamming the master AI with creation messages under some circumstances. --- code/__HELPERS/unsorted.dm | 2 +- code/datums/wires/robot.dm | 11 ++--- code/game/machinery/transformer.dm | 1 - code/game/objects/items/robot/robot_parts.dm | 1 - .../objects/items/robot/robot_upgrades.dm | 6 +-- .../mob/living/silicon/robot/drone/drone.dm | 2 - code/modules/mob/living/silicon/robot/life.dm | 4 +- .../modules/mob/living/silicon/robot/robot.dm | 45 ++++++++++++------- code/modules/mob/transform_procs.dm | 1 - code/modules/projectiles/projectile/change.dm | 1 - code/setup.dm | 6 +++ 11 files changed, 43 insertions(+), 37 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index ad8c771366..89da585924 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -374,7 +374,7 @@ Turf and target are seperate in case you want to teleport some distance from a t var/mob/living/silicon/ai/selected var/list/active = active_ais() for(var/mob/living/silicon/ai/A in active) - if(!selected || (selected.connected_robots > A.connected_robots)) + if(!selected || (selected.connected_robots.len > A.connected_robots.len)) selected = A return selected diff --git a/code/datums/wires/robot.dm b/code/datums/wires/robot.dm index 73555f3889..da20f1bd05 100644 --- a/code/datums/wires/robot.dm +++ b/code/datums/wires/robot.dm @@ -34,8 +34,7 @@ var/const/BORG_WIRE_CAMERA = 16 if (BORG_WIRE_AI_CONTROL) //Cut the AI wire to reset AI control if(!mended) - if (R.connected_ai) - R.connected_ai = null + R.disconnect_from_ai() if (BORG_WIRE_CAMERA) if(!isnull(R.camera) && !R.scrambledcodes) @@ -56,12 +55,8 @@ var/const/BORG_WIRE_CAMERA = 16 if (BORG_WIRE_AI_CONTROL) //pulse the AI wire to make the borg reselect an AI if(!R.emagged) var/mob/living/silicon/ai/new_ai = select_active_ai(R) - if(new_ai && (new_ai != R.connected_ai)) - R.connected_ai.connected_robots -= src - R.connected_ai = new_ai - new_ai.connected_robots += src - R.notify_ai(1) - R.sync() + R.connect_to_ai(new_ai) + if (BORG_WIRE_CAMERA) if(!isnull(R.camera) && R.camera.can_use() && !R.scrambledcodes) R.camera.kick_viewers() // Kick anyone watching the Cyborg's camera diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm index 7885a8b8e2..c9c8ba20ae 100644 --- a/code/game/machinery/transformer.dm +++ b/code/game/machinery/transformer.dm @@ -38,7 +38,6 @@ playsound(src.loc, 'sound/machines/ping.ogg', 50, 0) if(robot) robot.SetLockDown(0) - robot.notify_ai(1) /obj/machinery/transformer/conveyor/New() ..() diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 25461eae37..a0138b4dc6 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -226,7 +226,6 @@ feedback_inc("cyborg_birth",1) callHook("borgify", list(O)) - O.notify_ai(1) O.Namepick() del(src) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index a9b040f647..3f11eb4bbe 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -36,12 +36,12 @@ icon = 'icons/mob/custom-synthetic.dmi' R.icon_state = "[R.ckey]-Standard" del(R.module) + R.notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, R.module.name) R.module = null R.camera.remove_networks(list("Engineering","Medical","MINE")) R.updatename("Default") R.status_flags |= CANPUSH R.updateicon() - R.notify_ai(2) return 1 @@ -57,7 +57,7 @@ /obj/item/borg/upgrade/rename/action(var/mob/living/silicon/robot/R) if(..()) return 0 - R.notify_ai(3, R.name, heldname) + R.notify_ai(ROBOT_NOTIFICATION_NEW_NAME, R.name, heldname) R.name = heldname R.custom_name = heldname R.real_name = heldname @@ -84,7 +84,7 @@ R.stat = CONSCIOUS dead_mob_list -= R living_mob_list |= R - R.notify_ai(1) + R.notify_ai(ROBOT_NOTIFICATION_NEW_UNIT) return 1 diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index c1bfd9e009..9d2af7af56 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -54,8 +54,6 @@ /mob/living/silicon/robot/drone/init() laws = new /datum/ai_laws/drone() - connected_ai = null - aiCamera = new/obj/item/device/camera/siliconcam/drone_camera(src) playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0) diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index c5d74c54dd..c1d624f5b0 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -226,9 +226,7 @@ if(tra.current) var/I = image('icons/mob/mob.dmi', loc = tra.current, icon_state = "traitor") src.client.images += I - if(src.connected_ai) - src.connected_ai.connected_robots -= src - src.connected_ai = null + src.disconnect_from_ai() if(src.mind) if(!src.mind.special_role) src.mind.special_role = "traitor" diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 3539e683af..3647352aab 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -164,11 +164,10 @@ var/list/robot_verbs_default = list( aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src) laws = new /datum/ai_laws/nanotrasen() additional_law_channels += "Binary" - connected_ai = select_active_ai_with_fewest_borgs() - if(connected_ai) - connected_ai.connected_robots += src + var/new_ai = select_active_ai_with_fewest_borgs() + if(new_ai) lawupdate = 1 - sync() + connect_to_ai(new_ai) else lawupdate = 0 @@ -365,7 +364,7 @@ var/list/robot_verbs_default = list( choose_icon(6,module_sprites) radio.config(module.channels) - notify_ai(2) + notify_ai(ROBOT_NOTIFICATION_NEW_MODULE, module.name) /mob/living/silicon/robot/proc/updatename(var/prefix as text) if(prefix) @@ -385,7 +384,7 @@ var/list/robot_verbs_default = list( else changed_name = "[modtype] [braintype]-[num2text(ident)]" - notify_ai(3, real_name, changed_name) + notify_ai(ROBOT_NOTIFICATION_NEW_NAME, real_name, changed_name) real_name = changed_name name = real_name @@ -802,7 +801,7 @@ var/list/robot_verbs_default = list( if(prob(50)) emagged = 1 lawupdate = 0 - connected_ai = null + disconnect_from_ai() user << "You emag [src]'s interface." message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.") log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.") @@ -1134,8 +1133,7 @@ var/list/robot_verbs_default = list( return /mob/living/silicon/robot/proc/UnlinkSelf() - if (src.connected_ai) - src.connected_ai = null + disconnect_from_ai() lawupdate = 0 lockcharge = 0 canmove = 1 @@ -1245,14 +1243,29 @@ var/list/robot_verbs_default = list( return 1 return 0 -/mob/living/silicon/robot/proc/notify_ai(var/notifytype, var/oldname, var/newname) +/mob/living/silicon/robot/proc/notify_ai(var/notifytype, var/first_arg, var/second_arg) if(!connected_ai) return switch(notifytype) - if(1) //New Robot + if(ROBOT_NOTIFICATION_NEW_UNIT) //New Robot connected_ai << "

NOTICE - New [lowertext(braintype)] connection detected:
[name]
" - if(2) //New Module - connected_ai << "

NOTICE - [braintype] module change detected: [name] has loaded the [module.name].
" - if(3) //New Name - if(oldname != newname) - connected_ai << "

NOTICE - [braintype] reclassification detected: [oldname] is now designated as [newname].
" + if(ROBOT_NOTIFICATION_NEW_MODULE) //New Module + connected_ai << "

NOTICE - [braintype] module change detected: [name] has loaded the [first_arg].
" + if(ROBOT_NOTIFICATION_MODULE_RESET) + connected_ai << "

NOTICE - [braintype] module reset detected: [name] has unladed the [first_arg].
" + if(ROBOT_NOTIFICATION_NEW_NAME) //New Name + if(first_arg != second_arg) + connected_ai << "

NOTICE - [braintype] reclassification detected: [first_arg] is now designated as [second_arg].
" + +/mob/living/silicon/robot/proc/disconnect_from_ai() + if(connected_ai) + connected_ai.connected_robots -= src + connected_ai = null + +/mob/living/silicon/robot/proc/connect_to_ai(var/mob/living/silicon/ai/AI) + if(AI && AI != connected_ai) + disconnect_from_ai() + connected_ai = AI + connected_ai.connected_robots |= src + notify_ai(ROBOT_NOTIFICATION_NEW_UNIT) + sync() diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index d6181f5ec7..227329e915 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -168,7 +168,6 @@ O.mmi.transfer_identity(src) callHook("borgify", list(O)) - O.notify_ai(1) O.Namepick() spawn(0)//To prevent the proc from returning null. diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm index 24e2d4b6ef..f48a2d4a61 100644 --- a/code/modules/projectiles/projectile/change.dm +++ b/code/modules/projectiles/projectile/change.dm @@ -24,7 +24,6 @@ if(istype(M, /mob/living/silicon/robot)) var/mob/living/silicon/robot/Robot = M if(Robot.mmi) del(Robot.mmi) - Robot.notify_ai(1) else for(var/obj/item/W in M) if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something diff --git a/code/setup.dm b/code/setup.dm index f47566d1eb..0a09af0cd4 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -762,3 +762,9 @@ var/list/be_special_flags = list( //General-purpose life speed define for plants. #define HYDRO_SPEED_MULTIPLIER 1 #define NANO_IGNORE_DISTANCE 1 + +// Robot AI notifications +#define ROBOT_NOTIFICATION_NEW_UNIT 1 +#define ROBOT_NOTIFICATION_NEW_NAME 2 +#define ROBOT_NOTIFICATION_NEW_MODULE 3 +#define ROBOT_NOTIFICATION_MODULE_RESET 4 From 373921fa448aebbb94c3da3887b73c04c444c92d Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 10 Mar 2015 14:06:05 +0100 Subject: [PATCH 137/168] Fixes #8264. updateUsrDialog() doesn't play well with nanoUI, forcing it to re-open and reposition on each cal. --- code/game/machinery/cryo.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index c4c5899f9f..0f511d1944 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -42,7 +42,6 @@ if(!node) return if(!on) - updateUsrDialog() return if(occupant) @@ -57,7 +56,6 @@ if(abs(temperature_archived-air_contents.temperature) > 1) network.update = 1 - updateUsrDialog() return 1 @@ -193,7 +191,6 @@ var/mob/M = G:affecting if(put_mob(M)) del(G) - updateUsrDialog() return /obj/machinery/atmospherics/unary/cryo_cell/update_icon() From e07f06d7f4469f678d4214f89475a493da5dc9be Mon Sep 17 00:00:00 2001 From: Neerti Date: Tue, 10 Mar 2015 10:55:14 -0400 Subject: [PATCH 138/168] I shouldn't proofread when sleep deprived. --- code/modules/examine/descriptions/medical.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/examine/descriptions/medical.dm b/code/modules/examine/descriptions/medical.dm index 7b55c7b9ce..b3b01e9afb 100644 --- a/code/modules/examine/descriptions/medical.dm +++ b/code/modules/examine/descriptions/medical.dm @@ -11,15 +11,15 @@ in critical condition by placing them in stasis, so they can be treated at a later time.
\
\ In order for it to work, it must be loaded with chemicals, and the temperature of the solution must reach a certain point. Additionally, it \ - requires a supply of pure oxygen, provided by canisters that are attached. The most commonly used chemicals in the chambers are Cryoaxadone and \ - Clonexadone. Clonexadone is more effective in treating Genetic damage, but is otherwise functionally identical.
\ + requires a supply of pure oxygen, provided by canisters that are attached. The most commonly used chemicals in the chambers are Cryoxadone and \ + Clonexadone. Clonexadone is more effective in treating all damage, including Genetic damage, but is otherwise functionally identical.
\
\ - Activating the freezer nearby, and setting it to a temperature setting below 50, is required before operation! Further, any clothing the patient \ + Activating the freezer nearby, and setting it to a temperature setting below 150, is recommended before operation! Further, any clothing the patient \ is wearing that act as an insulator will reduce its effectiveness, and should be removed.
\
\ Clicking the tube with a beaker full of chemicals in hand will place it in its storage to distribute when it is activated.
\
\ - Click your target with Grab intent, then click on the tube, with an empty hand, to place them it. Click the tube again to open the menu. \ + Click your target with Grab intent, then click on the tube, with an empty hand, to place them in it. Click the tube again to open the menu. \ Press the button on the menu to activate it. Once they have reached 100 health, right-click the cell and click 'Eject Occupant' to remove them. \ Remember to turn it off, once you've finished, to save power and chemicals!" @@ -30,7 +30,7 @@ description_info = "This console gives information on the status of the patient on the adjacent operating table, notably their consciousness." /obj/machinery/sleeper - description_info = "The sleeper allows you to clean the blood by means of dialysis, and to administer medication in controlled environment.
\ + description_info = "The sleeper allows you to clean the blood by means of dialysis, and to administer medication in a controlled environment.
\
\ Click your target with Grab intent, then click on the sleeper to place them in it. Click the green console, with an empty hand, to open the menu. \ Click 'Start Dialysis' to begin filtering unwanted chemicals from the occupant's blood. The beaker contained will begin to fill with their \ From b00138aa42a953ccf36d801584840406ee464ae9 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 10 Mar 2015 18:01:27 +0100 Subject: [PATCH 139/168] Fixes #5787. The pull icon is now immediately displayed/hidden when one starts/stops pulling an objects. Not stolen from https://github.com/tgstation/-tg-station/pull/8279. --- code/modules/mob/living/carbon/alien/life.dm | 3 --- code/modules/mob/living/carbon/brain/life.dm | 1 - code/modules/mob/living/carbon/human/life.dm | 3 --- code/modules/mob/living/carbon/monkey/life.dm | 3 --- code/modules/mob/living/silicon/robot/life.dm | 2 -- code/modules/mob/mob.dm | 5 +++++ 6 files changed, 5 insertions(+), 12 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm index 68831c2446..13bc1a4686 100644 --- a/code/modules/mob/living/carbon/alien/life.dm +++ b/code/modules/mob/living/carbon/alien/life.dm @@ -149,9 +149,6 @@ else healths.icon_state = "health7" - if(pullin) - pullin.icon_state = "pull[pulling ? 1 : 0]" - if (client) client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired) diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index 89cf9faa97..8e8a26d883 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -225,7 +225,6 @@ else healths.icon_state = "health7" - if(pullin) pullin.icon_state = "pull[pulling ? 1 : 0]" if (client) client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 8657ef06a2..8aa3ad8200 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1313,9 +1313,6 @@ if(pressure) pressure.icon_state = "pressure[pressure_alert]" - if(pullin) - if(pulling) pullin.icon_state = "pull1" - else pullin.icon_state = "pull0" // if(rest) //Not used with new UI // if(resting || lying || sleeping) rest.icon_state = "rest1" // else rest.icon_state = "rest0" diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 20b80c9c89..d6e1ea2d00 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -562,9 +562,6 @@ if(pressure) pressure.icon_state = "pressure[pressure_alert]" - if(pullin) pullin.icon_state = "pull[pulling ? 1 : 0]" - - if (toxin) toxin.icon_state = "tox[phoron_alert ? 1 : 0]" if (oxygen) oxygen.icon_state = "oxy[oxygen_alert ? 1 : 0]" if (fire) fire.icon_state = "fire[fire_alert ? 2 : 0]" diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 8295687de9..2e5bdf1586 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -263,8 +263,6 @@ else src.bodytemp.icon_state = "temp-2" - - if(src.pullin) src.pullin.icon_state = "pull[src.pulling ? 1 : 0]" //Oxygen and fire does nothing yet!! // if (src.oxygen) src.oxygen.icon_state = "oxy[src.oxygen_alert ? 1 : 0]" // if (src.fire) src.fire.icon_state = "fire[src.fire_alert ? 1 : 0]" diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 54987ff01d..48d711c7dd 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -616,6 +616,8 @@ var/list/slot_equipment_priority = list( \ if(pulling) pulling.pulledby = null pulling = null + if(pullin) + pullin.icon_state = "pull1" /mob/proc/start_pulling(var/atom/movable/AM) if ( !AM || !usr || src==AM || !isturf(src.loc) ) //if there's no person pulling OR the person is pulling themself OR the object being pulled is inside something: abort! @@ -642,6 +644,9 @@ var/list/slot_equipment_priority = list( \ src.pulling = AM AM.pulledby = src + if(pullin) + pullin.icon_state = "pull0" + if(ishuman(AM)) var/mob/living/carbon/human/H = AM if(H.pull_damage()) From d96e46bf10436104a11dd9342872e309a14ab35f Mon Sep 17 00:00:00 2001 From: Mloc Date: Wed, 11 Mar 2015 11:39:02 +0000 Subject: [PATCH 140/168] fix sanitize_simple(), broken in #8008 fixes OOC newlines and IRC bot crashing. Signed-off-by: Mloc --- code/__HELPERS/text.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 27f5f98aa4..346ffc7c47 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -36,7 +36,7 @@ //Removes a few problematic characters /proc/sanitize_simple(var/t,var/list/repl_chars = list("\n"="#","\t"="#")) for(var/char in repl_chars) - replacetext(t, char, repl_chars[char]) + t = replacetext(t, char, repl_chars[char]) return t /proc/readd_quotes(var/t) From 64a94a5043f423d9ed933a5e316ddda9ffb8df99 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Thu, 12 Mar 2015 17:00:53 +0300 Subject: [PATCH 141/168] Fixes #8438 Removed spawn based on suggestion, doesn't seem to cause that graphical glitch it was against. --- code/modules/overmap/_defines.dm | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/code/modules/overmap/_defines.dm b/code/modules/overmap/_defines.dm index 23b6e58845..6d17d8e398 100644 --- a/code/modules/overmap/_defines.dm +++ b/code/modules/overmap/_defines.dm @@ -24,16 +24,15 @@ proc/toggle_move_stars(zlevel, direction) moving_levels["zlevel"] = gen_dir for(var/x = 1 to world.maxx) for(var/y = 1 to world.maxy) - spawn(0) - var/turf/space/T = locate(x,y,zlevel) - if (T) - if(!gen_dir) - T.icon_state = "[((T.x + T.y) ^ ~(T.x * T.y) + T.z) % 25]" - else - T.icon_state = "speedspace_[gen_dir]_[rand(1,15)]" - for(var/atom/movable/AM in T) - if (!AM.anchored) - AM.throw_at(get_step(T,reverse_direction(direction)), 5, 1) + var/turf/space/T = locate(x,y,zlevel) + if (istype(T)) + if(!gen_dir) + T.icon_state = "[((T.x + T.y) ^ ~(T.x * T.y) + T.z) % 25]" + else + T.icon_state = "speedspace_[gen_dir]_[rand(1,15)]" + for(var/atom/movable/AM in T) + if (!AM.anchored) + AM.throw_at(get_step(T,reverse_direction(direction)), 5, 1) //list used to cache empty zlevels to avoid nedless map bloat @@ -99,4 +98,4 @@ proc/overmap_spacetravel(var/turf/space/T, var/atom/movable/A) if (source.can_die()) testing("Catching [M] for future use") source.loc = null - cached_space += source \ No newline at end of file + cached_space += source From 09fd6fb22b382c49b2e1be27b45524c8aa13b51c Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Thu, 12 Mar 2015 16:37:38 +0100 Subject: [PATCH 142/168] Fixes #8447. Restores AI blast door and other access restrictions. --- maps/exodus-1.dmm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 74d0eb4937..77e7dcf8b3 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -1917,7 +1917,7 @@ "aKS" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_two) "aKT" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) "aKU" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "1;11;18;24"},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_one) -"aKV" = (/obj/machinery/camera{c_tag = "Dormitory Toilets"; dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) +"aKV" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aKW" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aKX" = (/obj/machinery/door/airlock{name = "Bar Backroom"; req_access_txt = "25"},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/crew_quarters/bar) "aKY" = (/obj/machinery/door/airlock/maintenance{name = "Bar Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;25;28"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/bar) @@ -3134,7 +3134,7 @@ "bin" = (/obj/structure/closet/coffin,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "chapel"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "bio" = (/obj/item/weapon/hand_labeler,/obj/item/device/assembly/timer,/obj/item/device/eftpos{eftpos_name = "Bridge EFTPOS scanner"},/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/bridge/meeting_room) "bip" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/bridge/meeting_room) -"biq" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 32},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = -32; pixel_y = 32},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"biq" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 32},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = -32; pixel_y = 32},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/obj/machinery/door_control{desc = "A remote control-switch for the AI core maintenance door."; id = "AICore"; name = "AI Maintenance Hatch"; pixel_x = 17; pixel_y = 25; req_access_txt = "109"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bir" = (/obj/item/weapon/folder/red,/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/bridge/meeting_room) "bis" = (/obj/item/weapon/book/manual/security_space_law,/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/bridge/meeting_room) "bit" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "AI Core Door"; req_access_txt = "16"},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -3147,7 +3147,7 @@ "biA" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/crew_quarters/captain) "biB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/captain) "biC" = (/turf/simulated/floor/wood,/area/crew_quarters/captain) -"biD" = (/obj/machinery/door/window{dir = 2; name = "AI Core Door"; req_access_txt = "16"},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/flasher{id = "AI"; pixel_x = 22; pixel_y = 24},/obj/machinery/turretid/stun{check_synth = 1; name = "AI Chamber turret control"; pixel_x = 36; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"biD" = (/obj/machinery/door/window{dir = 2; name = "AI Core Door"; req_access_txt = "109"},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/flasher{id = "AI"; pixel_x = 22; pixel_y = 24},/obj/machinery/turretid/stun{check_synth = 1; name = "AI Chamber turret control"; pixel_x = 36; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "biE" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/crew_quarters/captain) "biF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "biG" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -3466,7 +3466,7 @@ "boH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_two) "boI" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/rnd/research) "boJ" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) -"boK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/vault/bolted{req_access_txt = "16"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"boK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "AICore"; layer = 3.3; name = "AI Maintenance Hatch"},/obj/machinery/door/airlock/vault/bolted{name = "AI Core"; req_access_txt = "109"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "boL" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "boM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "boN" = (/obj/structure/bed,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) @@ -5666,7 +5666,7 @@ "ceX" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) "ceY" = (/obj/structure/noticeboard{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) "ceZ" = (/obj/structure/table,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/weapon/hand_labeler,/turf/simulated/floor{tag = "icon-whitegreen (NORTHWEST)"; icon_state = "whitegreen"; dir = 9},/area/rnd/xenobiology/xenoflora_storage) -"cfa" = (/obj/machinery/camera{c_tag = "Engineering Washroom"; dir = 1; network = list("SS13")},/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) +"cfa" = (/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "cfb" = (/obj/structure/closet/secure_closet/hydroponics{req_access = list(47)},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) "cfc" = (/obj/structure/bed/chair,/turf/simulated/floor,/area/medical/surgeryobs) "cfd" = (/obj/structure/sign/biohazard,/turf/simulated/wall,/area/rnd/xenobiology) From 41a01516f5a579cd29d19ddd9cec31b27f70f750 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 12 Mar 2015 12:47:20 -0400 Subject: [PATCH 143/168] Fixes missing _s for blue blazer icon --- icons/mob/uniform.dmi | Bin 258025 -> 258025 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index a5c9905b54903df435531fdbd2524b5bb35066e8..bd98dff120e33d01b6e2b6f70af3acd8a4ba8048 100644 GIT binary patch delta 707 zcmV;!0zCcc-w)~E50FQHvD58gFLPP6SoF}og270P#Y7TaQjW)c`aRg0W(H{SH*yN_ z6HQb666N>Zzn}m6@~!*y^~>SP=AyNG>OTJY*WqE7*i!e@{r%zakXVM))<52;are}{ zJLZXde|LC@V%|M<9}f>Fqr%=jb&qeb2!Mr5wc;Qm(-@@??wBcmTwo57I45a{5myef zB1Z|7caVtGP!yyPX$$A9GY%p$>H9<|hR7Qy8#A&s8;HovGNc9zzNZoCYE%bA@CHIw zkcv3`C>8VfEJJF8F(Yw)2g9<#r1XQyU0n?pD-c4w0C21Sv$C z2jLnRE!9n*r8-`)2d>;CI4b`&54l$2BHnC4AMs`Z@{FsPW*y*1yyme@bu8*O5Nf~3 zB9zlM5ONm|n4TMmpl7Pm)OL`dUz|`3OJO!ZZ6eu#HHzPV3kG3tE8y!2_`Ye0rlVE~ zNcy^`p+;URBRjrw&@o4k+Aw8bQ21DcnD*stlGGZs6*Qt}u9F&9mjEV-BlSKBqJ(FZ zjNCXhxk5eoj2zMQbdmshLEzegBH^;7N6k>sWUQAwYpNCLG&0Q#TaWJQhJ#()O*Yg^ zj=qHSOYon6!$aguOZU`0{_*Pf#_v6;H6)~td14qIjJd+Jaoi($f#E2|0V_P)=>Urq z#gBSvjVgxl-MGAtsUWK9bx6~*B zd-fU-7lD%dt;BqQ+AnEP8vF@7{ZKVSa+`n~)7?d##n=AyNG>OTGX;qWj^Y^i(d{`z=$NGwBY>mP5_xO?i} z9rMJ!zdJlcG4GzbPltz-QDN_%y2m$I1i(V3T5%AOX^c_`cgz%jE-;5koRc)fh${zK zk)s64J4i%oC<;=Dw1sol83z%W^kX6vL*$KS{W}c35F3OMzl>iE9|5R=B4T>5=RL zZrckA+ZZbVFDR;iFDCXzLK&9EMuOP)MuMKZpco>L>mU``sSSiOcPr{Jhe%91f)pan zgK!Oumg=U@QXMbY16OVm9F_l?hg>Uh5pTAjk9e~HdB#;tvkvehUh~+dIu>;s2(@2i z5z1*B2)PRfOwSEO&@)wOYCA~KFHR_ir7#eRT!*SHp&?>L(|E`A#Eu%IjJJS?IEe=K@5RMF@hSaA_c)*ufkCJTWXYm zJ$ns^i$KZ!R$@Lv?Uytt4gLZi|F^a6DSszkNOY2LqBUqYBXlPlJsGhm8dRhm8dSw~Yk@T Date: Thu, 12 Mar 2015 15:48:17 +0300 Subject: [PATCH 144/168] Cryo will now show occupant inside on sprite. --- code/game/machinery/cryo.dm | 17 +++++++++-------- icons/obj/cryogenics.dmi | Bin 14976 -> 19236 bytes 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 79f3d0d3b2..a9858742c9 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -3,7 +3,7 @@ /obj/machinery/atmospherics/unary/cryo_cell name = "cryo cell" icon = 'icons/obj/cryogenics.dmi' - icon_state = "cell-off" + icon_state = "pod0" density = 1 anchored = 1.0 layer = 2.8 @@ -194,13 +194,14 @@ return /obj/machinery/atmospherics/unary/cryo_cell/update_icon() - if(on) - if(occupant) - icon_state = "cell-occupied" - return - icon_state = "cell-on" - return - icon_state = "cell-off" + overlays.Cut() + icon_state = "pod[on]" + if(occupant) + var/image/pickle = image(occupant.icon, occupant.icon_state) + pickle.overlays = occupant.overlays + pickle.pixel_y = 20 + overlays += pickle + overlays += "lid[on]" /obj/machinery/atmospherics/unary/cryo_cell/proc/process_occupant() if(air_contents.total_moles < 10) diff --git a/icons/obj/cryogenics.dmi b/icons/obj/cryogenics.dmi index e063421fd529fa5f5dae8b2f58c6f459e2f729e3..b731ec3c6753db450177588abeb2275911a40e12 100644 GIT binary patch literal 19236 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 z zY%gZdkfc3enn_58$$`j>f|*Y}VQqow^8&hx_rBBt-0AcdPCe5t_vrl*+`5XtyP*j3 znZru42eDi>95^>(Y*b$Ypg;&V`KyUj8J8z+r)>J;1+po7WjV*IrMaK2Zs6O6S^emZAIWnFnis%w4015b!3&5v^ey2NSaVbUTpMXSd+?AjNVld;c!zo=AK)x5^zBAR00G=wC9T zJD|uj%(ihOKGbUh{u5Z`hlYyvKK-TZ64UsRJ@rTU;eB2GEyS!@_bKzM^0C*8`$GHiQ!Sf2M#GjC=2R3y;0ln+#Y(k^cWc z(E0?$w~UH6ijMnZ^8b|O)2Cl09|kFp^Exj{VUs8-Dqe1fVV}q^Z7Ux-H?ypv1pG&0 z2yxTN+myGF!&b&HHYqCVClUEfV=UzljG11=q^rX`@KJO)sO}S?UvN0KY039Fwntd1 zt~Ugcxn;sc8#`ZS0KwdFySp#^u3%a?Co-sOt+O#| zFRUN_9CV9TE5GhR-nH+QD|qeP<#CIQ6>Bsx@nAd=b2!7|D;Yx}VWR!Qj&g_avSNJv z@=w*xKKLCK@Fy&$bqNoUo%=ASyj`^Cf5A4K`C|=9QSO|Yy<|^8ygF;YVb)QrTgu4E zDbTLlt&9$9o%9yK$_t3<5|$+X&<)pD z_btOrFOL5&Qde|XA=UK!w-4l}fYr+27fR^ecQ?JBjkE8M&L)JW*%Z({(gnJxV7 zjt7T|70bcF(M~1Pn#~eKX<*cC$O=B=?bTvY&$TEJ-}GEDLQk|LnQo7XcMf;(_P2s{ dzw!_Ot>LmjFt6nR>@THoU!;|#Y9&lV|33>W=2HLw From f03759a246f97a1cf3b3b37334873834753e614e Mon Sep 17 00:00:00 2001 From: Chinsky Date: Thu, 12 Mar 2015 15:07:20 +0300 Subject: [PATCH 145/168] Fixes organ bioprinter and the organs. Now less debuggy and less buggy too. --- code/game/machinery/bioprinter.dm | 28 ++++++++++++++++++++-------- code/modules/organs/organ_objects.dm | 9 +++++++-- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm index a0ac4258cc..7710a6d6ec 100644 --- a/code/game/machinery/bioprinter.dm +++ b/code/game/machinery/bioprinter.dm @@ -1,7 +1,7 @@ //These machines are mostly just here for debugging/spawning. Skeletons of the feature to come. /obj/machinery/bioprinter - name = "bioprinter" + name = "organ bioprinter" desc = "It's a machine that grows replacement organs." icon = 'icons/obj/surgery.dmi' @@ -41,33 +41,45 @@ if(prints_prosthetics) O.robotic = 2 else if(loaded_dna) - visible_message("The printer would be using the DNA sample if it was coded.") - //TODO: Copy DNA hash or donor reference over to new organ. + visible_message("The printer injects stored DNA in used biomass..") + var/datum/organ/internal/I = new O.organ_type + I.transplant_data = list() + var/mob/living/carbon/C = loaded_dna["donor"] + I.transplant_data["species"] = C.species.name + I.transplant_data["blood_type"] = loaded_dna["blood_type"] + I.transplant_data["blood_DNA"] = loaded_dna["blood_DNA"] + O.organ_data = I + I.organ_holder = O - visible_message("The bioprinter spits out a new organ.") + + visible_message("The bioprinter spits out a new organ.") else - user << "There is not enough matter in the printer." + user << "There is not enough matter in the printer." /obj/machinery/bioprinter/attackby(obj/item/weapon/W, mob/user) // DNA sample from syringe. if(!prints_prosthetics && istype(W,/obj/item/weapon/reagent_containers/syringe)) - user << "You inject the blood sample into the bioprinter, but it isn't coded yet." + var/obj/item/weapon/reagent_containers/syringe/S = W + var/datum/reagent/blood/injected = locate() in S.reagents.reagent_list //Grab some blood + if(injected && injected.data) + loaded_dna = injected.data + user << "You inject the blood sample into the bioprinter." return // Meat for biomass. else if(!prints_prosthetics && istype(W, /obj/item/weapon/reagent_containers/food/snacks/meat)) - user << "\blue \The [src] processes \the [W]." stored_matter += 50 user.drop_item() + user << "\The [src] processes \the [W]. Levels of stored biomass now: [stored_matter]" del(W) return // Steel for matter. else if(prints_prosthetics && istype(W, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = W - user << "\blue \The [src] processes \the [W]." stored_matter += M.amount * 10 user.drop_item() + user << "\The [src] processes \the [W]. Levels of stored matter now: [stored_matter]" del(W) return else diff --git a/code/modules/organs/organ_objects.dm b/code/modules/organs/organ_objects.dm index 610e702ad1..a97f1f28f5 100644 --- a/code/modules/organs/organ_objects.dm +++ b/code/modules/organs/organ_objects.dm @@ -76,7 +76,7 @@ /obj/item/organ/proc/update() if(!organ_data) - organ_data = new /datum/organ/internal() + organ_data = new organ_type() if(robotic) organ_data.robotic = robotic @@ -93,6 +93,7 @@ organ_tag = "heart" fresh = 6 // Juicy. dead_icon = "heart-off" + organ_type = /datum/organ/internal/heart /obj/item/organ/lungs name = "lungs" @@ -101,6 +102,7 @@ prosthetic_name = "gas exchange system" prosthetic_icon = "lungs-prosthetic" organ_tag = "lungs" + organ_type = /datum/organ/internal/lungs /obj/item/organ/kidneys name = "kidneys" @@ -109,6 +111,7 @@ prosthetic_name = "prosthetic kidneys" prosthetic_icon = "kidneys-prosthetic" organ_tag = "kidneys" + organ_type = /datum/organ/internal/kidney /obj/item/organ/eyes name = "eyeballs" @@ -117,7 +120,7 @@ prosthetic_name = "visual prosthesis" prosthetic_icon = "eyes-prosthetic" organ_tag = "eyes" - + organ_type = /datum/organ/internal/eyes var/eye_colour /obj/item/organ/liver @@ -126,11 +129,13 @@ prosthetic_name = "toxin filter" prosthetic_icon = "liver-prosthetic" organ_tag = "liver" + organ_type = /datum/organ/internal/liver /obj/item/organ/appendix name = "appendix" icon_state = "appendix" organ_tag = "appendix" + organ_type = /datum/organ/internal/appendix //These are here so they can be printed out via the fabricator. /obj/item/organ/heart/prosthetic From 2efa9c78f08d0faba321f70adbbbe9148a3449b0 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Fri, 13 Mar 2015 11:02:18 +0100 Subject: [PATCH 146/168] Corrects pulling icon_states. --- code/modules/mob/mob.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 48d711c7dd..1b92c92ae6 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -617,7 +617,7 @@ var/list/slot_equipment_priority = list( \ pulling.pulledby = null pulling = null if(pullin) - pullin.icon_state = "pull1" + pullin.icon_state = "pull0" /mob/proc/start_pulling(var/atom/movable/AM) if ( !AM || !usr || src==AM || !isturf(src.loc) ) //if there's no person pulling OR the person is pulling themself OR the object being pulled is inside something: abort! @@ -645,7 +645,7 @@ var/list/slot_equipment_priority = list( \ AM.pulledby = src if(pullin) - pullin.icon_state = "pull0" + pullin.icon_state = "pull1" if(ishuman(AM)) var/mob/living/carbon/human/H = AM From 149bf70e3e13abf34fb5ade0ee268fd0447bd8db Mon Sep 17 00:00:00 2001 From: Chinsky Date: Fri, 13 Mar 2015 13:16:59 +0300 Subject: [PATCH 147/168] Soulstones now require victim to actually be dead or maimed, as message says, instead of just sleeping. Also shades now get their former icon and stuff like ghosts, for maximum spooky. --- code/game/gamemodes/wizard/soulstone.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 678ce72582..9b22d7f6d0 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -104,7 +104,7 @@ if(C.imprinted != "empty") U << "\red Capture failed!: \black The soul stone has already been imprinted with [C.imprinted]'s mind!" else - if (T.stat == 0) + if ((T.health + T.halloss) > config.health_threshold_crit) U << "\red Capture failed!: \black Kill or maim the victim first!" else if(T.client == null) @@ -129,6 +129,11 @@ S.canmove = 0//Can't move out of the soul stone S.name = "Shade of [T.real_name]" S.real_name = "Shade of [T.real_name]" + S.icon = T.icon + S.icon_state = T.icon_state + S.overlays = T.overlays + S.color = rgb(254,0,0) + S.alpha = 127 if (T.client) T.client.mob = S S.cancel_camera() From 14811d35e984b343a3d262f24a304575c0203626 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Fri, 13 Mar 2015 23:27:35 +0100 Subject: [PATCH 148/168] Fixes #8439. Appears to be the last of the major re-occuring runtimes. Good work team. --- code/modules/examine/examine.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/examine/examine.dm b/code/modules/examine/examine.dm index 3f15fa22d4..f09fce6cf3 100644 --- a/code/modules/examine/examine.dm +++ b/code/modules/examine/examine.dm @@ -51,7 +51,7 @@ /client/Stat() . = ..() - if(statpanel("Examine")) + if(usr && statpanel("Examine")) stat(null,"[description_holders["icon"]] [description_holders["name"]]") //The name, written in big letters. stat(null,"[description_holders["desc"]]") //the default examine text. if(description_holders["info"]) From 8ce5bf55351d5101b5de1b9bc9fd9dc2f87af516 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Fri, 13 Mar 2015 21:22:19 -0400 Subject: [PATCH 149/168] Fixes missing item right hand icon states --- icons/mob/items_righthand.dmi | Bin 159077 -> 159179 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index 496b9b2c03c51628635a095f2bcc7e2b008b7d86..7408e47eb4776579a4360a449ff8cef2cfdf1b57 100644 GIT binary patch delta 1851 zcmYLJX;f3!7QO+6B18U4tPDjac?<%gF%KaRC0;P)fs6v$ zgxR5lNg!4vOcHpM0vaAD&@cxOLCQ?R5R%;68(r&l|2b!$ea_l@f9KoZhY^)Gqbm0g zqjI0?Q&o*3-eFgNFke3$1yA`Ud10xq-X$6g2*`MNGh8^&54a91?>BU}E9!2TrE^u2 zxT+`)S5-mjl3H?^&Dz?UXVM8Gk?3B^=nql&2y(9nLHCjo>sq!#J&L#98fyoof3mAD zvT$(p0T3$OjjIeQ%eWnBI{je0WzS;V1dkgRgD1}x%O54XyS?8PKb+{~q3ZYRd*kI1 zk5J*DsV$~LvoWNTc3!q)nqQ*{LbUc`Fm|zJebBxRjo&_Tv5E#xvk#$p1R>ZfeREY% zY_(XBH46@41VJl2)lI4AjWmg2u7K^Vy3;s~I z_oU@|EYd#FokLOmCf^w(k-juEG^~T>7&C#;LS17XoZE}X-ty;bcoQ&en+H0Bp7-;` zi!U5BLW4O0x?6Tk@3>&7C!A}+1ACZYPk zacNilm8tL@(fkkaYIPN1Sf>0st$utIch#2(3UKhO2<(*iulqu{a(y|<%&`VfTNUvI zkLIHJDE8I_9}~Blz#?Z&XNhM^ZFZpbEe$o{BGnA5D;&-e3c*bcZ;efa*Y{Hx0{!rl7mp<3e+3%#Ih&6#10 z0-ij1g1fyL>Fm{&r%rXDb?Io$3M_ft<4m}9=Zl9@#a59)4w0LGCvlAMtYf{6zBY~~ zTpnTvo_zR^6JtHOW=`K1LMAsmcbx-G&mN;$uVSr(IV;^2b{}O>0aa;R%v={c5q*65 zPZ_mR-N6=v%Jo*MPk)O6h+W^;U#+|TuPwzJ)iKJ`#K5VTy?tIyCKUT#V_u3i%g-_` zS9HMQ71X#e#5|ih9C1vJY!?(!008m2QZT?<%ujWtKJ!cEE1^%jx~l0|M25}x zm?)Y@4&l_*)f0wF=#)+_wEG;c?u^L`TIKqqEgzk76ak}}F6~q(vA_LD;KI$$0accK z9xBfY4$2qW%O-y}^0*FDx@hx!euIDE!c<(wxM$OwjMz3FWh5$QoXbg;n$0 z%ZSe`%HCyNw49)t_q@<*n+WZvH)aK;A|F2Z? zAF-v9Frdk;2WAJh6X6!xjY&qkm4%aRn!8L#iR9+)n-&zcGu>*E^p;D;v~QYO zHX=YzPLS6EH&VGaThgyE(1i#nJxowxhl4l61b^BcV_Lgn30`-#sm98HzGqXu#)}C^ zSoo5(@=494Q~eqMV5E`DbMpbyb<9l-zl6IoMk^?Rh!{!p`!Pb3QrQW~Uhp)LxC<&2 z>lNAi{lvIrm09jD?Vra+JCjJ&1p+EUHFk)^^Mk_*HTZ(MMO*Wop2?!(EJw$o2Zkna zTOHZspyZl)jVygy`1<#<6acmraYzjm?!5uJ%z_Et#ubS+aqo zBN881j9`H=J^Nd=ufhCt6Fb61PIL3u$Q+u>jyyEa(&Ko1MvlS92r+qL3~~`6L@DDE zQQ?ci>0(zxF|ut;iQ0)BE%}7g3ahK{e=zGzgBZ>F3|#8IUQo4L?%IBE=onl!4f>6RUF$(tN&h(d<{)ETYgW2xa!oia6D^1grWfdG{t<~T`sTwfk{#Adu0L@2-|ZvBA-hNtMA+|O zxn482BNe{YEORZVD8$P(08xRX1;96l4jnROFmTrtzWr*Cpd7w?$%zgicGl6ASbg&H G-M;|m`PRAs delta 1748 zcmZ9NeNaY9q84Qh0;PnC3iuJqD#V0RVhxZ0x1>hoNCf5E2jq1jyIkq&u@S`~G$AIcMJUn`fTq zy}e_br$;ycxX-HWsYj-R`>|8Ot;tgSG&{ECz2}CmPbmvZ4Ki%>s!af%k5oRul)cL9 zawzC>u;O+(SleFO%J5uVT>PpaBn&Fl720T$^$bWaw3MpE5wNeg)_+1T6l|S4o@B4V z6f7!b7Xi-k+p|qVPxmOPn$;#&_URqBnd{DkB)|$w`u&_Fl%{Gb=8?*!IUJF=fSFH_ zrpqn}_#y?XlMc$>D={v-`WzBfod*jVKqbrQ0kz#W8Vpwx-R5}YULoj(JGjj!t}A92 zXgK68ce51djivV>Gc>jVRmwYxqtjyY=dr)-&P-j?EI7qXu}dXN|CABXS*Gh9-EW8r*xOKOptgI~T)TyGn;=TJ|5Q9Xb z2m5nYFPhtQZ>;A^etyGv{+&v6g}#Le_u?5wo0RP$`4J5 zjt(nr(ASCe6qPaX4`w3s5%B(CU?e>VJsW(Pv*N`wh1}o9&33|-IzY?{*+XLmcvGF7 zNHR|JkqN)fNNQk}#tqPExpn?Hu=-Y~Hw(1vb3SlN1sy4ZjvbkCYY?rnrhH(y0iF8B zm!LxSz2)=pZ%w0Ul4x3a>c9?d9M`rot~Dw?6Fn^l*PF{ie)2K{RUiN5^GMiF=E}B|NF-Yz87n$N~^o}cGsjb z@wIaAw$yYq_43dX5v8lF?fwE1tGjms*48|_r_eD!f6PAwqvpR_3FN`O6&0ijI1U_2 z99iC&V<#qhp1`r5{>36@HY?p400^y%;XoUotb1rmvpyLWb#FDgifaU_BJO(5ynTTH zCdY_^4}j}416IQ|(OhIg2x!`+?Hmz@_Jcpl+2Cw;LAd$#jdqP7*C1axW1S7da@07P*k7g*qk%ok7 zP!<&MzBj@7!DGrIM%!+;_gfDSkNpRHyPp1)oIXkGn2~X*2|B6M1f*@+0(Y%pqZ53T zO(}wz_WPT{8;RiGU3Q9`Ys%@~?Ij4BP40HqL|@TGqG?@x>50}nr^3ScOYiIfpuFe| zj!`EFFWr6rqaVO;gsGAyxQU-&?0ZLDrwvo847ToWZq_ETertcF@5|FZ4}~Z{eE0x+S%6FH@9zey-BMovgJ!~xaZkIT;?=$g+zSIwPPBb3 zu#pqH@K;}0#>ct+%vF0J^Gm8r-IC{Bt}#&OXj*#R}_B zz@#YY_beM#CUTSIWhpH>7HA~OE|Z)o+Ss#au@6#1u0NZ4jyI{(-gDn%v zML_1f^U;)%KMx@fYQLVH8GMYq>lv9MfwadO)r0&;OI3Z?92Ecn%!shhQF45yG~!UU z_mUsHfo$=CJ^4~rRu%^~dyKw}dpGptw(0TTE`XK3(D-O;R<4+*hoL6s|8izGR9^!9 z6=;}LYuAqp8Dd7db?zUYKlu=_1o|+Qb`LuI2w^x##uM}}Apjr(85PD3#eVl6&K;SN From 6a5dd6c89e7fd93075e80c72a86a550deedbe373 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Fri, 13 Mar 2015 21:30:18 -0400 Subject: [PATCH 150/168] Aggressive grabs prevent missing with weapons --- code/modules/mob/mob_helpers.dm | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index e8339965c9..35636fb828 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -232,17 +232,22 @@ var/list/global/organ_rel_size = list( /proc/get_zone_with_miss_chance(zone, var/mob/target, var/miss_chance_mod = 0) zone = check_zone(zone) - // you can only miss if your target is standing and not restrained - if(!target.buckled && !target.lying) - var/miss_chance = 10 - if (zone in base_miss_chance) - miss_chance = base_miss_chance[zone] - miss_chance = max(miss_chance + miss_chance_mod, 0) - if(prob(miss_chance)) - if(prob(70)) - return null - return pick(base_miss_chance) - + // you cannot miss if your target is prone or restrained + if(target.buckled || target.lying) + return zone + // if your target is being grabbed aggressively by someone you cannot miss either + for(var/obj/item/weapon/grab/G in target.grabbed_by) + if(G.state >= GRAB_AGGRESSIVE) + return zone + + var/miss_chance = 10 + if (zone in base_miss_chance) + miss_chance = base_miss_chance[zone] + miss_chance = max(miss_chance + miss_chance_mod, 0) + if(prob(miss_chance)) + if(prob(70)) + return null + return pick(base_miss_chance) return zone From dc4d149832cf8c8b23abf16402a41e1ccd74f05f Mon Sep 17 00:00:00 2001 From: Neerti Date: Fri, 13 Mar 2015 21:41:23 -0400 Subject: [PATCH 151/168] Ports /tg/'s borg hotkeys. They work similarly to the AI's hotkeys. --- code/_onclick/ai.dm | 11 + code/_onclick/click.dm | 14 + code/_onclick/cyborg.dm | 52 ++ .../mob/living/silicon/robot/inventory.dm | 11 + .../modules/mob/living/silicon/robot/login.dm | 3 + code/modules/mob/login.dm | 5 +- interface/interface.dm | 69 ++- interface/skin.dmf | 489 +++++++++++++++++- 8 files changed, 628 insertions(+), 26 deletions(-) diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 0bedcfa588..e05cbeb9ba 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -36,6 +36,9 @@ return var/list/modifiers = params2list(params) + if(modifiers["shift"] && modifiers["ctrl"]) + CtrlShiftClickOn(A) + return if(modifiers["middle"]) MiddleClickOn(A) return @@ -101,6 +104,14 @@ I have no idea why it was in atoms.dm instead of respective files. */ +/atom/proc/AICtrlShiftClick() + return + +/obj/machinery/door/airlock/AICtrlShiftClick() + if(emagged) + return + return + /atom/proc/AIShiftClick() return diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 6ce3ffad46..abd7542d6c 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -45,6 +45,9 @@ return var/list/modifiers = params2list(params) + if(modifiers["shift"] && modifiers["ctrl"]) + CtrlShiftClickOn(A) + return if(modifiers["middle"]) MiddleClickOn(A) return @@ -292,6 +295,17 @@ /mob/proc/TurfAdjacent(var/turf/T) return T.AdjacentQuick(src) +/* + Control+Shift click + Unused except for AI +*/ +/mob/proc/CtrlShiftClickOn(var/atom/A) + A.CtrlShiftClick(src) + return + +/atom/proc/CtrlShiftClick(var/mob/user) + return + /* Misc helpers diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index 04682c76ad..5986011688 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -16,6 +16,9 @@ return var/list/modifiers = params2list(params) + if(modifiers["shift"] && modifiers["ctrl"]) + CtrlShiftClickOn(A) + return if(modifiers["middle"]) MiddleClickOn(A) return @@ -109,6 +112,55 @@ cycle_modules() return +//Give cyborgs hotkey clicks without breaking existing uses of hotkey clicks +// for non-doors/apcs +/mob/living/silicon/robot/CtrlShiftClickOn(var/atom/A) + A.BorgCtrlShiftClick(src) + +/mob/living/silicon/robot/ShiftClickOn(var/atom/A) + A.BorgShiftClick(src) + +/mob/living/silicon/robot/CtrlClickOn(var/atom/A) + A.BorgCtrlClick(src) + +/mob/living/silicon/robot/AltClickOn(var/atom/A) + A.BorgAltClick(src) + +/atom/proc/BorgCtrlShiftClick(var/mob/living/silicon/robot/user) //forward to human click if not overriden + CtrlShiftClick(user) + +/obj/machinery/door/airlock/BorgCtrlShiftClick() + AICtrlShiftClick() + +/atom/proc/BorgShiftClick(var/mob/living/silicon/robot/user) //forward to human click if not overriden + ShiftClick(user) + +/obj/machinery/door/airlock/BorgShiftClick() // Opens and closes doors! Forwards to AI code. + AIShiftClick() + + +/atom/proc/BorgCtrlClick(var/mob/living/silicon/robot/user) //forward to human click if not overriden + CtrlClick(user) + +/obj/machinery/door/airlock/BorgCtrlClick() // Bolts doors. Forwards to AI code. + AICtrlClick() + +/obj/machinery/power/apc/BorgCtrlClick() // turns off/on APCs. Forwards to AI code. + AICtrlClick() + +/obj/machinery/turretid/BorgCtrlClick() //turret control on/off. Forwards to AI code. + AICtrlClick() + +/atom/proc/BorgAltClick(var/mob/living/silicon/robot/user) + AltClick(user) + return + +/obj/machinery/door/airlock/BorgAltClick() // Eletrifies doors. Forwards to AI code. + AIAltClick() + +/obj/machinery/turretid/BorgAltClick() //turret lethal on/off. Forwards to AI code. + AIAltClick() + /* As with AI, these are not used in click code, because the code for robots is specific, not generic. diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index 794b983f66..7d14d3c437 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -7,6 +7,17 @@ /*-------TODOOOOOOOOOO--------*/ +//Verbs used by hotkeys. +/mob/living/silicon/robot/verb/cmd_unequip_module() + set name = "unequip-module" + set hidden = 1 + uneq_active() + +/mob/living/silicon/robot/verb/cmd_toggle_module(module as num) + set name = "toggle-module" + set hidden = 1 + toggle_module(module) + /mob/living/silicon/robot/proc/uneq_active() if(isnull(module_active)) return diff --git a/code/modules/mob/living/silicon/robot/login.dm b/code/modules/mob/living/silicon/robot/login.dm index 3aef61fb3d..4299fc730f 100644 --- a/code/modules/mob/living/silicon/robot/login.dm +++ b/code/modules/mob/living/silicon/robot/login.dm @@ -3,4 +3,7 @@ regenerate_icons() show_laws(0) if(mind) ticker.mode.remove_revolutionary(mind) + + winset(src, null, "mainwindow.macro=borgmacro hotkey_toggle.is-checked=false input.focus=true input.background-color=#D3B5B5") + return \ No newline at end of file diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index c888218605..d34a309ee3 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -43,4 +43,7 @@ client.perspective = EYE_PERSPECTIVE else client.eye = src - client.perspective = MOB_PERSPECTIVE \ No newline at end of file + client.perspective = MOB_PERSPECTIVE + + //set macro to normal incase it was overriden (like cyborg currently does) + winset(src, null, "mainwindow.macro=macro hotkey_toggle.is-checked=false input.focus=true input.background-color=#D3B5B5") diff --git a/interface/interface.dm b/interface/interface.dm index e788afb7c1..31312c277b 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -35,6 +35,14 @@ set name = "hotkeys-help" set category = "OOC" + var/admin = {" +Admin: +\tF5 = Aghost (admin-ghost) +\tF6 = player-panel-new +\tF7 = admin-pm +\tF8 = Invisimin +"} + var/hotkey_mode = {" Hotkey-Mode: (hotkey-mode must be on) \tTAB = toggle hotkey-mode @@ -55,6 +63,8 @@ Hotkey-Mode: (hotkey-mode must be on) \t2 = disarm-intent \t3 = grab-intent \t4 = harm-intent +\tCtrl = drag +\tShift = examine "} var/other = {" @@ -86,15 +96,58 @@ Any-Mode: (hotkey doesn't need to be on) \tEND = throw "} - var/admin = {" -Admin: -\tF5 = Aghost (admin-ghost) -\tF6 = player-panel-new -\tF7 = admin-pm -\tF8 = Invisimin + var/robot_hotkey_mode = {" +Hotkey-Mode: (hotkey-mode must be on) +\tTAB = toggle hotkey-mode +\ta = left +\ts = down +\td = right +\tw = up +\tq = unequip active module +\tt = say +\tx = cycle active modules +\tz = activate held object (or y) +\tf = cycle-intents-left +\tg = cycle-intents-right +\t1 = activate module 1 +\t2 = activate module 2 +\t3 = activate module 3 +\t4 = toggle intents +\t5 = emote +\tCtrl = drag +\tShift = examine "} - src << hotkey_mode - src << other + var/robot_other = {" +Any-Mode: (hotkey doesn't need to be on) +\tCtrl+a = left +\tCtrl+s = down +\tCtrl+d = right +\tCtrl+w = up +\tCtrl+q = unequip active module +\tCtrl+x = cycle active modules +\tCtrl+z = activate held object (or Ctrl+y) +\tCtrl+f = cycle-intents-left +\tCtrl+g = cycle-intents-right +\tCtrl+1 = activate module 1 +\tCtrl+2 = activate module 2 +\tCtrl+3 = activate module 3 +\tCtrl+4 = toggle intents +\tF1 = adminhelp +\tF2 = ooc +\tF3 = say +\tF4 = emote +\tDEL = pull +\tINS = toggle intents +\tPGUP = cycle active modules +\tPGDN = activate held object +"} + + if(isrobot(src.mob)) + src << robot_hotkey_mode + src << robot_other + else + src << hotkey_mode + src << other if(holder) src << admin diff --git a/interface/skin.dmf b/interface/skin.dmf index d068054731..68acfba607 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -1,3 +1,269 @@ +macro "borghotkeymode" + elem + name = "TAB" + command = ".winset \"mainwindow.macro=borgmacro hotkey_toggle.is-checked=false input.focus=true input.background-color=#D3B5B5\"" + is-disabled = false + elem + name = "CENTER+REP" + command = ".center" + is-disabled = false + elem + name = "NORTHEAST" + command = ".northeast" + is-disabled = false + elem + name = "SOUTHEAST" + command = ".southeast" + is-disabled = false + elem + name = "SOUTHWEST" + command = ".southwest" + is-disabled = false + elem + name = "NORTHWEST" + command = ".northwest" + is-disabled = false + elem + name = "ALT+WEST" + command = "westfaceperm" + is-disabled = false + elem + name = "CTRL+WEST" + command = "westface" + is-disabled = false + elem + name = "WEST+REP" + command = ".west" + is-disabled = false + elem + name = "ALT+NORTH" + command = "northfaceperm" + is-disabled = false + elem + name = "CTRL+NORTH" + command = "northface" + is-disabled = false + elem + name = "NORTH+REP" + command = ".north" + is-disabled = false + elem + name = "ALT+EAST" + command = "eastfaceperm" + is-disabled = false + elem + name = "CTRL+EAST" + command = "eastface" + is-disabled = false + elem + name = "EAST+REP" + command = ".east" + is-disabled = false + elem + name = "ALT+SOUTH" + command = "southfaceperm" + is-disabled = false + elem + name = "CTRL+SOUTH" + command = "southface" + is-disabled = false + elem + name = "SOUTH+REP" + command = ".south" + is-disabled = false + elem + name = "1" + command = "toggle-module 1" + is-disabled = false + elem + name = "CTRL+1" + command = "toggle-module 1" + is-disabled = false + elem + name = "2" + command = "toggle-module 2" + is-disabled = false + elem + name = "CTRL+2" + command = "toggle-module 2" + is-disabled = false + elem + name = "3" + command = "toggle-module 3" + is-disabled = false + elem + name = "CTRL+3" + command = "toggle-module 3" + is-disabled = false + elem + name = "4" + command = "a-intent left" + is-disabled = false + elem + name = "CTRL+4" + command = "a-intent left" + is-disabled = false + elem + name = "INSERT" + command = "a-intent right" + is-disabled = false + elem + name = "DELETE" + command = "delete-key-pressed" + is-disabled = false + elem + name = "5" + command = ".me" + is-disabled = false + elem + name = "A+REP" + command = ".west" + is-disabled = false + elem + name = "CTRL+A+REP" + command = ".west" + is-disabled = false + elem + name = "D+REP" + command = ".east" + is-disabled = false + elem + name = "CTRL+D+REP" + command = ".east" + is-disabled = false + elem + name = "F" + command = "a-intent left" + is-disabled = false + elem + name = "CTRL+F" + command = "a-intent left" + is-disabled = false + elem + name = "G" + command = "a-intent right" + is-disabled = false + elem + name = "CTRL+G" + command = "a-intent right" + is-disabled = false + elem + name = "J" + command = "toggle-gun-mode" + is-disabled = false + elem + name = "CTRL+J" + command = "toggle-gun-mode" + is-disabled = false + elem + name = "Q" + command = "unequip-module" + is-disabled = false + elem + name = "CTRL+Q" + command = "unequip-module" + is-disabled = false + elem + name = "R" + command = ".southwest" + is-disabled = false + elem + name = "CTRL+R" + command = ".southwest" + is-disabled = false + elem "s_key" + name = "S+REP" + command = ".south" + is-disabled = false + elem + name = "CTRL+S+REP" + command = ".south" + is-disabled = false + elem + name = "T" + command = ".say" + is-disabled = false + elem "w_key" + name = "W+REP" + command = ".north" + is-disabled = false + elem + name = "CTRL+W+REP" + command = ".north" + is-disabled = false + elem + name = "X" + command = ".northeast" + is-disabled = false + elem + name = "CTRL+X" + command = ".northeast" + is-disabled = false + elem + name = "Y" + command = "Activate-Held-Object" + is-disabled = false + elem + name = "CTRL+Y" + command = "Activate-Held-Object" + is-disabled = false + elem + name = "Z" + command = "Activate-Held-Object" + is-disabled = false + elem + name = "CTRL+Z" + command = "Activate-Held-Object" + is-disabled = false + elem + name = "F1" + command = "adminhelp" + is-disabled = false + elem + name = "CTRL+SHIFT+F1+REP" + command = ".options" + is-disabled = false + elem + name = "F2" + command = "ooc" + is-disabled = false + elem + name = "F2+REP" + command = ".screenshot auto" + is-disabled = false + elem + name = "SHIFT+F2+REP" + command = ".screenshot" + is-disabled = false + elem + name = "F3" + command = ".say" + is-disabled = false + elem + name = "F4" + command = ".me" + is-disabled = false + elem + name = "F5" + command = "asay" + is-disabled = false + elem + name = "F6" + command = "Player-Panel-New" + is-disabled = false + elem + name = "F7" + command = "Admin-PM" + is-disabled = false + elem + name = "F8" + command = "Invisimin" + is-disabled = false + elem + name = "F12" + command = "F12" + is-disabled = false + macro "macro" elem name = "TAB" @@ -217,6 +483,10 @@ macro "hotkeymode" name = "NORTHWEST" command = ".northwest" is-disabled = false + elem + name = "ALT+WEST" + command = "westfaceperm" + is-disabled = false elem name = "CTRL+WEST" command = "westface" @@ -225,6 +495,10 @@ macro "hotkeymode" name = "WEST+REP" command = ".west" is-disabled = false + elem + name = "ALT+NORTH" + command = "northfaceperm" + is-disabled = false elem name = "CTRL+NORTH" command = "northface" @@ -233,6 +507,10 @@ macro "hotkeymode" name = "NORTH+REP" command = ".north" is-disabled = false + elem + name = "ALT+EAST" + command = "eastfaceperm" + is-disabled = false elem name = "CTRL+EAST" command = "eastface" @@ -241,6 +519,10 @@ macro "hotkeymode" name = "EAST+REP" command = ".east" is-disabled = false + elem + name = "ALT+SOUTH" + command = "southfaceperm" + is-disabled = false elem name = "CTRL+SOUTH" command = "southface" @@ -249,23 +531,6 @@ macro "hotkeymode" name = "SOUTH+REP" command = ".south" is-disabled = false - elem - name = "ALT+WEST" - command = "westfaceperm" - is-disabled = false - is-disabled = false - elem - name = "ALT+NORTH" - command = "northfaceperm" - is-disabled = false - elem - name = "ALT+EAST" - command = "eastfaceperm" - is-disabled = false - elem - name = "ALT+SOUTH" - command = "southfaceperm" - is-disabled = false elem name = "INSERT" command = "a-intent right" @@ -475,6 +740,196 @@ macro "hotkeymode" command = "F12" is-disabled = false +macro "borgmacro" + elem + name = "TAB" + command = ".winset \"mainwindow.macro=borghotkeymode hotkey_toggle.is-checked=true mapwindow.map.focus=true input.background-color=#F0F0F0\"" + is-disabled = false + elem + name = "CENTER+REP" + command = ".center" + is-disabled = false + elem + name = "NORTHEAST" + command = ".northeast" + is-disabled = false + elem + name = "SOUTHEAST" + command = ".southeast" + is-disabled = false + elem + name = "SOUTHWEST" + command = ".southwest" + is-disabled = false + elem + name = "NORTHWEST" + command = ".northwest" + is-disabled = false + elem + name = "ALT+WEST" + command = "westfaceperm" + is-disabled = false + elem + name = "CTRL+WEST" + command = "westface" + is-disabled = false + elem + name = "WEST+REP" + command = ".west" + is-disabled = false + elem + name = "ALT+NORTH" + command = "northfaceperm" + is-disabled = false + elem + name = "CTRL+NORTH" + command = "northface" + is-disabled = false + elem + name = "NORTH+REP" + command = ".north" + is-disabled = false + elem + name = "ALT+EAST" + command = "eastfaceperm" + is-disabled = false + elem + name = "CTRL+EAST" + command = "eastface" + is-disabled = false + elem + name = "EAST+REP" + command = ".east" + is-disabled = false + elem + name = "ALT+SOUTH" + command = "southfaceperm" + is-disabled = false + elem + name = "CTRL+SOUTH" + command = "southface" + is-disabled = false + elem + name = "SOUTH+REP" + command = ".south" + is-disabled = false + elem + name = "INSERT" + command = "a-intent right" + is-disabled = false + elem + name = "DELETE" + command = "delete-key-pressed" + is-disabled = false + elem + name = "CTRL+1" + command = "toggle-module 1" + is-disabled = false + elem + name = "CTRL+2" + command = "toggle-module 2" + is-disabled = false + elem + name = "CTRL+3" + command = "toggle-module 3" + is-disabled = false + elem + name = "CTRL+4" + command = "a-intent left" + is-disabled = false + elem + name = "CTRL+A+REP" + command = ".west" + is-disabled = false + elem + name = "CTRL+D+REP" + command = ".east" + is-disabled = false + elem + name = "CTRL+F" + command = "a-intent left" + is-disabled = false + elem + name = "CTRL+G" + command = "a-intent right" + is-disabled = false + elem + name = "CTRL+Q" + command = ".northwest" + is-disabled = false + elem + name = "CTRL+R" + command = ".southwest" + is-disabled = false + elem + name = "CTRL+S+REP" + command = ".south" + is-disabled = false + elem + name = "CTRL+W+REP" + command = ".north" + is-disabled = false + elem + name = "CTRL+X" + command = ".northeast" + is-disabled = false + elem + name = "CTRL+Y" + command = "Activate-Held-Object" + is-disabled = false + elem + name = "CTRL+Z" + command = "Activate-Held-Object" + is-disabled = false + elem + name = "F1" + command = "adminhelp" + is-disabled = false + elem + name = "CTRL+SHIFT+F1+REP" + command = ".options" + is-disabled = false + elem + name = "F2" + command = "ooc" + is-disabled = false + elem + name = "F2+REP" + command = ".screenshot auto" + is-disabled = false + elem + name = "SHIFT+F2+REP" + command = ".screenshot" + is-disabled = false + elem + name = "F3" + command = ".say" + is-disabled = false + elem + name = "F4" + command = ".me" + is-disabled = false + elem + name = "F5" + command = "asay" + is-disabled = false + elem + name = "F6" + command = "Player-Panel-New" + is-disabled = false + elem + name = "F7" + command = "Admin-PM" + is-disabled = false + elem + name = "F8" + command = "Invisimin" + is-disabled = false + elem + name = "F12" + command = "F12" + is-disabled = false + menu "menu" elem From 812ff9869d7c763a815de7acb6792f5d86aec67c Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 14 Mar 2015 00:41:55 -0400 Subject: [PATCH 152/168] Implements projectile point blank damage multipliers for targets being grabbed. --- code/modules/mob/living/living.dm | 2 +- code/modules/projectiles/gun.dm | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 8995183db9..fce4e3edcc 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -530,7 +530,7 @@ del(G) if(GRAB_NECK) //If the you move when grabbing someone then it's easier for them to break free. Same if the affected mob is immune to stun. - if (((world.time - G.assailant.l_move_time < 20 || !L.stunned) && prob(15)) || prob(3)) + if (((world.time - G.assailant.l_move_time < 30 || !L.stunned) && prob(15)) || prob(3)) L.visible_message("[L] has broken free of [G.assailant]'s headlock!") del(G) if(resisting) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index c03df810de..596f4de055 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -197,9 +197,22 @@ x_offset = rand(-1,1) //Point blank bonus - if(pointblank) P.damage *= 1.3 - - //TODO: accuracy modifiers + if(pointblank) + var/damage_mult = 1.3 //default point blank multiplier + + //determine multiplier due to the target being grabbed + if(ismob(target)) + var/mob/M = target + if(M.grabbed_by.len) + var/grabstate = 0 + for(var/obj/item/weapon/grab/G in M.grabbed_by) + grabstate = max(grabstate, G.state) + if(grabstate >= GRAB_NECK) + damage_mult = 1.5 + else if (grabstate >= GRAB_AGGRESSIVE) + damage_mult = 3.0 + + P.damage *= damage_mult if(params) P.set_clickpoint(params) From c4e4c7732000654e5d2d62a87a97ad7ec1a14203 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 14 Mar 2015 01:25:54 -0400 Subject: [PATCH 153/168] Having a neck grab on someone causes them to be hit by projectiles first instead of you. If however the bullet misses or passes through the person being grabbed then it continues on and may still hit the person doing the grabbing. --- code/modules/projectiles/projectile.dm | 7 +++++++ code/setup.dm | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 9b710409a1..948998c522 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -194,6 +194,13 @@ if(ismob(A)) var/mob/M = A if(istype(A, /mob/living)) + //if they have a neck grab on someone, that person gets hit instead + for(var/obj/item/weapon/grab/G in list(M.l_hand, M.r_hand)) + if(G.state >= GRAB_NECK) + //If Bump() returns 0 (missed them or went through them) then we continue on to attack M. + if(Bump(G.affecting)) + return + passthrough = !attack_mob(M, distance) else passthrough = 1 //so ghosts don't stop bullets diff --git a/code/setup.dm b/code/setup.dm index 0a09af0cd4..7702564676 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -401,10 +401,10 @@ #define XENO_HOST 32768 // Tracks whether we're gonna be a baby alien's mummy. // Grab levels. +#define GRAB_UPGRADING -1 #define GRAB_PASSIVE 1 #define GRAB_AGGRESSIVE 2 #define GRAB_NECK 3 -#define GRAB_UPGRADING 4 #define GRAB_KILL 5 // Security levels. From e6e0c870629c80ddfac3424cfaa1129e11735ad5 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 14 Mar 2015 01:53:11 -0400 Subject: [PATCH 154/168] Aggressive grab auto hit only applies to close targets and melee attacks --- .../mob/living/carbon/human/human_defense.dm | 2 +- code/modules/mob/mob_helpers.dm | 9 +++++---- code/modules/projectiles/projectile.dm | 15 ++++++++++----- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 83076373e4..6012adb0dd 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -319,7 +319,7 @@ emp_act if (O.throw_source) var/distance = get_dist(O.throw_source, loc) miss_chance = max(15*(distance-2), 0) - zone = get_zone_with_miss_chance(zone, src, miss_chance) + zone = get_zone_with_miss_chance(zone, src, miss_chance, ranged_attack=1) if(!zone) visible_message("\blue \The [O] misses [src] narrowly!") diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 35636fb828..95de6cdfb4 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -229,16 +229,17 @@ var/list/global/organ_rel_size = list( // Emulates targetting a specific body part, and miss chances // May return null if missed // miss_chance_mod may be negative. -/proc/get_zone_with_miss_chance(zone, var/mob/target, var/miss_chance_mod = 0) +/proc/get_zone_with_miss_chance(zone, var/mob/target, var/miss_chance_mod = 0, var/ranged_attack=0) zone = check_zone(zone) // you cannot miss if your target is prone or restrained if(target.buckled || target.lying) return zone // if your target is being grabbed aggressively by someone you cannot miss either - for(var/obj/item/weapon/grab/G in target.grabbed_by) - if(G.state >= GRAB_AGGRESSIVE) - return zone + if(!ranged_attack) + for(var/obj/item/weapon/grab/G in target.grabbed_by) + if(G.state >= GRAB_AGGRESSIVE) + return zone var/miss_chance = 10 if (zone in base_miss_chance) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 948998c522..23ef9e03c3 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -135,16 +135,21 @@ xo = new_x - starting_loc.x //Called when the projectile intercepts a mob. Returns 1 if the projectile hit the mob, 0 if it missed and should keep flying. -/obj/item/projectile/proc/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier) +/obj/item/projectile/proc/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0) //accuracy bonus from aiming - if (istype(shot_from, /obj/item/weapon/gun)) //If you aim at someone beforehead, it'll hit more often. - var/obj/item/weapon/gun/daddy = shot_from //Kinda balanced by fact you need like 2 seconds to aim + if (istype(shot_from, /obj/item/weapon/gun)) + var/obj/item/weapon/gun/daddy = shot_from miss_modifier -= round(15*daddy.accuracy) - if (daddy.aim_targets && original in daddy.aim_targets) //As opposed to no-delay pew pew + + //If you aim at someone beforehead, it'll hit more often. + //Kinda balanced by fact you need like 2 seconds to aim + //As opposed to no-delay pew pew + if (daddy.aim_targets && original in daddy.aim_targets) miss_modifier += -30 //roll to-hit - var/hit_zone = get_zone_with_miss_chance(def_zone, target_mob, max(miss_modifier + 15*(distance-2), 0)) + miss_modifier = max(miss_modifier + 15*(distance-2), 0) + var/hit_zone = get_zone_with_miss_chance(def_zone, target_mob, miss_modifier, ranged_attack=(distance > 1)) if(!hit_zone) visible_message("\The [src] misses [target_mob] narrowly!") return 0 From 6c794a86082f506038043d1af172529c129207c5 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 14 Mar 2015 02:02:08 -0400 Subject: [PATCH 155/168] Fixes damage multiplier mixup, bumped var not being reset --- code/modules/projectiles/gun.dm | 4 ++-- code/modules/projectiles/projectile.dm | 14 +++++++------- code/setup.dm | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 596f4de055..05b877f87e 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -208,9 +208,9 @@ for(var/obj/item/weapon/grab/G in M.grabbed_by) grabstate = max(grabstate, G.state) if(grabstate >= GRAB_NECK) - damage_mult = 1.5 - else if (grabstate >= GRAB_AGGRESSIVE) damage_mult = 3.0 + else if (grabstate >= GRAB_AGGRESSIVE) + damage_mult = 1.5 P.damage *= damage_mult diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 23ef9e03c3..1400c6ca58 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -181,7 +181,7 @@ return 1 -/obj/item/projectile/Bump(atom/A as mob|obj|turf|area) +/obj/item/projectile/Bump(atom/A as mob|obj|turf|area, forced=0) if(A == src) return 0 //no @@ -189,7 +189,7 @@ loc = A.loc return 0 //cannot shoot yourself - if(bumped || (A in permutated)) + if((bumped && !forced) || (A in permutated)) return 0 var/passthrough = 0 //if the projectile should continue flying @@ -200,11 +200,11 @@ var/mob/M = A if(istype(A, /mob/living)) //if they have a neck grab on someone, that person gets hit instead - for(var/obj/item/weapon/grab/G in list(M.l_hand, M.r_hand)) - if(G.state >= GRAB_NECK) - //If Bump() returns 0 (missed them or went through them) then we continue on to attack M. - if(Bump(G.affecting)) - return + var/obj/item/weapon/grab/G = locate() in M + if(G && G.state >= GRAB_NECK) + visible_message("\The [M] uses [G.affecting] as a shield!") + if(Bump(G.affecting, forced=1)) + return //If Bump() returns 0 (keep going) then we continue on to attack M. passthrough = !attack_mob(M, distance) else diff --git a/code/setup.dm b/code/setup.dm index 7702564676..0a09af0cd4 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -401,10 +401,10 @@ #define XENO_HOST 32768 // Tracks whether we're gonna be a baby alien's mummy. // Grab levels. -#define GRAB_UPGRADING -1 #define GRAB_PASSIVE 1 #define GRAB_AGGRESSIVE 2 #define GRAB_NECK 3 +#define GRAB_UPGRADING 4 #define GRAB_KILL 5 // Security levels. From 8e5751a63222db70172bd8028f9201086da16486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Sat, 14 Mar 2015 19:27:36 +0100 Subject: [PATCH 156/168] Bodyscanner : idle 60, active 10k --- code/game/machinery/adv_med.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 98ebc5a626..f06d912f2e 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -17,6 +17,9 @@ /*/obj/machinery/bodyscanner/allow_drop() return 0*/ +/obj/machinery/bodyscanner/process() + return + /obj/machinery/bodyscanner/relaymove(mob/user as mob) if (user.stat) return From d4e46182af08275fa3ae52ab45b9d90d77bcf9bf Mon Sep 17 00:00:00 2001 From: Techhead0 Date: Sat, 14 Mar 2015 14:38:30 -0400 Subject: [PATCH 157/168] More things in belts. I widened the selection of things you can put in various belts. Most notably, emergency gear in medical belts and botany gear in tool belts. --- .../objects/items/weapons/storage/belt.dm | 25 +++++++++++++------ .../xenoarchaeology/tools/gearbelt.dm | 4 ++- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index d5c1cd851f..a44adb1832 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -32,7 +32,11 @@ /obj/item/device/t_scanner, /obj/item/device/analyzer, /obj/item/taperoll/engineering, - /obj/item/device/robotanalyzer) + /obj/item/device/robotanalyzer, + /obj/item/weapon/minihoe, + /obj/item/weapon/hatchet, + /obj/item/weapon/extinguisher/mini + ) /obj/item/weapon/storage/belt/utility/full/New() @@ -75,9 +79,11 @@ /obj/item/stack/medical, /obj/item/device/flashlight/pen, /obj/item/clothing/mask/surgical, + /obj/item/clothing/head/surgery, /obj/item/clothing/gloves/latex, - /obj/item/weapon/reagent_containers/hypospray - ) + /obj/item/weapon/reagent_containers/hypospray, + /obj/item/clothing/glasses/hud/health + ) /obj/item/weapon/storage/belt/medical/emt name = "EMT utility belt" @@ -85,6 +91,11 @@ icon = 'icons/obj/custom_items.dmi' icon_state = "emsbelt" item_state = "emsbelt" + can_hold = list( + /obj/item/weapon/crowbar, + /obj/item/device/flashlight, + /obj/item/weapon/extinguisher/mini + ) /obj/item/weapon/storage/belt/security @@ -100,18 +111,18 @@ /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/weapon/handcuffs, /obj/item/device/flash, - /obj/item/clothing/glasses, + /obj/item/clothing/glasses/sunglasses, /obj/item/ammo_casing/shotgun, /obj/item/ammo_magazine, - /obj/item/weapon/reagent_containers/food/snacks/donut/normal, - /obj/item/weapon/reagent_containers/food/snacks/donut/jelly, + /obj/item/weapon/reagent_containers/food/snacks/donut/, /obj/item/weapon/melee/baton, /obj/item/weapon/gun/energy/taser, - /obj/item/weapon/flame/lighter/zippo, + /obj/item/weapon/flame/lighter, /obj/item/clothing/glasses/hud/security, /obj/item/device/flashlight, /obj/item/device/pda, /obj/item/device/radio/headset, + /obj/item/device/hailer, /obj/item/weapon/melee, /obj/item/weapon/gun/projectile/sec, /obj/item/taperoll/police diff --git a/code/modules/research/xenoarchaeology/tools/gearbelt.dm b/code/modules/research/xenoarchaeology/tools/gearbelt.dm index 02a3e93abd..b51a9e69ab 100644 --- a/code/modules/research/xenoarchaeology/tools/gearbelt.dm +++ b/code/modules/research/xenoarchaeology/tools/gearbelt.dm @@ -25,4 +25,6 @@ /obj/item/clothing/glasses, /obj/item/weapon/wrench, /obj/item/weapon/storage/box/excavation, - /obj/item/weapon/anobattery) + /obj/item/weapon/anobattery + /obj/item/device/ano_scanner + ) From 78798e7548f229817a54470888784875dfe9ff84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Sat, 14 Mar 2015 19:45:34 +0100 Subject: [PATCH 158/168] Added process on machines A to J. Changed some world iterations to machines iterations. --- code/game/machinery/ai_slipper.dm | 5 +++++ code/game/machinery/autolathe.dm | 7 +++++-- code/game/machinery/biogenerator.dm | 3 +++ code/game/machinery/bioprinter.dm | 5 +++++ code/game/machinery/buttons.dm | 3 +++ code/game/machinery/door_control.dm | 3 +++ code/game/machinery/flasher.dm | 5 ++++- code/game/machinery/hologram.dm | 3 +++ code/game/machinery/igniter.dm | 7 +++++-- code/game/machinery/jukebox.dm | 8 ++++++++ 10 files changed, 44 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index 3f2b1dc3bb..a72b38a589 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -4,6 +4,8 @@ icon_state = "motion0" layer = 3 anchored = 1.0 + use_power = 1 + idle_power_usage = 10 var/uses = 20 var/disabled = 1 var/lethal = 0 @@ -13,6 +15,9 @@ var/cooldown_on = 0 req_access = list(access_ai_upload) +/obj/machinery/ai_slipper/process() + return + /obj/machinery/ai_slipper/New() ..() update_icon() diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 5361bea23a..7fb4160d16 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -23,6 +23,9 @@ var/datum/wires/autolathe/wires = null +/obj/machinery/autolathe/process() + return + /obj/machinery/autolathe/New() ..() @@ -233,8 +236,7 @@ return busy = 1 - //This needs some work. - use_power(max(2000, (making.power_use*multiplier))) + update_use_power(2) //Check if we still have the materials. for(var/material in making.resources) @@ -253,6 +255,7 @@ sleep(build_time) busy = 0 + update_use_power(1) //Sanity check. if(!making || !src) return diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index 4afd4f0e44..35a70dd30c 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -14,6 +14,9 @@ var/build_eff = 1 var/eat_eff = 1 +/obj/machinery/biogenerator/process() + return + /obj/machinery/biogenerator/New() ..() var/datum/reagents/R = new/datum/reagents(1000) diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm index a0ac4258cc..fae30db595 100644 --- a/code/game/machinery/bioprinter.dm +++ b/code/game/machinery/bioprinter.dm @@ -7,6 +7,8 @@ anchored = 1 density = 1 + use_power = 1 + idle_power_usage = 40 icon_state = "bioprinter" @@ -21,6 +23,9 @@ "liver" = list(/obj/item/organ/liver, 50) ) +/obj/machinery/bioprinter/process() + return + /obj/machinery/bioprinter/prosthetics name = "prosthetics fabricator" desc = "It's a machine that prints prosthetic organs." diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index ad72835fae..51772b5aa3 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -10,6 +10,9 @@ idle_power_usage = 2 active_power_usage = 4 +/obj/machinery/button/process() + return + /obj/machinery/button/attack_ai(mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index 51bc9b69e6..5d996e6569 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -34,6 +34,9 @@ idle_power_usage = 2 active_power_usage = 4 +/obj/machinery/door_control/process() + return + /obj/machinery/door_control/attack_ai(mob/user as mob) if(wires & 2) return src.attack_hand(user) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 2ebefc8625..49e8761264 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -22,6 +22,9 @@ base_state = "pflash" density = 1 +/obj/machinery/flasher/process() + return + /* /obj/machinery/flasher/New() sleep(4) //<--- What the fuck are you doing? D= @@ -133,7 +136,7 @@ active = 1 icon_state = "launcheract" - for(var/obj/machinery/flasher/M in world) + for(var/obj/machinery/flasher/M in machines) if(M.id == src.id) spawn() M.flash() diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 71894c2983..4cf51f09b2 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -173,6 +173,9 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ idle_power_usage = 5 active_power_usage = 100 +/obj/machinery/hologram/process() + return + //Destruction procs. /obj/machinery/hologram/ex_act(severity) switch(severity) diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index a9be665022..63bee09b9e 100755 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -54,6 +54,9 @@ var/base_state = "migniter" anchored = 1 +/obj/machinery/sparker/process() + return + /obj/machinery/sparker/New() ..() @@ -129,12 +132,12 @@ active = 1 icon_state = "launcheract" - for(var/obj/machinery/sparker/M in world) + for(var/obj/machinery/sparker/M in machines) if (M.id == src.id) spawn( 0 ) M.ignite() - for(var/obj/machinery/igniter/M in world) + for(var/obj/machinery/igniter/M in machines) if(M.id == src.id) use_power(50) M.on = !( M.on ) diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm index 2a6755015b..d119fd3c44 100644 --- a/code/game/machinery/jukebox.dm +++ b/code/game/machinery/jukebox.dm @@ -16,6 +16,9 @@ datum/track/New(var/title_name, var/audio) anchored = 1 density = 1 power_channel = EQUIP + use_power = 1 + idle_power_usage = 10 + active_power_usage = 100 var/playing = 0 @@ -32,6 +35,9 @@ datum/track/New(var/title_name, var/audio) new/datum/track("Trai`Tor", 'sound/music/traitor.ogg'), ) +/obj/machinery/media/jukebox/process() + return + /obj/machinery/media/jukebox/Del() StopPlaying() ..() @@ -189,6 +195,7 @@ datum/track/New(var/title_name, var/audio) A.forced_ambience = null playing = 0 + update_use_power(1) update_icon() @@ -205,4 +212,5 @@ datum/track/New(var/title_name, var/audio) A.play_ambience(M) playing = 1 + update_use_power(2) update_icon() From 10c81f8d22346b8ca6ff8f76d0e6d132c4da7dd8 Mon Sep 17 00:00:00 2001 From: Techhead0 Date: Sat, 14 Mar 2015 15:04:09 -0400 Subject: [PATCH 159/168] Forgot a comma. --- code/modules/research/xenoarchaeology/tools/gearbelt.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/xenoarchaeology/tools/gearbelt.dm b/code/modules/research/xenoarchaeology/tools/gearbelt.dm index b51a9e69ab..d12446382b 100644 --- a/code/modules/research/xenoarchaeology/tools/gearbelt.dm +++ b/code/modules/research/xenoarchaeology/tools/gearbelt.dm @@ -25,6 +25,6 @@ /obj/item/clothing/glasses, /obj/item/weapon/wrench, /obj/item/weapon/storage/box/excavation, - /obj/item/weapon/anobattery + /obj/item/weapon/anobattery, /obj/item/device/ano_scanner ) From 9e464d823f6799daaef82850dc3eb0dc904c43c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Sat, 14 Mar 2015 20:06:52 +0100 Subject: [PATCH 160/168] Added process to robo-fabs and teleporter. --- code/game/machinery/robot_fabricator.dm | 3 +++ code/game/machinery/teleporter.dm | 12 +++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm index 0c3ae56115..1f4a765c9d 100644 --- a/code/game/machinery/robot_fabricator.dm +++ b/code/game/machinery/robot_fabricator.dm @@ -11,6 +11,9 @@ idle_power_usage = 40 active_power_usage = 10000 +/obj/machinery/robotic_fabricator/process() + return + /obj/machinery/robotic_fabricator/attackby(var/obj/item/O as obj, var/mob/user as mob) if (istype(O, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = O diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index f5db4a1ac0..4c257a38e6 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -86,7 +86,7 @@ /obj/machinery/computer/teleporter/attack_hand(user as mob) if(..()) return - + /* Ghosts can't use this one because it's a direct selection */ if(istype(user, /mob/dead/observer)) return @@ -175,6 +175,9 @@ active_power_usage = 2000 var/obj/machinery/computer/teleporter/com +/obj/machinery/teleport/hub/process() + return + /obj/machinery/teleport/hub/New() ..() underlays.Cut() @@ -311,6 +314,9 @@ active_power_usage = 2000 var/obj/machinery/teleport/hub/com +/obj/machinery/teleport/station/process() + return + /obj/machinery/teleport/station/New() ..() overlays.Cut() @@ -335,6 +341,8 @@ if (com) com.icon_state = "tele1" use_power(5000) + update_use_power(2) + com.update_use_power(2) for(var/mob/O in hearers(src, null)) O.show_message("\blue Teleporter engaged!", 2) src.add_fingerprint(usr) @@ -348,6 +356,8 @@ if (com) com.icon_state = "tele0" com.accurate = 0 + com.update_use_power(1) + update_use_power(1) for(var/mob/O in hearers(src, null)) O.show_message("\blue Teleporter disengaged!", 2) src.add_fingerprint(usr) From 1c67f811a7fe05670cbfc1cb8f6f00b6cf404904 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Sat, 14 Mar 2015 20:46:41 +0100 Subject: [PATCH 161/168] Updated power usage of the Autholathe. --- code/game/machinery/autolathe.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 7fb4160d16..3ad9cb9116 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -6,7 +6,7 @@ anchored = 1 use_power = 1 idle_power_usage = 10 - active_power_usage = 100 + active_power_usage = 2000 var/list/machine_recipes var/list/stored_material = list("metal" = 0, "glass" = 0) From 020e1e4c60103ad2df26c37b261b51812d88e15f Mon Sep 17 00:00:00 2001 From: Techhead0 Date: Sat, 14 Mar 2015 15:52:29 -0400 Subject: [PATCH 162/168] Tweaks. Regeneralizes sunglasses. Adds plant analyzer and megaphone. Puts EMT gear under general medical. --- code/game/objects/items/weapons/storage/belt.dm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index a44adb1832..47821d6a24 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -35,6 +35,7 @@ /obj/item/device/robotanalyzer, /obj/item/weapon/minihoe, /obj/item/weapon/hatchet, + /obj/item/device/analyzer/plant_analyzer, /obj/item/weapon/extinguisher/mini ) @@ -82,7 +83,10 @@ /obj/item/clothing/head/surgery, /obj/item/clothing/gloves/latex, /obj/item/weapon/reagent_containers/hypospray, - /obj/item/clothing/glasses/hud/health + /obj/item/clothing/glasses/hud/health, + /obj/item/weapon/crowbar, + /obj/item/device/flashlight, + /obj/item/weapon/extinguisher/mini ) /obj/item/weapon/storage/belt/medical/emt @@ -91,11 +95,7 @@ icon = 'icons/obj/custom_items.dmi' icon_state = "emsbelt" item_state = "emsbelt" - can_hold = list( - /obj/item/weapon/crowbar, - /obj/item/device/flashlight, - /obj/item/weapon/extinguisher/mini - ) + /obj/item/weapon/storage/belt/security @@ -111,7 +111,7 @@ /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/weapon/handcuffs, /obj/item/device/flash, - /obj/item/clothing/glasses/sunglasses, + /obj/item/clothing/glasses, /obj/item/ammo_casing/shotgun, /obj/item/ammo_magazine, /obj/item/weapon/reagent_containers/food/snacks/donut/, @@ -123,6 +123,7 @@ /obj/item/device/pda, /obj/item/device/radio/headset, /obj/item/device/hailer, + /obj/item/device/megaphone, /obj/item/weapon/melee, /obj/item/weapon/gun/projectile/sec, /obj/item/taperoll/police From a50bebcbae473465e691e45452a1c1521f3860de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Sat, 14 Mar 2015 21:07:55 +0100 Subject: [PATCH 163/168] Added check for use_power in machinery.dm process --- code/game/machinery/machinery.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 042889157a..5a4e6d7255 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -126,7 +126,10 @@ Class Procs: ..() /obj/machinery/process()//If you dont use process or power why are you here - return PROCESS_KILL + if(!(use_power || idle_power_usage || active_power_usage)) + return PROCESS_KILL + + return /obj/machinery/emp_act(severity) if(use_power && stat == 0) From 2e571e5448fc453d3adbac5e4d8941f1a23b3357 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Sat, 14 Mar 2015 21:38:23 +0100 Subject: [PATCH 164/168] Pass at removing empty process() on game/machinery --- code/game/machinery/adv_med.dm | 3 --- code/game/machinery/ai_slipper.dm | 2 -- code/game/machinery/autolathe.dm | 2 -- code/game/machinery/biogenerator.dm | 2 -- code/game/machinery/bioprinter.dm | 3 --- code/game/machinery/buttons.dm | 2 -- code/game/machinery/door_control.dm | 2 -- code/game/machinery/doppler_array.dm | 3 --- code/game/machinery/flasher.dm | 5 ++--- code/game/machinery/hologram.dm | 3 --- code/game/machinery/holosign.dm | 7 +++---- code/game/machinery/igniter.dm | 5 +++-- code/game/machinery/jukebox.dm | 2 -- code/game/machinery/mass_driver.dm | 5 +---- code/game/machinery/robot_fabricator.dm | 3 --- code/game/machinery/teleporter.dm | 5 ----- 16 files changed, 9 insertions(+), 45 deletions(-) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index f06d912f2e..98ebc5a626 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -17,9 +17,6 @@ /*/obj/machinery/bodyscanner/allow_drop() return 0*/ -/obj/machinery/bodyscanner/process() - return - /obj/machinery/bodyscanner/relaymove(mob/user as mob) if (user.stat) return diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index a72b38a589..5f6e40e414 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -15,8 +15,6 @@ var/cooldown_on = 0 req_access = list(access_ai_upload) -/obj/machinery/ai_slipper/process() - return /obj/machinery/ai_slipper/New() ..() diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 3ad9cb9116..9b5cfaa526 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -23,8 +23,6 @@ var/datum/wires/autolathe/wires = null -/obj/machinery/autolathe/process() - return /obj/machinery/autolathe/New() diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index 35a70dd30c..8fd27904ce 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -14,8 +14,6 @@ var/build_eff = 1 var/eat_eff = 1 -/obj/machinery/biogenerator/process() - return /obj/machinery/biogenerator/New() ..() diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm index fae30db595..eab4af69a3 100644 --- a/code/game/machinery/bioprinter.dm +++ b/code/game/machinery/bioprinter.dm @@ -23,9 +23,6 @@ "liver" = list(/obj/item/organ/liver, 50) ) -/obj/machinery/bioprinter/process() - return - /obj/machinery/bioprinter/prosthetics name = "prosthetics fabricator" desc = "It's a machine that prints prosthetic organs." diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 51772b5aa3..ec844b6004 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -10,8 +10,6 @@ idle_power_usage = 2 active_power_usage = 4 -/obj/machinery/button/process() - return /obj/machinery/button/attack_ai(mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index 5d996e6569..25aff55578 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -34,8 +34,6 @@ idle_power_usage = 2 active_power_usage = 4 -/obj/machinery/door_control/process() - return /obj/machinery/door_control/attack_ai(mob/user as mob) if(wires & 2) diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index c6744ef96a..dbe7f1b8a7 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -13,9 +13,6 @@ var/list/doppler_arrays = list() doppler_arrays -= src ..() -/obj/machinery/doppler_array/process() - return PROCESS_KILL - /obj/machinery/doppler_array/proc/sense_explosion(var/x0,var/y0,var/z0,var/devastation_range,var/heavy_impact_range,var/light_impact_range,var/took) if(stat & NOPOWER) return if(z != z0) return diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 49e8761264..4f310de8b9 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -12,6 +12,8 @@ var/strength = 10 //How weakened targets are when flashed. var/base_state = "mflash" anchored = 1 + use_power = 1 + idle_power_usage = 2 /obj/machinery/flasher/portable //Portable version of the flasher. Only flashes when anchored name = "portable flasher" @@ -22,9 +24,6 @@ base_state = "pflash" density = 1 -/obj/machinery/flasher/process() - return - /* /obj/machinery/flasher/New() sleep(4) //<--- What the fuck are you doing? D= diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 4cf51f09b2..71894c2983 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -173,9 +173,6 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ idle_power_usage = 5 active_power_usage = 100 -/obj/machinery/hologram/process() - return - //Destruction procs. /obj/machinery/hologram/ex_act(severity) switch(severity) diff --git a/code/game/machinery/holosign.dm b/code/game/machinery/holosign.dm index 222975316f..e51025aee2 100644 --- a/code/game/machinery/holosign.dm +++ b/code/game/machinery/holosign.dm @@ -5,7 +5,9 @@ icon = 'icons/obj/holosign.dmi' icon_state = "sign_off" layer = 4 + use_power = 1 idle_power_usage = 2 + active_power_usage = 4 var/lit = 0 var/id = null var/on_icon = "sign_on" @@ -14,12 +16,9 @@ if (stat & (BROKEN|NOPOWER)) return lit = !lit - use_power = lit ? 1 : 0 + use_power = lit ? 2 : 1 update_icon() -/obj/machinery/holosign/process() - return - /obj/machinery/holosign/update_icon() if (!lit) icon_state = "sign_off" diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 63bee09b9e..50dc4e10b2 100755 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -53,9 +53,10 @@ var/last_spark = 0 var/base_state = "migniter" anchored = 1 + use_power = 1 + idle_power_usage = 2 + active_power_usage = 4 -/obj/machinery/sparker/process() - return /obj/machinery/sparker/New() ..() diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm index d119fd3c44..f87dc8ca9c 100644 --- a/code/game/machinery/jukebox.dm +++ b/code/game/machinery/jukebox.dm @@ -35,8 +35,6 @@ datum/track/New(var/title_name, var/audio) new/datum/track("Trai`Tor", 'sound/music/traitor.ogg'), ) -/obj/machinery/media/jukebox/process() - return /obj/machinery/media/jukebox/Del() StopPlaying() diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index 2a3589db2d..b67bc17986 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -39,7 +39,4 @@ if(stat & (BROKEN|NOPOWER)) return drive() - ..(severity) - -/obj/machinery/mass_driver/process() - return \ No newline at end of file + ..(severity) \ No newline at end of file diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm index 1f4a765c9d..0c3ae56115 100644 --- a/code/game/machinery/robot_fabricator.dm +++ b/code/game/machinery/robot_fabricator.dm @@ -11,9 +11,6 @@ idle_power_usage = 40 active_power_usage = 10000 -/obj/machinery/robotic_fabricator/process() - return - /obj/machinery/robotic_fabricator/attackby(var/obj/item/O as obj, var/mob/user as mob) if (istype(O, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = O diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 4c257a38e6..9e68791df0 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -175,8 +175,6 @@ active_power_usage = 2000 var/obj/machinery/computer/teleporter/com -/obj/machinery/teleport/hub/process() - return /obj/machinery/teleport/hub/New() ..() @@ -314,9 +312,6 @@ active_power_usage = 2000 var/obj/machinery/teleport/hub/com -/obj/machinery/teleport/station/process() - return - /obj/machinery/teleport/station/New() ..() overlays.Cut() From a9d18f1d833ed4a637a5a8fe23910f6044918340 Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Sun, 15 Mar 2015 17:19:59 +1300 Subject: [PATCH 165/168] Stun beam effect update Courtesy of Pawn/Bishop --- icons/effects/projectiles.dmi | Bin 32589 -> 31019 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/effects/projectiles.dmi b/icons/effects/projectiles.dmi index a2a85dd1b362a8180d58a8187cef780751dc4060..c0acb0b74b7ab9c986d8c294af271baa74653b2f 100644 GIT binary patch literal 31019 zcmV)}KzqN5P)(0002|dQ@0+L}hbh za%pgMX>V=-0C=30(z|ZMFboCIS^5ehS&O21tXc{Og@@!9460^p0g@f)k=NH}h+1?> zbF)dnp?D#3PVbwKc1O*&)dz{mO(PjvzrJa8bbTJk&}ymGAntp}w@b>Lg$&K?AS=P;3=FFFM|q8aaw{CVLHGbK!xI%h z1Hmf_xV<$C%4?7(U*8v>;0;Z=j1Mh@YS{nmoHo0Lnr*AE`=fIrHCBkk001BWNkl=qItPGrZkEnC(+y?W;}?EU*gat7iACw7qO{rb_P z$I{XH?zP^v_OSNaYfCDX;`b5BWQR(ny7d2F`DYr*-Q6m+u>E%;|6Aqi_~4&P*AKpF z-slh^2k7YNkfZ&)XU!bx z_}+7Gd;4daf2Psi-hEX0M{fI(bo~9!w_pE%zf+Ce_M@Y=;gxNBPx7;JWTaSrTT)^+ zk_@`7-%K9$9roMR@Dq)WdoEN=t}#^g3y=31K08aO`hvhOH9$wlf2yvo zkG*X}@=Wv3G*%|xttyr-H4OAhX}rvYogOJ|x=tW9CI5!^s;=|zIwA7E@?E7(*Qpvu znN`V8NVqB^G`5)Zi!aKS)Xz0Qd-4{6t^CuKE5zx0+O&V{D^hiuC0>1CM&9usrlzf1 zabG2)K1XfaN!^2e;<^qwWjWGz!5=6lZ?He|h0W@qULo!^5@wMf`s_uM+Nw)h6&;<{ zfgfICIyPS^9h+`DVKU7$|4ifRf&H@ZiMVt;kW>{Hf7ae{`;+R>sZHXuFU(vWip;%D zhi*$+%e#`+uJHTJs^lfo@zp^{3RTBEglQ(8`!@pKoX-}N^;*uTgY@Eo4_S;qOnk!rTdWz+Xjg)^stYN9?PJQhy$={y5 zLEuH1{G*bZ+$m;7^PI@|uMU`)JI}Wk4^-xMhW!f1c!Qr#2m5}x&{?$Wlw3{w=`woe zSIs%OkDC{M`p-H~luJMPC;aqBUyskpRm9R>VzlX=zcb(b!Y9qbtMZ(C&$V>j`Y{8L z+}$lFr32i2;W^eLE6cTYlTvIEo73vz>^+pgs<5ew)-p7?hj}4~%}acOCp|hVynEN* z?_GZDxk1;jj^FrZnt!H|{QmRS*mu66?a)r8+_)VN=i{R#Cy_weVauy61kN6tqT|eK z^GEj&d5J{U``opk^1kpNn}Y7tKOC3*?a9BAFI{(r_0K>0x|7W&oSJ#{j<W1%6q?a+xC{~lpeie zt3)^`MQq)j`pHY}J82!Dq3#_jc8a!I|H>$4&95Zd8)wpKq^)5kqvKCdQ4^u(&>)qL zk260<&tPV_Z@#zv{eSneaK{m*oN4}Vi;7Kb~_!1uGV=id>3Y7%GKzDnAyNP$=icjhIm{ z;_rWafysGaf0cutbo12rvK zvl%St?D<=>ldH>u=tHZlj*h#Jy3+rB;-6`B^nF6kUbiG%^RJ{|hb(u=2bMT3V8(CXn1*fIQ`~{X1S`vTMU6?2&n#1Ml1C*=ZU^Xz|=U)_6ugz&5=rNb4p%$i5mX(JX{ zLZq^cP@)lcyqo^LFHj$QmcGm|iOVz<4;BCN%CX>uFJ5E%YyUttKW<>rev?{zjyb|{ zgfErqGRb6zGy?6Q9tJ&={C|_`3VxUR{!JuzcS~wvy8#%ObERB3uNbLutmvp0RMa^B zJVH(zA(l|-lo69gCcJL%aPWfT_|KL+XE?lOwho@!TbOtP{l9)%Yo0x&itTQk)Pmo> z4oH5dTT&lwH_3HZ39a)uC6wdL?c@B*`$nid7t1dtIKpGlVX5JQ%9el&ouu`qdj?x zD4rJZZ3xP%qOp2YNViHfyp%?@ng!)el-uQKB_hJh4F{(R8_5Z*gL4pG_-^g&V^i9 zcQru}lL@cny*OEPCiS>!4M!wmM@+y7O?Hf@)3*m%>mecNcL@=73KSYOPah>XG2;$! z&%q9v{NR=R?F)O_Ku=z6Tn z%ryT@>K@=59sA{PxPj%%J-hTmA#P(gx%h2S$688zS(10QEavpaN}fJk;P!nFP?Q~| zad%rd9NSH#l*^@6wutd-=9K)wPFwHz(8I^I?pgA^3#DP5&uC9rB8ZAt=n%zlyj04! zg)2j+nXo=huAXz5UtdvXZ|*N~C=)Oz5t!ApB8+ECJly|+?9YES8{@H$9{OhSC+g!6 z6S{u&;8Arw;|?&f;>&XJy7g9MZ$3_fMk3{lh{u;ub@nP2zyB=LoNU4vEiZg^JEL27 zGjU)G?${3SMu{~|GB`5I3%M+tN+lLzvt)^)Sn^rAQZaU~!q}Rvfy-RaP&BX+!#hKY zURP7)n0sz~r#F-QT^By&&ZPcN*H?&tNygG{I1WK$0$CKcf+d_@xr%qsJbqzK6**Qe2mr^!o z6$>w4PV<^3-;Ut~1(uu0PkRtyO+^^HOf#C#;%6<&e*tzy zoDuCYH|LtuOh(4*Vw|E~Vx~wd8rX&^p_es*v%r24`_g z*zC`QoW4+;gI>6}-3ux_dBZiwtefnzVek@U-_e1Kc8bW znT_L=8i<$Ar@V0qv#&mt=F8_}*`7j!L=@!1H!anG2BsAc9;A6mlYb57;b3+5BCJqj8kQN`l68hqsww<{QyR`!`Q!=ZRM zTu}v~kl;8zmR&L;+7dAx-}%PzwaXac4=!~W8L7n0R?teN)DSg`>%%N+j-qU6h@)-C zDC3I|)vQ?*Q?ZIgdic@hWq~@R4!Z-iIQidvb;n08m#**LYv2_Q&~f99p8;T5+gg71 z)5ha#{p;ZB_pR-?@kRh%a)jq5ZRQkWh*yhMSxbEGeAB$FrWmq<2wE^U1_M?MsX4vQ z)SY5UX0VZ2XSPrZG{L0762U36DP)QSc8qY$qIKsu?ofvD7k1H5nm~I)M1q|>lzo=d zTOzFR!(=lBo}0|gDE~jbO}aitc!et4B^PrswN(+Tme$yOR@TV%;wOzuxp1;&MQz1GPpreGy!ih1o|q(ZJQOf^_<;UOWd|tI?rZF zgNPe8Iw)Wygj7Z_MIhv0yIDwsNi@camz_1=nm1HuXM;(rGg0c;^0@#H@C_7wju<~o zJHQd+@7=WNYi!yCKuZ}F{r*p{0Su}^znlOrJO9f8&R7Q6mCVvnr5))ihem1#%&!Si6*s(D~TXbgm|G#5V z>e~nZx))3lH;AA-Y*iv=JJ?krN{;sJkg;tI;iAFZ_d7hN<4TyQmZJ?{kkME>hTuOn(u7iQT ztlm}=12fBi`ET|Vzgy(v1hJg$f|@kxASYYKcC+w>1oIk}sA??)0lrtJ?aGoRBLiOO z_Q!|WGB&`DiD4!^8?9^5CIt9!^o+~52p8Mx$Fic7TM@OOJQixN3iIxB9a3O;qgmfPzGFnT_N7A;zR^8dSl4S2iE4b$bp7~OuNj$MngSg$$c`Itgsb28 zJ6i)VyWVHVaGvJ!0VK1NTsqFa`>Kh}jZ1S!t4P=wO3KOZ&(gPXl+n$HnAp3Ek;8k5 z7ls)v9>Oi8sg4;YT$h5KXF-!Nob@mxKDK9(Q$qQChgd#fTzS|UW{+s~sAqWB4D(<8 zzJa$z*T;yOT~7pKn&UA(H5_>}xSu_sH{u2Hs*9cDoH zP}VxcyqbuquI?ioDnqFdA|gsoh!YrN!1FE1WTRvz6J*lWYs69(qSZz z%x;2&ttokmJw2Y;H!QL}ql2NM>)7I##(m?H#eW^1*DQjk4fNKdJo~m_`)PybludIB z?DEqzyZuBac9V$OJoil~Wy5OD#kFE=i}Bq#4sID>?8zta4nBn>4kMG31a^^7i$#8@ zgj?wmZ3;NJBcPbDsPD`(bkOLX`?XuUQ_~I}qzidBlDHrr2oYDW3H)_n5azbjoI z4e5^ga%Jpmd7R3$@1^^LjM;4s6>Pq}8`56byk~W-<5?Cj9?J1TW`NBT8*=0BQ!&O4 zWkb8hZP(65%fenMQ!Iv^h);b)7Y=94)2XA!-H#O=SG-FKnUeS+-%hwzIFD|PRfaCY ztG&!5SZ24y8qDB?k>`7~S$n2nTkycXQQ1B*B12x@WCAZAQ%WT?;s&>LwaSEd6%I3hna80WB{FG6tvkuswg$W)O?6W>lb(y? zlu;ZI4wV8e5Si_=?T%IxpUiZAHA@`Ny3mr`7a(+a$`EDbOQxsxqTJ+KplK)2X{o z*ofAiyhdu~C^0?bA&F9B3N%QQv%($p($2i-T5$uDJybZ5aKzD;6(vlastScojCx52 z-NnPf^F+)uQj~%4n%REv)Lw7HgQ?f7PiEW!j-X>tlkkhh!YRNhbs>6(E3hO^YwH3g zaz1tC=OVS0jP1D7G^t4$ibM%ThB(}lX4N9^%k$=YfBt8`Hr$Kp>U#4@XEV(|(`b2Q zzf|7x*8-DNQwWU_ssJ6YiR$^LAfA+&Ra8eRNaLJk7Z=oMuVvN5iBis>zdtM#(k8TfVs&ApVLG2>mOoE|sJeb9#?ki2|J6*}U zenaIZ6O?vTR5^Rnf%RNzfc4lEbXGqVu27RXAERpv>}Ihhz>Mbhd|=a8X~5j?HO4**D2R*uLhU zZ-7Jbm&%wVlO1nbwwdOiX>_Mx1#K+edTe zP&gf5lKb9mx%gclN{@OgCL=`cdFKrhBmUBX^CR_njs-8(@@emu7;%|*-k?N?+N0iz zV*IWT<#OM=zfXPiqPVKRE)qQZ`KSE5 zU-Z3BncczR>-k<-+|n5%y>udVo>H=%iM4P9MbX6@Re*Yf#& z;h$-I^7(&I$)8@Oxcvjc=tp|}>)&(5U=g!tf^_WCPhP*Rr!04<|F!nSB?43`Wt=8zti7Tv(Wc%bVtHYcsL!D?Qs^1 zt(iAIet2J@=IUCrW0?du6uvI7Nv00pPvN9l0~`$(d@rfwic=Iz4r_Be$eQ;ixbp|a zu4^B1I}W@zj#Gd;@`cV{beV&*F5ufg>M|W29de=~EHlkN(>Nu0jjF53s#1MX^I`?z zi^~$}2a3flsXN{ClNZHZeDX9EYR^j==g%(Up_X~3y?x4%-wNN6zrCn;zj*)t5F?ML zBu0NUgw2N3L%Eg7YeE$lMAd4g;XfAI%o+ArF#$iBrHG#^EWRt~dUX8>H@cbTpJ^N^I`y+FSBP`QEOYtIk4epG z2W_uD@FpKPm72D0#mY(<^~Zzm|8-*5KJEXKlp4FrV#|aX-Pf+mFMa`M$Z|%XYxVE_ z;u_;^IxJWJVyl4_Fmg5B-RQkj+~?@sw}^x|DJzYp*R=$bx4_*8NeU%TT9 zNu^S{V_ByMQ4x%ACfXQ)^8brXg$A_k+k-4fLP3}{2;zjeLImIYq-SHEjMyt`Xf-~4T}Fm()nY5#iixT8I97DqVW zRJoNqAC}ZL7rtRTf3FH|`*XEOQWTfbvn-mn%d3w_7 zT#%Fxc3dl+ZO7q&Gl+ZUzs{aUkCwHMta;n*XYC_v6g~Q=ZFptdlJ7fPF4?d~-GBaL zI{Dxl5nJR#yDqRU*|0|LncpGrSik1?>wW-P0OkNUW)qq~Idh71dWXkl&~q% zhDQ;zzW!wg=v z;3EWNfm&F1VCvnSiDYEj>`Q210j%pznGbecD?jM^(Mdl&df%2c5{@7`fc^pOD=tyN zFMb@rHtoQjrhuf-p90%L#QC2*TCtD)VnrJm8867^~?GX43$^f{QS(v z%sulvUvBuiww;lR{7qO&!zn;oePq(ZqLcLPDp;^JjJ*%lxtzq7!2|1%Pjqi zTf8tO99qTZu$dqt5lM*jKB#n8rK60S9E+5M7K?Fr=qdd_tw|Qn7xw5l4lz7No8Mze-y_;6f#grl zm(=^GjQ^4iYfheQ(BFjFg2N6X>?01;Qlu753lWwP=PbfhV$+Jv0`f$G8o&aIG*hG* zjYh4VOukCSJ0AV1S-0cpMz=1TGAIl_kR`+b7BQkg62b{-z(=tU*7coy2LBpFrt3UR8o?04AvE@jpcaoh92U@Pd<<1I zNz^zQ!p@SLgvxHqDi6{s^~R74h!(8n`(=(v9Tk~ zqTDT0j)NkGgTo6!E1G%dUvH0I`UOY#-5o&MsIhwkQt#hza+gQ{P{#*lZ7La}NC=xS zE@fnCCcZXl`J`)fSP%jRBW=j8Y78BqR<5Fy9lctggb;VQ=WsZcH zG*kLda4iXGC&IoBU-qN--QtCCu<6VtuObg5c}Tj~>zU zTXODC^<5wo1B+S-h)b3c6UJf=Iikd-^45zl3+H_NS;TqS%c3**!1I189!M}dUN{iQQmRjk_~I*{`03cnZ6e8 zkVkL!B1DN&qJoT>N4d0Nv4jw1G^s|irklJ;WAiMA3^76+GQoRpcJ$qM2V8MzjbyX1 z{vE%4<0|>B^Cb20$4&8&F>4=LBZ&lLMl|pFb33^Ei=IWDSSTj3IfTa_*+=_iL~mO#HTKl!}JCvJLm8%~-i(AtUQ)TY)D z2^6(xno+b;$)eDip{wVuoVVbz=w((JW!#>*UGG`9=V5m7G;okSJ%s2bLKdG%^5lpS ztY7sOWB<)bAp{JeNDwAZInaX5g%!0Gf1#8LxvrPbO=kP?=##kA+m>DKY430(9BC|0 z6#oIAhk*Wg7GYUPtgGiD5FL+UTy{5l}{cdG>ls1T?Yp#s>b6-^Rm*pvY+#JG?Z*41cY19dsgnp{iQtd1=L41u&E=@JRI6-QSWG3qgJlHP%W;nqtfiqo3Y3MaY88a#zA4T zQQM3e6Tfoh)L(2gp`{AOjA5gmvd+9Qga`l&VS*R+mg*WR=e4T^oT3&o zTb;pdwPZ<$TGDckI*U9SOZusn@ekkXOqFSLII8i(N#FptbbL|h!@?(uq7s`%V$3GS z5_OuosO{`|%RXcOFME}&B1Vja#5uoZb+~Rx-Kq96J4re1gqTN&3MR4WMVkXBpg1dl znvU*3l&OBiAwuJ5ajbBGbVytEe0A2GvqHBw{I~Tf`LxtHwW5>)7{^Bs_YDi2yv7eO zI0CnR)U(*FWB8^4Sb)PR%vI+uI!`U{I9JVWZj$oRQAR0~3N&FLhD!^IMidp;I1C$c zQ-LJEcAiRpW%V)ddM9sw`Pt;x&J#Bkkowcd4K`B|IfaEwoFn=#qik%%j5pR3Z=OZ% zyt7r^weMHWE0;-iG%OLK_;_ZVF{A(c=Tke#sT*J4DQA2Qul&xCQL1|xHbv6O0AHSa97{H)WYsi78zN8rrUq-k3eN$*e*l#Zb3 zCWA&(M5D2>36rN}yf<^>LF$Vy8)xcnP80^(RGny6H#mMxV9^XE!~ zSg@j9(NKe(h-30aXl)@pFf5_Wn8Z13!o?o*TlH@z6UlXNL2oAvvW1KB38N_kYKhTE z6^m*Y)Smk8*wywsxR3$`N|aCtWh7Y0B05#UYHggYw$*KK+&i?dexQ2btUw3KV0?qg z0%J*%84M)^pO>Q&zpXc(N~jaUC~8Ec))EzugratBSq;hR4!MNOu#ClQW@BL?2!i4o z^FF*ful|<8msX-VM4ka+k$IyVqe9C1>^V#au zb5_dya0t(HAsj}v&XO8q@b^WiNKaa=#X)l>4q=H4j)T}1zGYJav=Yo!Pp>(yc4>n| z-hoq0n@W5tVzp8kj}x8UBH`91iK3vo9F&E@AWG2fOC%Nv%c5VUS&pv{F<}O%mDk)4 zko?c{B=xb!r+0$SIAh6iwe)y#?QwwWO}GE_9llE@hNW?PwwBY1@qu z;cPjFb2(S~?LmIl^h@i(s%O-gWyDwF7zl$@06rofN<2g~Q^xaGBh(w7S3My!QJD#pF}e$b(A_6B!ic# zvuarP?8{T4=Z6o@==}h=O*Wbsnp$GiQZMt{=19%#W`c=HUQ$pb0*mKMUE3V7Ufg3E zcL=ldBSy?2?Yl(^u1f~r6fr00et?MB%$54q`BEE+h}Ak9yR}io3ou#(06ixNBYbeZ2%uj*Wv$ra0_^qGMR0zZI2Pd%Ud*h`^WZ20(bxAnMSUpJM&HZ@ea zfU6wkR7!<7I8&EXOi#rv6d}TRc$6p+CPW>xsg*0Jik>9~ml8fcS_Oy`AXb2K49YWz zKjj3X4HAIpsm}g4oWK|n5G7jKqKOOCn<&dn3yo9}!zV%rA0LInU90DDHV`DrQf&e@p z~yvT)-G}#9O9}T*RCDnyy`Mc>P}g z2n1uMbQ%Q4_@zL{#*B$<4+85RqWoj%ubIz$1{p+6XG#0mZ)sTMS?SiGwFhm2U}7Qvl)uljO*;&+P7QGKq$ISyC29rWAor#IVvscn?3V zhkN�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 A+W-In From 801f413c9d4d51cbac3a9b3622a8ddca2d36ad79 Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Sun, 15 Mar 2015 17:46:15 +1300 Subject: [PATCH 166/168] Beam effects cleanup --- icons/effects/projectiles.dmi | Bin 31019 -> 31111 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/effects/projectiles.dmi b/icons/effects/projectiles.dmi index c0acb0b74b7ab9c986d8c294af271baa74653b2f..703d8f8c3dc4b206b8a1efec9fa0147e20ef333d 100644 GIT binary patch delta 31054 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%0Ald;*zz7F1p-6NXC>7K&kqdD+svye_BS0 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 Date: Sun, 15 Mar 2015 10:39:36 +0100 Subject: [PATCH 167/168] Fixes #8482. Adds a cryopod console. --- maps/exodus-1.dmm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 77e7dcf8b3..010d100d9b 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -3944,7 +3944,7 @@ "bxR" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/medical/medbay2) "bxS" = (/obj/machinery/vending/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bxT" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "toxin_test_airlock"; name = "exterior access button"; pixel_x = -20; pixel_y = -20; req_access_txt = "13"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/space) -"bxU" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/landmark{name = "JoinLateCyborg"},/turf/simulated/floor,/area/assembly/chargebay) +"bxU" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/landmark{name = "JoinLateCyborg"},/obj/machinery/computer/cryopod/robot{pixel_y = -30},/turf/simulated/floor,/area/assembly/chargebay) "bxV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/research_port) "bxW" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bxX" = (/obj/structure/extinguisher_cabinet{pixel_x = -27},/obj/machinery/light{dir = 8},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) @@ -7435,7 +7435,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbyobypbyobyqbyrbwQbrJbrJbrJbysbrJbwTbrKbytbdPbdPbyubgGbrNbwXbyvbywbyxbyybyybyzbyAbyBbyCbyDbvsbyEbvPbyGbxkbyHbyIbyJbvwaafbxrbxrbyKbtLbyLbskbyMbxrbxraafbyNbyNbyNbyNbyNbyNbyNbyOaJibyPblMblNaJibwbbyRbyRbySbyTbxCbyUbyVbyWbyXbyYbyZbzabwmbzbbzcbzdbzebzfbzgbzgbzhbzibzgbzjbzkbckbaAbwubclbdQbcnbzrbzsbztbzubzvbzwbppbzxbpqbpqbzybsSbwtbzzbzAbzBbzCbzDbzAbzEbzFbzGbzHbzIbwwbwwbzJbnMbnMbzKbzLbzLbzLbzMbzNbwGbwJbrgbwJbwJbzObwGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaacaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbzPbzQbzPbzRbrJbwQbrJbzSbzSbzSbzSbwTbrKbzTbzUbdPbzVbgGbrNbwXbzWbzXbzYbgGblnbgGbzZbAabAbbAcbAdbyEbwIbAfbxkbxkbxkbAgbvwbAhbAhbAhbxrbAibxpbAibxrbAjbAjbAjbyNbAkbAlbAmbAnbAobApbAqaJibAraRqaRpaJibxbbwYbxhbAvbAwbAxbAybAzbAAbABbACbADbAEbAFbAGbAHbAIbAJbAKbAIbxtbAMbANbAObnvblUbsdbnwbsgbsfbaAbPObpjbxubxUbAYbAZbAZbppbBabBbbBcbppbBdbBebBfbBgbBhbBibBjbBkbBlbBlbBmbBnbBobTHbBqbBrbBsbBtbTIbBvbBwbBwbBxbBybBzbuQbuRbBAbuRbuQbBBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbBCbwNbBDbBEbrJbwQbrJbrJbrJbrJbrJbwTbrKbzTbBFbdPbBGbgGbBHbBIbgGbBJbgFbgGbgGbyjbvsbvtbAbbAcbAdbyEbvwbBLbBMbBNbBMbBObvwbBPbBQbBRbAhbxrbBSbxrbAjbyQbBUbBVbyNbBWbzmbBYbBZbCabCabCbbCcbAraRqaRpaJibAsbCebCebySbCfbxCbCgbChbxCbCibCjbCjbCkbwkbClbCmbwkbwkbwkbwkbwkbwkbCnbwkbwkbwmbCoaXKaXKaXKaXKbSwbpjbwwbzAbzAbzAbzAbzAbzAbzAbzAbzAbzIbCrbCsbCtbBhbCubCvbCwbCxbCxbCxbCybCzbSubCBbCCbCDbCEbTGbCGbCHbCGbAtbCJbzKbzLbzMbCKbzNbCLaaaaafaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbzPbzQbzPbCMbCNbCObrJbrJbrJbCNbrJbwTbrKbzTbCPbdPbCQbgGbrNbwXbgGbqlbCRbgGbgGbAubxcbvtbAbbCTbxcbCUbvwbCVbALbCXbAWbxlbvwbCZbDabDbbDcbDdbvFbvEbDgbDhbDibDjbyNbDkbDlbDlbDmbDnbDobDpaJibDqbDrbDsaJibDtbAXbDvbDwbDxbDybDzbDAbyWbDBbBKbCjbDDbwmbDEbDFbwmbDGbDHbDIbDJbDKbDLbDMbCpbDNbDObBTbDQbDRbCpbVLbVMbDUbVAbDWbDXbDXbDYbDZbEabEbbEcbEdbEebEfbEabEgbEhbCvbEibEjbEkbwwbwwbwwbwwbwwbCdbBXbEnbzKbzMbCJbEobEpbCAbErbEsbCIbEubEvaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbzPbzQbzPbCMbCNbCObrJbrJbrJbCNbrJbwTbrKbzTbCPbdPbCQbgGbrNbwXbgGbqlbCRbgGbgGbAubxcbvtbAbbCTbxcbCUbvwbCVbALbCXbAWbxlbvwbCZbDabDbbDcbDdbvFbvEbDgbDhbDibDjbyNbDkbDlbDlbDmbDnbDobDpaJibDqbDrbDsaJibDtbAXbDvbDwbDxbDybDzbDAbyWbDBbBKbCjbDDbwmbDEbDFbwmbDGbDHbDIbDJbDKbDLbDMbCpbDNbDObBTbDQbDRbCpbVLbVMbDUbVAbDWbDXbCxbDYbDZbEabEbbEcbEdbEebEfbEabEgbEhbCvbEibEjbEkbwwbwwbwwbwwbwwbCdbBXbEnbzKbzMbCJbEobEpbCAbErbEsbCIbEubEvaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbEwbExbEwbEybEzbEAbEAbEAbEAbEAbEBbECbEDbzTbEEbdPbEFbEGbEHbEIbEJbtzbEKbELbEMbfmbtCbENbAbbEObEPbyEbvwbEQbERbESbBMbETbvwbEUbEVbEWbAhbEXbvCbEYbAjbFabFbbFcbyNbFdbFebFfbFgbDnbDobFhaJibxwaRqaRpbVjbFjbFkbFlbFmbFnbFobFpbFqbxCbxFbxFbFrbxFbwkbFsbFtbFubFvbFwbFxbDJbFybDLbFzbFAbFBbDObFCbFDbFEbFFbVlbDXbVybVAbFJbDXbDXbFKbFLbFMbFLbFLbFNbFObFPbFQbFRbFSbCvbFTbFUbFVbFWbFXbFYbFZbGabGbbGcbGdaafaafbCJbGebGfbGgbGhbGibGjbGkbCJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbGlbGmbGnbdPbdPbGobwNbwNbwNbGpbdPbdPbGqbGrbGsbdPbGtbGtbGtbGubGtbGvbGwbGxbGybGzbtCbvtbAbbGAbGBbtCbtGbtGbtGbtGbtGbGCbtGbtGbtGbtGbtGbtGbshbtGbtGbtGbtGbtGbtGbtGbtGaJiaJiaJiaJiaJiaJibxwaRqaRpbVjbGEbFkbCSbGGbCWbGIbGJbGKbGLbGMbGNbCjbGObGPbGQbGRbGSbGTbGUbGVbGWbGXbGYbGZbHabHbbHcbHdbHebHfbCpbUSbUfbwwbwwbwwbwwbwwbHibwwbwwbwwbzAbHjbzAbzAbHkbBhbCubCvbFTbHlbCYbHnbHobHpbHqbGabGbbGcbHraaaaaabCJbHsbHtbCJbBybCJbCJbBybCJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHuaafaaaaaaaaaaaabGtbHvbHwbHxbHybGvbHzbDebHBbHCbtCbvtbAbbAcbAabHDbHEbHFbHGbHHbHIbHJbHKbHLbHMbHLbHNbHObqybHQbHRbAabHSbAabHTbAabzZbHUbHVbHWbHXbHYbHZbxwaRqbDsaJlbDtbDubDtbDCbDPbxCbIbbIcbIdbIebIfbIgbIhbIibIjbIkbwmbIlbImbInbDJbDTbElbIpbIqbIrbFDbIsbItbIubCpbIvbIwbIxbIybUdbIAbIBbICbIDbUcbIFbIGbIHbIIbIJbzAbIKbCubCvbILbIMbINbIObIPbIQbIRbGabGbbISbEnbEnbEnbCJbCJbCJbCJaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaa From a41434331f19124aab8635ae6a2823e0a06df536 Mon Sep 17 00:00:00 2001 From: Den Date: Sun, 15 Mar 2015 22:22:25 +0200 Subject: [PATCH 168/168] Add middle mouse button action for buildmode Middle Mouse Button on buildmode button= On/Off object type saying" Middle Mouse Button on turf/obj = Capture object type" --- code/modules/admin/verbs/buildmode.dm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/verbs/buildmode.dm b/code/modules/admin/verbs/buildmode.dm index acd442355a..71bdabf4be 100644 --- a/code/modules/admin/verbs/buildmode.dm +++ b/code/modules/admin/verbs/buildmode.dm @@ -78,6 +78,8 @@ if(2) usr << "\blue ***********************************************************" usr << "\blue Right Mouse Button on buildmode button = Set object type" + usr << "\blue Middle Mouse Button on buildmode button= On/Off object type saying" + usr << "\blue Middle Mouse Button on turf/obj = Capture object type" usr << "\blue Left Mouse Button on turf/obj = Place objects" usr << "\blue Right Mouse Button = Delete objects" usr << "" @@ -121,10 +123,17 @@ var/varholder = "name" var/valueholder = "derp" var/objholder = /obj/structure/closet + var/objsay = 1 Click(location, control, params) var/list/pa = params2list(params) + if(pa.Find("middle")) + switch(master.cl.buildmode) + if(2) + objsay=!objsay + + if(pa.Find("left")) switch(master.cl.buildmode) if(1) @@ -242,6 +251,10 @@ A.set_dir(holder.builddir.dir) else if(pa.Find("right")) if(isobj(object)) del(object) + if(pa.Find("middle")) + holder.buildmode.objholder = text2path("[object.type]") + if(holder.buildmode.objsay) usr << "[object.type]" + if(3) if(pa.Find("left")) //I cant believe this shit actually compiles. @@ -264,4 +277,3 @@ if(pa.Find("right")) if(holder.throw_atom) holder.throw_atom.throw_at(object, 10, 1) -