From 045f2d480b98f1d1a155bb430f2dc6a0bc62c90c Mon Sep 17 00:00:00 2001 From: MMMiracles Date: Mon, 25 Jan 2016 20:58:38 -0500 Subject: [PATCH 01/17] saw and bulldog changes fight me kiddo 1v1 --- .../projectiles/ammunition/ammo_casings.dm | 6 ++++++ .../projectiles/ammunition/magazines.dm | 5 +++++ .../projectiles/guns/projectile/saw.dm | 17 +++++++++-------- .../projectiles/guns/projectile/shotgun.dm | 2 +- .../modules/projectiles/projectile/bullets.dm | 7 ++++++- code/modules/uplink/uplink_item.dm | 9 ++++++++- icons/obj/ammo.dmi | Bin 19145 -> 19631 bytes 7 files changed, 35 insertions(+), 11 deletions(-) diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index 524dfa341cb..f50d595f8fc 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -142,6 +142,12 @@ icon_state = "mshell" projectile_type = /obj/item/projectile/bullet/meteorshot +/obj/item/ammo_casing/shotgun/breaching + name = "breaching shell" + desc = "An economic version of the meteorshot, utilizing similar technologies. Great for busting down doors." + icon_state = "mshell" + projectile_type = /obj/item/projectile/bullet/meteorshot/weak + /obj/item/ammo_casing/shotgun/pulseslug name = "pulse slug" desc = "A delicate device which can be loaded into a shotgun. The primer acts as a button which triggers the gain medium and fires a powerful \ diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index a5ff5364b5e..390339609e5 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -304,6 +304,11 @@ obj/item/ammo_box/magazine/tommygunm45 icon_state = "m12gt" ammo_type = /obj/item/ammo_casing/shotgun/dart/bioterror +/obj/item/ammo_box/magazine/m12g/breach + name = "shotgun magazine (12g breacher slugs)" + icon_state = "m12gbc" + ammo_type = /obj/item/projectile/bullet/meteorshot/weak + /obj/item/ammo_box/magazine/toy name = "foam force META magazine" ammo_type = /obj/item/ammo_casing/caseless/foam_dart diff --git a/code/modules/projectiles/guns/projectile/saw.dm b/code/modules/projectiles/guns/projectile/saw.dm index 7d54685f070..0677e7be670 100644 --- a/code/modules/projectiles/guns/projectile/saw.dm +++ b/code/modules/projectiles/guns/projectile/saw.dm @@ -27,6 +27,7 @@ /obj/item/weapon/gun/projectile/automatic/l6_saw/update_icon() icon_state = "l6[cover_open ? "open" : "closed"][magazine ? Ceiling(get_ammo(0)/12.5)*25 : "-empty"]" + item_state = "l6[cover_open ? "openmag" : "closedmag"]" /obj/item/weapon/gun/projectile/automatic/l6_saw/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) //what I tried to do here is just add a check to see if the cover is open or not and add an icon_state change because I can't figure out how c-20rs do it with overlays @@ -64,35 +65,35 @@ /obj/item/projectile/bullet/saw - damage = 35 + damage = 45 armour_penetration = 5 /obj/item/projectile/bullet/saw/bleeding - damage = 15 + damage = 20 armour_penetration = 0 /obj/item/projectile/bullet/saw/bleeding/on_hit(atom/target, blocked = 0, hit_zone) if((blocked != 100) && istype(target, /mob/living/carbon/human)) var/mob/living/carbon/human/H = target - H.drip(25) + H.drip(35) /obj/item/projectile/bullet/saw/hollow - damage = 45 - armour_penetration = 0 + damage = 60 + armour_penetration = -10 /obj/item/projectile/bullet/saw/ap - damage = 30 + damage = 35 armour_penetration = 35 /obj/item/projectile/bullet/saw/incen - damage = 5 + damage = 7 armour_penetration = 0 /obj/item/projectile/bullet/saw/incen/on_hit(atom/target, blocked = 0) . = ..() if(iscarbon(target)) var/mob/living/carbon/M = target - M.adjust_fire_stacks(1) + M.adjust_fire_stacks(3) M.IgniteMob() diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 5d5bd451982..f8ab1429903 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -296,7 +296,7 @@ item_state = "bulldog" w_class = 3 origin_tech = "combat=5;materials=4;syndicate=6" - mag_type = /obj/item/ammo_box/magazine/m12g + mag_type = /obj/item/ammo_box/magazine/m12g/stun fire_sound = 'sound/weapons/Gunshot.ogg' can_suppress = 0 burst_size = 1 diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 9a28155154b..96c77c95157 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -72,7 +72,7 @@ . = ..() if(iscarbon(target)) var/mob/living/carbon/M = target - M.adjust_fire_stacks(1) + M.adjust_fire_stacks(4) M.IgniteMob() @@ -101,6 +101,11 @@ stun = 8 hitsound = 'sound/effects/meteorimpact.ogg' +/obj/item/projectile/bullet/meteorshot/weak + damage = 10 + weaken = 4 + stun = 4 + /obj/item/projectile/bullet/meteorshot/on_hit(atom/target, blocked = 0) . = ..() if(istype(target, /atom/movable)) diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index bf8813a850e..89880dce4ee 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -378,6 +378,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once. name = "12g Slug Drum" desc = "An additional 8-round slug magazine for use with the Bulldog shotgun. \ Now 8 times less likely to shoot your pals." + cost = 3 item = /obj/item/ammo_box/magazine/m12g /datum/uplink_item/ammo/shotgun/slug @@ -385,7 +386,6 @@ var/list/uplink_items = list() // Global list so we only initialize this once. desc = "An alternative 8-round stun slug magazine for use with the Bulldog shotgun. \ Saying that they're completely non-lethal would be lying." item = /obj/item/ammo_box/magazine/m12g/stun - cost = 3 include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/ammo/shotgun/dragon @@ -395,6 +395,13 @@ var/list/uplink_items = list() // Global list so we only initialize this once. item = /obj/item/ammo_box/magazine/m12g/dragon include_modes = list(/datum/game_mode/nuclear) +/datum/uplink_item/ammo/shotgun/breach + name = "12g Breaching Shells" + desc = "An economic variant of the CMC meteorshot slugs, not as effective for knocking \ + down targets, but still great for blasting airlocks off their frames." + item = /obj/item/ammo_box/magazine/m12g/breach + include_modes = list(/datum/game_mode/nuclear) + /datum/uplink_item/ammo/shotgun/bag name = "12g Ammo Duffelbag" desc = "A duffelbag filled with enough 12g ammo to supply an entire team, at a discounted price." diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index b3b91d6236e677a3d60ad0f04127c374c62ebba8..3a57dbbcfd38e416098702ae4fc6e04decc4ee50 100644 GIT binary patch literal 19631 zcmcG$2RK~cyEeSFXhDP!LgS(f5n=1hLrKKmexlSw4s!X2p7TXx-90*yb z5~W5K#Ej)eLE9{@%)B>`cIMJNKQ@Iwh)fyq@L^*XK<<4%_gfRk2B3Da!t?U8YNgGr zDSJ}$KVB4Ocb2|@OdN2UZQARefBD)qnri8l6Dx7h|7#5bbEfg8;Xl!Y{799Ip$nUj zfHVbDeW4wrHPIc?8PXHVv0x!Qf5~d|_4A1fd3mmjSy0@ZaL?SW9y-SwQRT3M)#M&C zbxsqJ@t1FHI_{)SyQXbWgkeK>WZJtceOhWD)w@x z(a`TVZ|@I7aXW$xO<(cpDHA)TbWJbufi^w~aUPP;kL_V1bYpgWWxtFT8_E~)V~Cn8 z`0RO$(ulR5t;+8Iy0;!;Y#>F2srco;nDlgjV6gZlOWli4$ky6p;|BRx^0FS5O%J|S zt6Q~ur)jVye{{9aDB?B3utFtDX8sG+n3A$}!KNsXT(x*q3wE{W_qlPFc7_ zc6O2pTbgMic-x7V0@_#AzZOxe`ld0>mCT{~KOg^?BqvX6s<3nubguhJ&Uk`)^(tL5 z(3mGaKFQrOgw&AEd4z^M1I0xv`&OGE(j6V7~8GLEdG{gQJdq{o4UlLg*$N|q|^iehpd$Q<3Q z32bz`@MxSvQMzV)ag}bFXIUGQx~8+=O8cXyUb1tV{Wq=s=rlgRgL>-GKKdfw?6$@S z@v!X%d56OQc^3aT6H@=6mwD*#NVG{9_cbCZzUbEe2io5g|3O3o5@o%{Hz58;YmjE#SX2%k!qg< z+IXn-xLW`1>ca!*f*BAG5v1TpH0q#_W&2-$HJ7`8B;m0pnu$Ivbk zelL`X?n_M6R{qKGo#N)6mck>jO#9hM|G!nnv1m5*X8i@j9OY$U;rHO3B$D`7s1-CC&h}mt=tVdKaeRjbG z=m+FN)Vgdf&TKS4XWOOp=jU=l|0F(- z!-mH(yHt)T5~D_TNCYH_h(Hr$8XJZdCi4TavnrlHlKaHNSAr$EX5wB_E;5diuOgou zY45eQJt`T!4?AqhkE$Bp)X|&uR?)yWiG*)#66k&K9&7>Iw1Ni9-=ZYWINvtE9oqW2 zK|0NIK#8X# zZJJ#_A%~6B0x~i(@gtLAj}ysd0t0l0r^)aXLK;OM-yjajcnl35i$oq)u^Jl9OzX&c zu&0@t0`LL-{Hy&4=}}U{0R~CWH1&ZSlAaCpaxroWDFhe!S%JakzO2fb@C{G;4ABAC zqmvT?MSw@+tR*;%Ks=0q-tejA`Hb72Wq+iQ$H*P8X=iuITMg?nw zkMVO0`gXh0iis0}Tuu}|ATp{?Ag@-H!cPY%_`VdOZ5@Ip_C!1}z7p^TzFp~Bci3Rb z=%T2X@T%m)T*Er5?reD1UBTmo>bpCUPRpw!@;T(_=qTRpp|O!yyrs>IfvBC3`m$>p z8X6nByW?^#d3i+1$;s*uUn0cwxXI4W&p&fNe1guvHwo(E$-C~KeKxK?v}FTyJwF4s zTZO}YuU;74$4$rN!+Y%-=w0RD`Mn%&QFQ3xDwS=F`%Jc7Ft>~FJ&2L9%}SuT`ON+O zS=BXyy_xx52^NK8A@q`Z56gW&!eS(?*L67dBQ5Q-Z|+HtH#AQ!QqRYh70fef6oF?9 z7b)w$X`b)a10I@ZE}?mvIJvWlC6nJ__ky$T6ZJFXFFoG#Sf}4kT^Ji7t~w%WGDl!a z_FPxqF}_*OW>1s#zb=qS{_Wd0b#3jijwJ=VoM1GKnQ0 zp;}N0cg_s!`$4TYW1hP)pH7A@QN6j@-BMpeHHkww0}b}}Lw=#(mz z98CC3wo%diyecg@Wt)-wM0he6ZX52!P$FsaKk5Nz^bg&hL-w2#&zJD%Mh&u8^+ zBh})hQkhmby3elpJLX#F8A+0TE=faULV(uuZ>a98)%uq5$Yeo5827;FuKjeS_bKu9 z;W)*4^Rqx4^Bgfs8%I62d3?FJdV5h5hp`fpBX>s>)QL_5al48SJcI#@_Fb-np&ap9 z4`VHLye?J`ME|ilj0oG}CayB3{xAKe&T7e8Zt{IcdU4opz>M|ep!Hp8vxNIq)1!s< zNePg^KK@I6|zFk(bw}7)6{wz#2)M0`M{COm z*e+U`U=7!TRid{tLT^QPK#^2&{C(bty&8nI#2psQXlR_^e(1x;Ku#Xz}=}uw=s~M{o^a{UN^e zG<;MI@0`>NcZ$1tb_QWWU7Jp6JaC!iUOmQ5`%qo}IPZJf(2UJ&x~JUc-@5C0g9u<* z;8BJ_+-L6Y%|HTG!Y2~sKW5Y~AYsmvQ*da13IHTEE(Zt;h|+Lv@!MyZyu-D#3i}_U zRDPcDb8~aIs)*XL2euQM9+sLw^U6LxCI-A}jpEWPZ-iCyt^QJdriq z#zYBZa0q-o6Jdevcn|@u7j56H7O+(1Zi50UO)cj~JSL5P!tdXI&^0utnklVzQsPFR z3{cK`jcNjL0%FS6lSjLUNb*BDqTP0KL1k_2*ujf{QXDV6`KG>3bstqdV3&K$hLa6( z7}aw>)w%yAAvUDHhC)Nb+Wm0F<}vO6XHFD@r{kuaW!$wUXz%b6$@fP8GHe))A9hhS z!zGs0VxOA$4cxOi0+KH_H+HoZzYd`1cK6y-)2^_QZg>J0J_<(!au-8#=3Y~Hc~r@A zTFyn=KgQ8y6{BZD;yv#SjNUCDZ&QVYS{=V(wkv(G&2Gje~<=rq->iIp`dY ztnM*CT_x{y$fxNs|JC}|4rf@1i6#D_ZH6I8!R!0V-PN{h%yxDzeEy5qyC+iumf`+I zGXDN_G-zvYrJB!dArUja!Sp>nJq=C4z=n&1BHFVtKoGr%FYJ0~vm;Y?BRNO)b6u_x z(7IJ)+B8FF_Q5JcjPwsVxn=EC*(Q3u{3P+3)9b$Lp$=dPIBBdAoK?*si(pyH~I9Y3b&cbxlnbN5^}i*Cf3* zt_1`J;sKqVo$mD}4JEMS3u1UC4zmuxOG*TQRzxtWu>h%r%?+d8|!=CVKm|h?m$j-Q`-(R_*znJ6v{3tw~UB4flKL zk};f*5iOMY(y?vHXVjdM^w}+gp?_`kcH+X^RM<-M9qt~oxD^({NVC?xt+1R%LllNK zkF_wHRf-3{@+G0j4Wdl%hPdRVR~-UggOHt__Kzo=Y;rU@@8R?Et*h|rnKz>9Y6)$n zuu2&+JCpZjIKU~fxfG||#c<@4>Tdm%Zf6b@-d5525o@!j28)(=olJJkJ0CGIF*Z?A z{YsPZ6DnLD&}#U?HeyrdgYw!B!-JO(@ZKX2-OmuP2R^~_I|7NWXsvvji;D|&m>cta zFv_j_v1aE9%(Ybtxcmjc_x4=p4)GQ{a=Jbqi?;Cnyg{E+T~7UF)+DQxN;F?f#l@5v z>ps6iyNVnXZu&}=`HZi-uV3Y7fv#Ue6>V#LK}BX0&QK^XZ)uoxH3=KTnq64WP+wmU zz#){g*!9qti=*1Q!q!(PZ%M*;cASCMUdEN8t?ljjOqh?+)X2!I_I5?!?4M!GQHu>o z06nTYlac~t$Jy7NGTz_jbCkWhGG89=UWtpQjiLbJrk=cNmgfouDn!mYT)W**3|JWt zgPV~0=M^69N2HN5Emxd=J&5);h3}M*9o;KbzmA{z{8qyn>f~tYXtOyBwVm#!#+bID zQs}=4%Ha7MNRDkDTCcATq0nmCbGjI4X|07xB z+`HmpzTdk(fP#0mJR0=Ho`R<-r@z=ekq7!pztYOtNqazX!D;GRK6Xiu%f#;Amg6DS z0F({s`RK?&XF2qmdv*2all}M&wM&3LEr>CyDIRa^PzoovO z0sKo@A=u-Y9~sdblqQB_FwitfkM#h9z*cXI_|U! z@}l_%lw@&&$yNQgH(TIE*oQ%8^kqP_=+UaItbDx;prNMLXvKf5tb7L#3?``K3Hkot zT!>?D!~~d{()&X)JOIbo?J9ZdKh(wI=G=h`T=x}oF_c74tkKjRpQI)aV(NORRGIP2 zYb!{JePEsI@|9E3nyKO*gkU%3-mN~RyK!Twb&oysyq%{Reub#cAcUKK$R%96dyW>#R=BgdndcNYv(6BdSmB} z+L`UuQS=-~T?tiL{zK zeDsS~S(=op z%Izin{Nt=$r$FJ8Z_n({r_FM4O(wO_|73`D4~Nx$OW5*?sKqFHXp{r+ahJw`TK?~x zow5$sf6{}dw9;}EIcU8rczZ%sim{UC+6|gior76{-z;JF`1{(j?_mAu|0(bt#ydry%B&~7&+TsM6gVGz#(##~8a4)3|h zC5@wx2T&OSlwLA%cXQCioJqic)oi5#Nh2fs8=)_qGsP)1`};G_ zn=7GGDJiML^YfI@GoE`d`dUK>h-Kd#*isx`6sp{mGzP{|OP>#4$__11U7ekn9?nsd zo4ldY_B+I_ZXR9m?RYl9;UrC}BK4Y%TV>UQ|JwZj#Y8RB2 zqWp_f7G`IoK^3HVNPylMvimhwQMkO)^8tY8-a+wno}ZrwxjOOqTQmhC2U~J#=$ruA zTo0_y47`I!{`rSF0Xbw-EgpV{8?y0I6P8+I-=J`WOEq?P*26ePc3Tu~5*hI~!vm$C zH(~Wx!%s`#hkO~wvNaoADk&_c&>y97rwdmAIi&ASDP>{YxPSH11e4oPF2&xYv>)xv ztAq!=M<&GB&}#)3RX#%j{)!<+1oqAJ23dTtS^$nu{mc5eCUCMO>AZ%b+l?NX%u0oR z?u;W6lf23^G*NR73v3yq)bWuAWU(0Y<$z0NQ2Ag`kT#qP?`A!HRg1A#_d6To?JtIA zdS!|WqqE(vi5chsm)ADIHt6RrubFw!A@)rd^oz-5>ei~PZ*2&1yXo`kX~X%=QF%Uh z6@w-7AB>6ORx2VO%$UEfevLlET=>&lz~bpFGDxGuZn$+Ct~Lc}UKp;On19;w>GTY) zo3SkYzHDWBXikZ|Y4oiI#u*UIojrvm2c{AHO0;%cPEPp2g>h16L@Twt!^qc`!O-== zw2P4S0I^Q`MUo`$JJ|fs(Qk$Y*;-5w(pWcrjJ_c|GpqFBS!rtHI&_HJwT$MSv&MU#kw9IBIGN%j1@Bl!bbSk{~piO%2x{`rq>b zl#e|_Wr_?bq+=)kWyi0gpWa*(g~TIcPJYzVM=;c`Q$3fjJycOL69h-e4NaXHDKbMpTp#qt4JZg+mN*_n z?RgFS-c6C0KqhAvpmheHyb?zw5$=-q22 zkF=I+ss6^lwH|Fx_Bc7pW>bDc~R|PACARX zV!MB#_Ks}VOP^OqqObU`&v|uJfDj4{^lM^LF=e%QT+1hdm#|Do?Q7Gsao6ui*M_QH z_rAnb&{Vzku{%@L%=2I5Sy1%T%{7udmdXyx3PxLUm4dF+o%Bxes? z6AjGHC&e_cRWnsx!zzvVUaPY9*4KL3Lw z8Gia`7z$kj2No0TYCD63lR%e_TQn9qySL|q575O_FdUw}UTvwew4N;uWM}6OmBl|1 zXt3MyF=eEQNFOgE1ZLekx&V0Q0HegppX2Oc4dJsWb>CW=%}vhS{8Rv#(OSRB0O5wM zR^+`>NeZ|3v($WWPCq|UBX090-)TC_eW%#$?pS+K@PpHSv#8H5I^?D6VD^w#4^cDcsAvJZy##c2YpW0)~<|p-=D5sQqP{Lc2eE@ zuDVt<+Okz8xG3;SPEO8#%j-vwJhiTDxIGu&)WcuAp~dY?SoeE?`xN1r` zrIMqI(`W;;<#~4fls;w*#!nYzIb&hFPD4H1O{a?o`n#OgL@8L!T#Ql0>gQX!GiA@W zgnx@5ZCiY%Y+7(zlm#N4icB`c%NJDsWYWKV7Qv^}ejsio;|?yc?#J3{20k?z!osPn z;X9k=4Cr~-=`L4#k}=w6^9_Fz{9A6Uap-WjZj$6(c(D2&$ZjZThAcQDE?rpo3$ zo0{~2PuH0^+Q6^{-+FetZDW}nFr2g0uaT`XqZMqV1oa?kj!dgE4A>g#tS2_KjL~evV0L+2Lx)%F{%6&OyRo6nUp~t`C!z03*wbv>WDXj4@9P7pDZnM@V8dRL)469EXP5Qo-T@L-Nu&UUh}i5DXm zKJ1^-r1!x)nWx-=sq*F25^$0I>!xMhCma?zHRr!BtN%MlQ)sY}x$x9i31Dr!EtUFv zZbH2STcKPHLj^Z6#c^!NJpP1H7wU6Ycd#obfqQWsAPkIaZ(Cm?{9A7U3;ZAZep!~lV z564__X&M;q=3v8`xNS#(iFa84&;S)s($Mk6+26j2 z+sudA$Ds7OC$G6!6-5GnX%5GXOvOmI-)8gQ`9CRMOt-2sc+(8PLoF=S?rn-;5Q7z# zP3r-H`RY}*nVC337!Hk|+`6D&GS8@U0Q={Q%JQ4@3Y9xJ^WI)^lr4F+T*Zvlk!|m5 zsqBf0=UdzJhZgUupkOz-`!6*+mwV#wIc&2T$m1$z;tCKDLI`fyjFu!+Gu`oiz_ehJ zkrNd)^{_kpy-OT}mYL-(`0@W3+xYL|C&S@KM@`SH?%46hO+XnBK3?p#u;}KgyOJ_2 zZU$EV$Vkb6qfAZWBU2HTNJOgw)%>ae;EOdI2uMsXrE8VDFXv~KJ~|{mTQPe_phTSr zUVz=x7jvSH*R}e#&os+Y{fAt2kn&(8YGi*velp9}C(L7Eh4nk{qgixd<8^z&Y*ZrL zBH1zZsPAOW6qC^`@#yBo>iT8N{Vl#Nt~ut7psjnBy!YEUAvIK2Y-B`Hp1esk)ubMKn&Ur!c;NX4ZmM>0}aPS>%!lT&Z86a}5NKhjou z#9!Vs=s%k&tyGDS>dDtsU9+>jCzO|Q;b};olkr{jabe^-xkBzXOxcaVfP4{LGglFW zv|umdGMD=o?yOc36+pQ{1OAJ zHqD_=1L!Pq>nCQoEk5xIXQSAny)p**8~)?W;+^31*EWu}nL3o_W10vQ zh*&d5c?C?gM6(yacrISt1ul~4n8JO+_bJem3fuhAeGI=$y1a|fD^$0ktqnEh6X^J) z>x%kmTVqA2FLuPAbMSFr9(~?s1?A<~nFQ!E0;uBHvsHalTzvCh0hxPXzQVc2AKdBZ z9eU5Az4nmxNe!Onub@CY#2Myc^-q13leLhl4Cvsd+eqs|w$1wGg7#LK7JRLGwYcV|*4x2RGhGM+ z=PGZYV*ohg=xcVo0-8??Ty$r?*ijoul#dyo%XOOfPX?M3HYzFbw>y5BrbE=c;b>^e zvfaJ z4?>JnXQ4J0HqztZmD_Do99|bQ$aM%))*8WC5W`h5f@_)wM5n!3GR#dlEb6i!Ja?x2zzCXqmH=mYF3CHPln*D z#arNNSu%y%I=_wc=Bx0je?@QRxAZ14-pl_igYV!-?%AtdfCUqOfPQZK@)9q+(-tmw z87J7^vHo9^SN;p>%m0b)@=u9Zv{Mvp>|`%Sov!u6%n5nlZ8%bGo&*} zS8Ze|bo0JLN2JFRNkiG^$vJRNOjUz0r)S-0CvPL1Q^zx$nRwHca`)Tr9sRr>-fQ%~ zcOZTrbaCWYdm@ywWx4?v0%aj#qBT1lduxNgwe*)`i?m*mS z{Sxeu7nk*05y1_C*^&+<)g-AXq#TI{kh5_b-1%dqnVH6psiwe3dxj*W>qYKAC(6#M zyIHOinpkYa16ZsbiTrjJUs+l4+Y`;Ec>xBG-LdufSLx3~rtgKQ87zpRq<#%AQ_CHc z$fEP%=XG^3w-5H-ck2Dv1;(R|e9;7|fZzS7sZYd+U)O!H^DGks5{_NQK$cYW3kt4} zl$YH~Widoj2NF;0r7ej8D552Y_b2R(3S}SAty{K0QdjVjr#OF30*3YTy6D5rZecel z?~|Rd;wADH+B0piX@$=h95!W2r0MRb{UTrVlBQrK1%oNol`u0n43lvB=h!eyjH(V3 z>(-c9EwSvD=Sv9n(@#|pBQoOc4=)CUAmxX6g#4`w=Wd2$qvic{2Q%ov-DR=Z$jB8T$0B>!t4c}0Sa1Neb6v3!QZ)pM+xr z*?K=O%$N4!-LjEKIw(&c{d)8Zgmybiwqk|y5An6RNMs|P#=3Sy)#CNvCHI;U4ny~` z-ox!R=C?YFt9@jhug{uc8l+pmlM4zFTzbx%RnX|kKe=&e3#0>EIo%LHl(8iE7XHNQ zm>S(jRrT1XxqWDt2JIUqbk-7 zuv&@wChyCws%c&XJFlocC(P*?9P~s`GdoaI1`%S$d}lixTO8~fm992mGGT~lM=}c{ zIMvc#T~1ShG@c2q6<6^ZK`RP(RJDG;OEI|4MT8wzAl~x}WlpDs)d5YFns+LCIO3SS z6%#LYJ%$sK!hTEt&#Nffa3|stREHeceYlfj9N4&`T_D#Xeeuh4Yz^eD|AScL*!E6M)qp{H7diM%nkGatY0!?+gfKA6nM{ zEmtfS2)Yi|Sv3Iw>brR6%PP5tgpHjm4HNq2vpmGJ2wq+#*q36hg5hPjpKDykUkMc3 z9+-Gx%enc$e3w)FtEXvH(=C8nD#Qfu3UrWo*BqYHKUo0~lpBXy-3CWfzf zH}nPv7L!A2>HYny;+iN-67fKHklDlvjnRat^_+J zFCU(pE>;^lhYPgWa+wee%FQZGl5snIGSigdJN`cMJSO;Q2Q&L&E5UR|_?74Cr=Kc+hxZRhu5E}WgR>Me8Ir3*mY1Q({V`yqL1(L{ zg@#W+;OBN}=>tto;m4e{NlJM&&z1F^uKiE*dFuf@-J#5( zM<<^*IrBGK?4`dpv2?l?Ej@jQRXJGHucjAVqvZ*#`ZAV<0(xu{esiuP8~)^YvJsX( z?Uupq>!aP(HlWsX4I`M<4++5e$$(bKA^0(jw&(yUJ5jZ(4Wj>$(O| zSS=|ozD+e;-s%%9oASu`ygq5uJPRGaR1JNbwvziA=~c)g&W1>|zLLCybN@S~lomBm zxAbBBZd3t*zSzIEifNow)ZDfCA%AnlVb2_z-`M}nV8w@gEx!^8aaLsg;LH8cFX?UTrXt(0;%%PuuGcfV&|M0u{LhY@0dmpObP0ChjQ~A#0V4=jm#ygA9 ze#inY|Mo6P0&dPNMb}{G2R+vuYyRDZ=lRBgZ@2fgjHHhvLA#i@R@7P2Tyo{E?G1Yu zC#EMymoQirU;EwF8&*^HsODdZrZBIei)}8}HvQCe>RP+*^s>kQ$+js)T|*9nN+sUf zpd%`42cy9GI0;@+A>usOaN`4)wyK5(sgT?LTiT|`msuDH&bw&PS^zzIS8-5~DB<;M zHTF)?fpO3i>5EOqfZ5x@7EqFg7llMHY;gntU$*`9n#FTc#9}!+)&ns|%)SvW3`BR7sdjlt;kKLYvr#u%(;e*ZXTguU5iD3_3Xcp zoScnqM5NiMvmmW`VUJH1JUSIoDsPV-qw*m9{bi34x^5cJ-q?v18=JYr-~%!zEFJHf zx-6#3f`?X7wM`og7pfx}x3zx=KcO}`-ViTT@vHnJTc}d7`f-*$i3Hu|$HJlBhoxKh0I;CEepEu5G4&a7fij&KVn>o<1!Noj2p4WS(gAFZmbfu z`&l*pkwG!-@R8W3 zViMN{O3*r|eq`T2+jasJ9I36Eh0!5(CIW-r)i)V6eB>8dLNqh>nuQ<-hohn)X(r%H z${gQzJp1YMOwVIE(7Wl0r>p){IEY#tnRU`^0+%1 zTO>m9NL=|hVjQ}c4zn(3oV(&H0~j}2b(4tE9X91>5L_^YXLK4CorGd0c^g4PXtf@= z4Gy&l#B(h=Ls$3%0(SMwFo)3E`5KcP{^KKX)lN*RO{EJVX=GrMAa!QsOK8kMq8$Fm z^g(KStJOd^Yl4dxC*3gY-G#}? zXQ3T83goDRfQ+WL%%%Sc5?lRQC;UJD=>!w1t3$1AY9*m=8lk!(5LpdhUk z_EzX0Bo2**e43arxCIHm1q@A3N1mMp3?6^^!Z|iRzUjmGa0)$-QEOH8X>MJlz6QES zT*tXLu{IZMuMKu10x)^8Zt^N{l)Ur`EN3dXCDXuP;ae zKcx^q=SAnOEfEf6m@yp!o!y{kH0g2C`-}eRwMtWtPhwi{K>Vassk@&QnPV>%L&g(sM92Hl_^p3K|Ga_JD#&V6zr@5At zhAaFdEz0-j(UBKOA^?DfhK8ZJISSyC=3Pxv#99MtRikg9pHx|Y4P-BL_w>9y`wV)v zU=n5NsuaF~ngr5LlMtX4EV^}+)R=%rLmw0!h>&0046Sa*{1`xep<4i}23j|UbL3FT zk2$@(yud~p8-*>G2|ue*mwZjR3ud_9&NZU4N=hg{ME)cIwzjqaVDyV7!B@7UEyBy3 zOqXHv+6>%yX8H<$DwyxEL?ZiQTcC*L)cE)iFoWK)>2)Ui;%H;IySrNy>*`VfLo5^<9&Cw%%&A!6N#AYL$oLlnfNBJL_5@2Al(GLyo&uR$PeU2CP1HUe9o4>d$o+RKbkB%?F z!HIqcZh6SV3w^)N97FTj%%7ozGp3=fqiBMgr?pl?HLalSiJX(E;k{JSK-uP}#8;G~ z$*jg`NI)armW#z{;f6i3$v-xD+`;Zc4`Kf3CIe9*{Sw&sIXO8>qlFt^zdo~?c1G1M zq@_6z5Fh52HQ{`(PiCR<_t|<8YV)!yzvWjR3@-T9(LKU5 zMUEfij)~GYyzVSnG?DsC1(l@>`&yt zj$HasJ5rv}(Kf-iR(KE9FLs%8@O6@|RVWX-@qMgNibN(p4qcVWsJ;?(ZXO#5ag zBMCrsgp@S)g>DOo;z?4rngZL~M?IGs;P?Iy!k`RULPe6xPMMx3XIp&YWoSqrI^+Yn zdd&2#e}c4e?h3fhK|-Gau-9>IOzHY})*`iF*LiMG1>hmMZp4I*e_aq40{of-1O@oH zuO@*5$q#-RyKioa6XldS*yVL8^S-+@j;er4%l^k6gE`i;ULAgOWJc6UcGVmgau{O* z9yp%is58Sm0#kEv;@uWGS#ym(Z^XzVSN0SA23mF_f=S-?KZWy)Ua6Moj<{xKpGT=A$uaK0_TIO%qbe8MMwgtY2iwxm6plsdk0-+VJP%s(GKxLv!*m~~HW?ov1Ob@VamPf$& z(jrHk1!w_T8Ro(e_;{mVweDql> zC{|zW0wz2^>uJP^r(a*}x68cpy{*frOnFHZWCehqD?k6+LE1n0lLupvp9;##5!N7d zKS&x)B|q{C%vrtIK+pf-$y|TM$(|i&s^cHu-PcD56bpE0XEQz{1g~&_ks;Y5kU$PB zCZDmasagKU{|<(knZk!4&qu_oPEZEMjSDym7@i&q=M6?Z=&OndS9e3M%^aLL1>L;w zNE;9kE%@r-J;VmjtimcU35*_mmm)v47qD}KB^?i{YtrK8XxZ77n$F*m!U=#ycgZBy z&sl*F0_h>3$^~BlSjKs%;0aX)GVJhV&isIOVH_rvi`gFD?ws+3sXR}$0W;vbr*Gx1 z_SlG6uI)Gudbj>&myAQ_7DHjI2vg2Ox-Vz6=E)qEV7l~U-CBRGD1_`bGcnY{_b#0Y zRv2EXa_#2#AOkh0MZ-{v0pdl0=8_3Y=>7{11KesHd*B^DnT5<9==)e0LB#3>^RvEK z#cr-;Kez3~IKy*su(S|FP|cBATm**OChv?-@7ixmjX7P)QKOx@Y!Yj;{sD?%Vk6TY z!v7AMn2!XRV{MyW0SW2%TJV9gqB9NvKIJ^|jpWL&utpN5_odHkEz|u@YxF#J!YR69 zf6I1G7R2v2P;6h3i`{|3Dv%dF1C#G}Fgj=)MYn70<5;;Sm09G61@*v%=x*Fr-oO&; z4~!*+6i9%0wWY!zjKdGbFP|F4i-;Wk(`o*=a@H zs2{Z#YP){^AswOZ)0|+l9`+08rl8t9oZP`6Cr>02RW^^_Yl5#vBw{RM3Fbk7j|>xO z45CcZGTN3uchRjJ2)w)GKwWK*V^FwG8FXBM+AK${xw^c^v+1Z}VR30D_};ruS6E1K z`+{n-9J*qZ_f+FqxOUQ8Tsx$PPh&F`UtkYydxJ96e3~JDyN#(06u3SKDgPT;_-JJdP%f-c)DjSsI zgs;D=hUTa(E3N*kH>l<38~fJX*fI_wvkkqTLEA-c7TYxv`#o3`vFW?9^w#(W8c9pU zemy8gc22p(a(n?eKru&6abQ&DEwFJ(>%@G&b&2L|dbK-NTcN+|cMoWFf^4lJlM29~ z=mv<=HKdi_(+T$QIQX!2p_T6$!-9?~ZO}{VqF=^TfDG89GcMuJVqE*`N4hBWYw#EP zFF_~*w;3CJ9ePLL_T>!a0O=xNz*dVvES!m!d(SWd@Zw=~nQxU}39+7u5M{!e0WEzr zl8@>BJ$jm-DIV?fA)b}09BG%relA#7^pU)Exni|4!x!ZF*`1UfH zH5J_v^CMjA+F;fy6@c^s5GzHiDE)Jt1jLZqtJ0J zcZ_X|aFw+M=x`8AYt3#z<&fVm_J=tl`@SUNFiK?ehOtKW+ME-d=df3mup%4!f<|?gSJM^FoHa3gSVx zJb83jxwRWY?^*Seo>uu7mm|>Hy2x&1VsdL=__4oqxGk`cD|4&(hDBH_<84@TXhqV~*7id4ey=AlKVw-0nW= zXB7?bGFhPt6xeWg0r}A?bK6F$OP4GQWm>X+av`>s{hmv5hp&T!LtpHBflDlJIk9*3 z5S@sQANJzn19$b2#e9*mqy|Y`_WyCC_J7KCu}fcdxHJjPqr|KZZTy3-qDOVcV372e zjkFa=-6VSJuq%KvOs~0_M>bKE- z=&?`sDotlp0W8`QY|IR%8TCa7avf}`o8|ZI2=rMISf%qu=#)wL+k87bpl?m_x3hNv zc=80XP_$iRkAPN_aO%keCXFjh8OyM_8|zDzLAdtPjEmN?AOIZf<1?pJEXz~ZF^)x) zuZ_w%ZC`Br=_~v-rd&{zBykr;;4*%z_s@w-l^_EHMF4&oa7o`t-9W<|k-P%;LIa-R zPUuf_n}A0N(78AscaWPXgPXp)aBWfm{We@I6J&|r)`=S2n+w!AiP2B0tLyPx_|d7! zeg2bYXTC|TmYwzynu%(X^4EgjyQC^c03fxy{J#Ko29waI9=f*^_?oV4Zf+V?95Fsl z6Qic#(j2=)_$Kc|mU%Wx&9**DAK#O~MbU8OYBh;0{D!7}qv_|@1e+ms_~W8ZuqeH5 z4Jb_eF#$}R0(**{E;L8KSr{LoQL}i_Z~M7$8C~#*uoN$FgX^#dqp7Ls#)f3fGP@|S zc&Zy!k_-a1Ea;RSBL3GP`LfA9nRNmE^l9ZKNBfVx5{I-rw^G;VTXl?sN^=WH9TZCT z@+)}83##)L3`dgW&aE`nLdrkl!ql7}AaVQQnu$<1#qPPO6z~D`#=x1|DdT;VFMXnV z8^~G?U>eaI-Cr_41OO?iz4KJ#DrTaedf1pxl@@_Hq88v6+tya=dPA|{{p|TGvTn_$ zQ9jDW<@L#6WuN9;mCg%C%Vu0MY>5&j*y^)LgVvwxxchg+#oEeK6J0+h`Q1dn??91q zJ^6r$NHXYBf<)=;$|-4GcYlJP240`PaS{MRHQD3}1Sz$2XjyR$^1aO3_rUMJ<-4YjZST4(H?Ty`2CuIJeUWdF-<-!9XH%>Z+wUeY>Me`;s9tE`Iop zXy8LUfPq2H{dD{)AYKq#{ybGoMnE{>P!P<-g0+s|Z@ky0EoIMmg5AT8zuLNB{rh~l(^7`+U%w9gAIq+{jLwR2|8=pE5zCrCh$Q1rUfIeczfEvgvD(L|gd-Mj!J>^!13ulHK2vUD!j)(=p;YlZsd@IcxvIri!qmj?PwLf8Rfj+(Z5{+>Z1GV@I@JtoEG$p9| z!m~SE{*U%nT|21His-)iA(9iF1`c#K{{8#+0eB9D+Kps%>BVj@0LM0Q0?1Z&Hs9l&xPD{Q?i05SOw4tHDlDSj(Bgw)Qnbshj51T8O{&sa^BaC>)-$FjPbAR1wNs0{Txk(+-(DHyeuM7Q&IKW+ z#xub%)gK%5B$k9G76R9Zh=}0oRA`OHhMD2v;gAseyw1O!HA`y7`qKFD|GF`Y95@U!DuI1vEp6?D5IT4LOvASzw`R@E7k|^ zN@}KEzs~==-Wixt)r;%|dBs-zkhJ`D)yn?S;Rz|_M!-2grRTz`vnsUrG4MMpby*wn zy8@3G_;~@sQ=z+$f!p9>$Ah~sE6Ypn-Cpo_yZiCl zx^=&KLON%~Gklj^@yPQ3!`og*Ck9m>4S!!Fmas@rA>v~2%i4Q)XPi0zwdz3h=_!jl zr@eprzwDOi0lD&@_BCHR9@X}&z1S}Oa_)KgWQDH8fA*~G64jHcL0M_vE1+qu7mr@= z0Gb6l+hqqNixSwe2z2=!u7KW@BfwKX@A5xK0o1)l-1T7Q>IQm zn3c=KFyn0Niq)%~{rt?pmHN)PkM!oJA5v2C@<{A$0FFd=0&8SO(C8|tiU!uy0pa27 z48W>;*1F)0o%4XLsgKG}nAV8R2ad%i1YP{$_}yPisvpRC5!RBVS^xOqEywTqHZiNS zfs>j?r%$NwIS3q-F7B>A^%YpfsfqR;?>Q&-eJ;uDa|KwJSawmq1osz8y2e{ zPTzU;7R&0bo|lzl9-GZS4%`c)x@1EibC`P>aHwZP)NGKN;F?XFifZH*vwz*Gz06;F zO1xq1tVGbz5bvq_?Pok-{3vv#tLOSh;@f|M(kG|p8>Tfu+!MXtAA*ZKV)Btn1TOmW@(}zhqX=vS lySC#xxd=-#{qdhsI;iMJ(#0=gz=OybJYD@<);T3K0RSDSxpM#j literal 19145 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 Date: Mon, 25 Jan 2016 21:54:37 -0500 Subject: [PATCH 02/17] moist nugget now has its own ammo --- .../projectiles/ammunition/ammo_casings.dm | 6 +++ .../projectiles/guns/projectile/saw.dm | 44 +++++++++---------- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index f50d595f8fc..3631f1cc5ce 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -3,6 +3,12 @@ caliber = "357" projectile_type = /obj/item/projectile/bullet +/obj/item/ammo_casing/a762 + desc = "A 7.62 bullet casing." + icon_state = "762-casing" + caliber = "a762" + projectile_type = /obj/item/projectile/bullet + /obj/item/ammo_casing/a50 desc = "A .50AE bullet casing." caliber = ".50" diff --git a/code/modules/projectiles/guns/projectile/saw.dm b/code/modules/projectiles/guns/projectile/saw.dm index 0677e7be670..f62c43adb9c 100644 --- a/code/modules/projectiles/guns/projectile/saw.dm +++ b/code/modules/projectiles/guns/projectile/saw.dm @@ -1,6 +1,6 @@ /obj/item/weapon/gun/projectile/automatic/l6_saw name = "\improper L6 SAW" - desc = "A heavily modified 7.62 light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the receiver below the designation." + desc = "A heavily modified 556x45mm light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the receiver below the designation." icon_state = "l6closed100" item_state = "l6closedmag" w_class = 5 @@ -100,35 +100,35 @@ //magazines// -/obj/item/ammo_box/magazine/m762 +/obj/item/ammo_box/magazine/mm556x45 name = "box magazine (7.62mm)" icon_state = "a762-50" origin_tech = "combat=2" - ammo_type = /obj/item/ammo_casing/a762 - caliber = "a762" + ammo_type = /obj/item/ammo_casing/mm556x45 + caliber = "mm55645" max_ammo = 50 -/obj/item/ammo_box/magazine/m762/bleeding +/obj/item/ammo_box/magazine/mm556x45/bleeding name = "box magazine (Bleeding 7.62mm)" origin_tech = "combat=3" ammo_type = /obj/item/ammo_casing/a762/bleeding -/obj/item/ammo_box/magazine/m762/hollow +/obj/item/ammo_box/magazine/mm556x45/hollow name = "box magazine (Hollow-Point 7.62mm)" origin_tech = "combat=3" - ammo_type = /obj/item/ammo_casing/a762/hollow + ammo_type = /obj/item/ammo_casing/mm556x45/hollow -/obj/item/ammo_box/magazine/m762/ap +/obj/item/ammo_box/magazine/mm556x45/ap name = "box magazine (Armor Penetrating 7.62mm)" origin_tech = "combat=4" - ammo_type = /obj/item/ammo_casing/a762/ap + ammo_type = /obj/item/ammo_casing/mm556x45/ap -/obj/item/ammo_box/magazine/m762/incen +/obj/item/ammo_box/magazine/mm556x45/incen name = "box magazine (Incendiary 7.62mm)" origin_tech = "combat=4" - ammo_type = /obj/item/ammo_casing/a762/incen + ammo_type = /obj/item/ammo_casing/mm556x45/incen -/obj/item/ammo_box/magazine/m762/update_icon() +/obj/item/ammo_box/magazine/mm556x45/update_icon() ..() icon_state = "a762-[round(ammo_count(),10)]" @@ -136,28 +136,28 @@ //casings// -/obj/item/ammo_casing/a762 - desc = "A 7.62mm bullet casing." +/obj/item/ammo_casing/mm556x45 + desc = "A 556x45mm bullet casing." icon_state = "762-casing" caliber = "a762" projectile_type = /obj/item/projectile/bullet/saw -/obj/item/ammo_casing/a762/bleeding - desc = "A 7.62mm bullet casing with specialized inner-casing, that when it makes contact with a target, release tiny shrapnel to induce internal bleeding." +/obj/item/ammo_casing/mm556x45/bleeding + desc = "A 556x45mm bullet casing with specialized inner-casing, that when it makes contact with a target, release tiny shrapnel to induce internal bleeding." icon_state = "762-casing" caliber = "a762" projectile_type = /obj/item/projectile/bullet/saw/bleeding -/obj/item/ammo_casing/a762/hollow - desc = "A 7.62mm bullet casing designed to cause more damage to unarmored targets." +/obj/item/ammo_casing/mm556x45/hollow + desc = "A 556x45mm bullet casing designed to cause more damage to unarmored targets." projectile_type = /obj/item/projectile/bullet/saw/hollow -/obj/item/ammo_casing/a762/ap - desc = "A 7.62mm bullet casing designed with a hardened-tipped core to help penetrate armored targets." +/obj/item/ammo_casing/mm556x45/ap + desc = "A 556x45mm bullet casing designed with a hardened-tipped core to help penetrate armored targets." projectile_type = /obj/item/projectile/bullet/saw/ap -/obj/item/ammo_casing/a762/incen - desc = "A 7.62mm bullet casing designed with a chemical-filled capsule on the tip that when bursted, reacts with the atmosphere to produce a fireball, engulfing the target in flames. " +/obj/item/ammo_casing/mm556x45/incen + desc = "A 556x45mm bullet casing designed with a chemical-filled capsule on the tip that when bursted, reacts with the atmosphere to produce a fireball, engulfing the target in flames. " projectile_type = /obj/item/projectile/bullet/saw/incen From e8186080fb35dba93c66f7fa83fb204cdc43361b Mon Sep 17 00:00:00 2001 From: MMMiracles Date: Tue, 26 Jan 2016 09:49:13 -0500 Subject: [PATCH 03/17] more name changing to fit --- .../projectiles/guns/projectile/saw.dm | 26 ++++++++------ code/modules/uplink/uplink_item.dm | 34 +++++++++---------- 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/code/modules/projectiles/guns/projectile/saw.dm b/code/modules/projectiles/guns/projectile/saw.dm index f62c43adb9c..2defca3028a 100644 --- a/code/modules/projectiles/guns/projectile/saw.dm +++ b/code/modules/projectiles/guns/projectile/saw.dm @@ -1,12 +1,12 @@ /obj/item/weapon/gun/projectile/automatic/l6_saw name = "\improper L6 SAW" - desc = "A heavily modified 556x45mm light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the receiver below the designation." + desc = "A heavily modified 5.56x45mm light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the receiver below the designation." icon_state = "l6closed100" item_state = "l6closedmag" w_class = 5 slot_flags = 0 origin_tech = "combat=5;materials=1;syndicate=2" - mag_type = /obj/item/ammo_box/magazine/m762 + mag_type = /obj/item/ammo_box/magazine/mm556x45 heavy_weapon = 1 fire_sound = 'sound/weapons/Gunshot_smg.ogg' var/cover_open = 0 @@ -89,6 +89,13 @@ damage = 7 armour_penetration = 0 +obj/item/projectile/bullet/saw/incen/Move() + ..() + var/turf/location = get_turf(src) + if(location) + PoolOrNew(/obj/effect/hotspot, location) + location.hotspot_expose(700, 50, 1) + /obj/item/projectile/bullet/saw/incen/on_hit(atom/target, blocked = 0) . = ..() if(iscarbon(target)) @@ -101,7 +108,7 @@ /obj/item/ammo_box/magazine/mm556x45 - name = "box magazine (7.62mm)" + name = "box magazine (5.56x45mm)" icon_state = "a762-50" origin_tech = "combat=2" ammo_type = /obj/item/ammo_casing/mm556x45 @@ -109,22 +116,22 @@ max_ammo = 50 /obj/item/ammo_box/magazine/mm556x45/bleeding - name = "box magazine (Bleeding 7.62mm)" + name = "box magazine (Bleeding 5.56x45mm)" origin_tech = "combat=3" - ammo_type = /obj/item/ammo_casing/a762/bleeding + ammo_type = /obj/item/ammo_casing/mm556x45/bleeding /obj/item/ammo_box/magazine/mm556x45/hollow - name = "box magazine (Hollow-Point 7.62mm)" + name = "box magazine (Hollow-Point 5.56x45mm)" origin_tech = "combat=3" ammo_type = /obj/item/ammo_casing/mm556x45/hollow /obj/item/ammo_box/magazine/mm556x45/ap - name = "box magazine (Armor Penetrating 7.62mm)" + name = "box magazine (Armor Penetrating 5.56x45mm)" origin_tech = "combat=4" ammo_type = /obj/item/ammo_casing/mm556x45/ap /obj/item/ammo_box/magazine/mm556x45/incen - name = "box magazine (Incendiary 7.62mm)" + name = "box magazine (Incendiary 5.56x45mm)" origin_tech = "combat=4" ammo_type = /obj/item/ammo_casing/mm556x45/incen @@ -139,13 +146,12 @@ /obj/item/ammo_casing/mm556x45 desc = "A 556x45mm bullet casing." icon_state = "762-casing" - caliber = "a762" + caliber = "mm55645" projectile_type = /obj/item/projectile/bullet/saw /obj/item/ammo_casing/mm556x45/bleeding desc = "A 556x45mm bullet casing with specialized inner-casing, that when it makes contact with a target, release tiny shrapnel to induce internal bleeding." icon_state = "762-casing" - caliber = "a762" projectile_type = /obj/item/projectile/bullet/saw/bleeding /obj/item/ammo_casing/mm556x45/hollow diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index 89880dce4ee..58bbbc033f3 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -188,9 +188,9 @@ var/list/uplink_items = list() // Global list so we only initialize this once. /datum/uplink_item/dangerous/machinegun name = "L6 Squad Automatic Weapon" desc = "A fully-loaded Aussec Armoury belt-fed machine gun. \ - This deadly weapon has a massive 50-round magazine of devastating 7.62x51mm ammunition." + This deadly weapon has a massive 50-round magazine of devastating 5.56x45mm ammunition." item = /obj/item/weapon/gun/projectile/automatic/l6_saw - cost = 23 + cost = 18 surplus = 0 include_modes = list(/datum/game_mode/nuclear) @@ -445,34 +445,34 @@ var/list/uplink_items = list() // Global list so we only initialize this once. include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/ammo/machinegun/basic - name = "7.62x51mm Box Magazine" - desc = "A 50-round magazine of 7.62x51mm ammunition for use with the L6 SAW. \ + name = "5.56x45mm Box Magazine" + desc = "A 50-round magazine of 5.56x45mm ammunition for use with the L6 SAW. \ By the time you need to use this, you'll already be on a pile of corpses." - item = /obj/item/ammo_box/magazine/m762 + item = /obj/item/ammo_box/magazine/mm556x45 /datum/uplink_item/ammo/machinegun/bleeding - name = "7.62x51mm (Bleeding) Box Magazine" - desc = "A 50-round magazine of 7.62x51mm ammunition for use in the L6 SAW; equipped with special properties \ + name = "5.56x45mm (Bleeding) Box Magazine" + desc = "A 50-round magazine of 5.56x45mm ammunition for use in the L6 SAW; equipped with special properties \ to induce internal bleeding on targets." - item = /obj/item/ammo_box/magazine/m762/bleeding + item = /obj/item/ammo_box/magazine/mm556x45/bleeding /datum/uplink_item/ammo/machinegun/hollow - name = "7.62x51mm (Hollow-Point) Box Magazine" - desc = "A 50-round magazine of 7.62x51mm ammunition for use in the L6 SAW; equipped with hollow-point tips to help \ + name = "5.56x45mm (Hollow-Point) Box Magazine" + desc = "A 50-round magazine of 5.56x45mm ammunition for use in the L6 SAW; equipped with hollow-point tips to help \ with the unarmored masses of crew." - item = /obj/item/ammo_box/magazine/m762/hollow + item = /obj/item/ammo_box/magazine/mm556x45/hollow /datum/uplink_item/ammo/machinegun/ap - name = "7.62x51mm (Armor Penetrating) Box Magazine" - desc = "A 50-round magazine of 7.62x51mm ammunition for use in the L6 SAW; equipped with special properties \ + name = "5.56x45mm (Armor Penetrating) Box Magazine" + desc = "A 50-round magazine of 5.56x45mm ammunition for use in the L6 SAW; equipped with special properties \ to puncture even the most durable armor." - item = /obj/item/ammo_box/magazine/m762/ap + item = /obj/item/ammo_box/magazine/mm556x45/ap /datum/uplink_item/ammo/machinegun/incen - name = "7.62x51mm (Incendiary) Box Magazine" - desc = "A 50-round magazine of 7.62x51mm ammunition for use in the L6 SAW; tipped with a special flammable \ + name = "5.56x45mm (Incendiary) Box Magazine" + desc = "A 50-round magazine of 5.56x45mm ammunition for use in the L6 SAW; tipped with a special flammable \ mixture that'll ignite anyone struck by the bullet. Some men just want to watch the world burn." - item = /obj/item/ammo_box/magazine/m762/incen + item = /obj/item/ammo_box/magazine/mm556x45/incen /datum/uplink_item/ammo/sniper cost = 4 From 514b860fabb4f5c347a66b5bf3f72f52dcd84540 Mon Sep 17 00:00:00 2001 From: oranges Date: Mon, 11 Jan 2016 14:35:41 +1300 Subject: [PATCH 04/17] Makes AI turrets better use the syndicate faction Sets the faction to be syndicate, drones will now be targeted --- .../AsteroidStation/AsteroidStation.dmm | 12 +-- _maps/map_files/BirdStation/BirdStation.dmm | 12 +-- .../map_files/DreamStation/dreamstation04.dmm | 24 ++--- .../EfficiencyStation/EfficiencyStation.dmm | 14 +-- .../MetaStation/MetaStation.v41I.dmm | 22 ++--- _maps/map_files/TgStation/tgstation.2.1.3.dmm | 20 ++-- .../gamemodes/malfunction/Malf_Modules.dm | 10 +- code/game/machinery/portable_turret.dm | 99 ++++++++++--------- 8 files changed, 107 insertions(+), 106 deletions(-) diff --git a/_maps/map_files/AsteroidStation/AsteroidStation.dmm b/_maps/map_files/AsteroidStation/AsteroidStation.dmm index 847208e2ccf..635debf3985 100644 --- a/_maps/map_files/AsteroidStation/AsteroidStation.dmm +++ b/_maps/map_files/AsteroidStation/AsteroidStation.dmm @@ -240,12 +240,12 @@ "aeF" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "aeG" = (/obj/structure/lattice,/turf/space,/area/space/nearstation) "aeH" = (/turf/space,/area/space/nearstation) -"aeI" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aeI" = (/obj/machinery/porta_turret/ai{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aeJ" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aeK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aeL" = (/obj/machinery/ai_slipper{icon_state = "motion0"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aeM" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"aeN" = (/obj/machinery/porta_turret{ai = 1; dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aeN" = (/obj/machinery/porta_turret/ai{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "aeO" = (/obj/structure/cable/orange{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aeP" = (/obj/machinery/airalarm{dir = 4; pixel_x = -22},/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/checkpoint) "aeQ" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/checkpoint) @@ -596,11 +596,11 @@ "alx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "aly" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes{charge = 1e+006},/turf/simulated/floor/plasteel{icon_state = "dark"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "alz" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) -"alA" = (/obj/machinery/light_switch{dir = 1; pixel_y = 22},/obj/machinery/porta_turret{ai = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"alA" = (/obj/machinery/light_switch{dir = 1; pixel_y = 22},/obj/machinery/porta_turret/ai,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "alB" = (/obj/machinery/flasher{id = "AI"; pixel_x = 6; pixel_y = 32},/obj/machinery/computer/upload/ai,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "alC" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "alD" = (/obj/machinery/airalarm{pixel_y = 23},/obj/machinery/computer/upload/borg,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) -"alE" = (/obj/structure/sign/kiddieplaque{pixel_x = 32},/obj/machinery/porta_turret{ai = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"alE" = (/obj/structure/sign/kiddieplaque{pixel_x = 32},/obj/machinery/porta_turret/ai,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "alF" = (/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/auxsolarstarboard) "alG" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "alH" = (/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) @@ -846,9 +846,9 @@ "aqn" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating{icon_state = "warnplatecorner"; dir = 1},/area/tcommsat/computer) "aqo" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/tcommsat/computer) "aqp" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload_foyer) -"aqq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/porta_turret{ai = 1; dir = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"aqq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/porta_turret/ai{dir = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "aqr" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) -"aqs" = (/obj/machinery/porta_turret{ai = 1; dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"aqs" = (/obj/machinery/porta_turret/ai{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "aqt" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/quartermaster/miningdock) "aqu" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "aqv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) diff --git a/_maps/map_files/BirdStation/BirdStation.dmm b/_maps/map_files/BirdStation/BirdStation.dmm index ae79c39b250..05482243770 100644 --- a/_maps/map_files/BirdStation/BirdStation.dmm +++ b/_maps/map_files/BirdStation/BirdStation.dmm @@ -207,12 +207,12 @@ "adY" = (/obj/structure/cable/cyan{icon_state = "1-2"},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel,/area/engine/engineering) "adZ" = (/obj/machinery/atmospherics/pipe/heat_exchanging/simple{dir = 9},/obj/structure/lattice/catwalk,/turf/space,/area/space) "aea" = (/obj/machinery/atmospherics/pipe/heat_exchanging/simple{dir = 9},/obj/structure/lattice,/turf/space,/area/space) -"aeb" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/plasteel/black,/area/turret_protected/ai{name = "\improper AI Core"}) +"aeb" = (/obj/machinery/porta_turret/ai{dir = 4},/turf/simulated/floor/plasteel/black,/area/turret_protected/ai{name = "\improper AI Core"}) "aec" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai{name = "\improper AI Core"}) "aed" = (/obj/machinery/camera/autoname,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel/black,/area/turret_protected/ai{name = "\improper AI Core"}) "aee" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/cyan/visible{icon_state = "intact"; dir = 4},/turf/simulated/floor/plasteel,/area/engine/engineering) "aef" = (/obj/machinery/light{dir = 1},/obj/machinery/camera/autoname{icon_state = "camera"; dir = 6},/turf/simulated/floor/plasteel/black,/area/turret_protected/ai{name = "\improper AI Core"}) -"aeg" = (/obj/machinery/porta_turret{ai = 1; dir = 8},/turf/simulated/floor/plasteel/black,/area/turret_protected/ai{name = "\improper AI Core"}) +"aeg" = (/obj/machinery/porta_turret/ai{dir = 8},/turf/simulated/floor/plasteel/black,/area/turret_protected/ai{name = "\improper AI Core"}) "aeh" = (/turf/simulated/floor/engine{name = "high pressure o2 floor"; nitrogen = 0; oxygen = 500000},/area/engine/engineering) "aei" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine{name = "high pressure o2 floor"; nitrogen = 0; oxygen = 500000},/area/engine/engineering) "aej" = (/obj/machinery/atmospherics/components/binary/pump/on{icon_state = "pump_map"; dir = 1},/turf/simulated/floor/plasteel,/area/engine/engineering) @@ -334,10 +334,10 @@ "agv" = (/obj/machinery/telecomms/processor/preset_one/birdstation,/turf/simulated/floor/bluegrid,/area/turret_protected/tcomeast{name = "\improper Telecommunications Chamber"}) "agw" = (/obj/machinery/message_server,/turf/simulated/floor/bluegrid,/area/turret_protected/tcomeast{name = "\improper Telecommunications Chamber"}) "agx" = (/obj/machinery/telecomms/receiver/preset_left/birdstation,/turf/simulated/floor/bluegrid,/area/turret_protected/tcomeast{name = "\improper Telecommunications Chamber"}) -"agy" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/plasteel/black,/area/turret_protected/aisat_interior{name = "\improper AI Core Lobby"}) +"agy" = (/obj/machinery/porta_turret/ai{dir = 4},/turf/simulated/floor/plasteel/black,/area/turret_protected/aisat_interior{name = "\improper AI Core Lobby"}) "agz" = (/obj/effect/landmark/start{name = "Cyborg"},/turf/simulated/floor/plasteel/black,/area/turret_protected/aisat_interior{name = "\improper AI Core Lobby"}) "agA" = (/obj/structure/cable/cyan{icon_state = "1-2"},/turf/simulated/floor/plasteel/black,/area/turret_protected/aisat_interior{name = "\improper AI Core Lobby"}) -"agB" = (/obj/machinery/porta_turret{ai = 1; dir = 8},/turf/simulated/floor/plasteel/black,/area/turret_protected/aisat_interior{name = "\improper AI Core Lobby"}) +"agB" = (/obj/machinery/porta_turret/ai{dir = 8},/turf/simulated/floor/plasteel/black,/area/turret_protected/aisat_interior{name = "\improper AI Core Lobby"}) "agC" = (/turf/simulated/wall/r_wall,/area/turret_protected/aisat_interior{name = "\improper AI Core Lobby"}) "agD" = (/turf/simulated/floor/engine{carbon_dioxide = 0; name = "high pressure plasma floor"; nitrogen = 0; oxygen = 0; toxins = 240000},/area/engine/engineering) "agE" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "high pressure plasma floor"; nitrogen = 0; oxygen = 0; toxins = 240000},/area/engine/engineering) @@ -544,7 +544,7 @@ "akx" = (/obj/structure/cable/cyan{icon_state = "1-2"},/obj/structure/cable/cyan{icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/hallway/primary/fore{name = "\improper Command Hallway"}) "aky" = (/obj/machinery/camera/autoname{icon_state = "camera"; dir = 9},/obj/machinery/atmospherics/pipe/simple/cyan/hidden,/turf/simulated/floor/plasteel,/area/hallway/primary/fore{name = "\improper Command Hallway"}) "akz" = (/obj/machinery/turretid{control_area = "AI Upload Chamber"; pixel_x = 28; pixel_y = 0},/turf/simulated/floor/plasteel/black,/area/turret_protected/ai_upload) -"akA" = (/obj/machinery/porta_turret{ai = 1},/turf/simulated/floor/plasteel/black,/area/turret_protected/ai_upload) +"akA" = (/obj/machinery/porta_turret/ai,/turf/simulated/floor/plasteel/black,/area/turret_protected/ai_upload) "akB" = (/obj/structure/table,/obj/item/weapon/aiModule/reset,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/black,/area/turret_protected/ai_upload) "akC" = (/obj/structure/table,/obj/item/weapon/aiModule/core/full/asimov,/obj/item/weapon/aiModule/core/full/asimovpp,/obj/item/weapon/aiModule/core/full/corp,/obj/item/weapon/aiModule/core/full/paladin,/obj/item/weapon/aiModule/core/full/robocop,/turf/simulated/floor/plasteel/black,/area/turret_protected/ai_upload) "akD" = (/obj/structure/flora/kirbyplants{icon_state = "plant-02"; layer = 4.1},/turf/simulated/floor/plasteel/warning{icon_state = "warning"; dir = 4},/area/gateway) @@ -609,7 +609,7 @@ "alK" = (/obj/structure/cable/cyan{icon_state = "1-2"},/obj/machinery/door/airlock/glass_engineering{name = "engineering door"; req_access_txt = "10"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/engine/engineering) "alL" = (/obj/effect/spawner/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/cyan/hidden,/turf/simulated/floor/plating,/area/hallway/primary/fore{name = "\improper Command Hallway"}) "alM" = (/obj/structure/cable/cyan{icon_state = "1-2"},/obj/machinery/power/apc{dir = 8; name = "AI Upload APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/cyan{icon_state = "0-2"},/turf/simulated/floor/plasteel/black,/area/turret_protected/ai_upload) -"alN" = (/obj/machinery/porta_turret{ai = 1; dir = 1},/turf/simulated/floor/plasteel/black,/area/turret_protected/ai_upload) +"alN" = (/obj/machinery/porta_turret/ai{dir = 1},/turf/simulated/floor/plasteel/black,/area/turret_protected/ai_upload) "alO" = (/obj/structure/table,/obj/item/weapon/aiModule/supplied/freeform,/obj/machinery/light/small,/turf/simulated/floor/plasteel/black,/area/turret_protected/ai_upload) "alP" = (/obj/structure/table,/obj/item/weapon/aiModule/core/full/tyrant,/obj/item/weapon/aiModule/core/full/antimov,/obj/item/weapon/aiModule/reset/purge,/obj/item/weapon/aiModule/zeroth/oneHuman,/obj/item/weapon/aiModule/supplied/quarantine,/obj/item/weapon/aiModule/supplied/oxygen,/obj/item/weapon/aiModule/supplied/protectStation,/obj/item/weapon/aiModule/supplied/safeguard,/turf/simulated/floor/plasteel/black,/area/turret_protected/ai_upload) "alQ" = (/obj/structure/cable/cyan{icon_state = "4-8"},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel,/area/hallway/primary/fore{name = "\improper Command Hallway"}) diff --git a/_maps/map_files/DreamStation/dreamstation04.dmm b/_maps/map_files/DreamStation/dreamstation04.dmm index 737327d1b0c..a33b2f874a4 100644 --- a/_maps/map_files/DreamStation/dreamstation04.dmm +++ b/_maps/map_files/DreamStation/dreamstation04.dmm @@ -56,10 +56,10 @@ "abd" = (/obj/machinery/airalarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "abe" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "abf" = (/obj/structure/cable/white{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/black,/area/turret_protected/ai) -"abg" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/turret_protected/ai) +"abg" = (/obj/machinery/porta_turret/ai{dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/turret_protected/ai) "abh" = (/obj/structure/window/reinforced,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "abi" = (/obj/structure/cable/white{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window{name = "AI Core Door"; req_access_txt = "16"},/obj/machinery/hologram/holopad,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"abj" = (/obj/machinery/porta_turret{ai = 1; dir = 8},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/turret_protected/ai) +"abj" = (/obj/machinery/porta_turret/ai{dir = 8},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/turret_protected/ai) "abk" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "abl" = (/turf/simulated/wall/r_wall,/area/aisat) "abm" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -82,11 +82,11 @@ "abD" = (/obj/structure/cable/blue{tag = "icon-1-2"; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/airalarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable/blue{tag = "icon-2-8"; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera{c_tag = "AI Satellite East 1"; dir = 4; network = list("Sat"); start_active = 1},/turf/simulated/floor/plating,/area/aisat) "abE" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable/white{tag = "icon-0-10"; icon_state = "0-10"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "abF" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_n"; name = "north of station"; turf_type = /turf/space; width = 18},/turf/space,/area/space) -"abG" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/turret_protected/ai) +"abG" = (/obj/machinery/porta_turret/ai{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/turret_protected/ai) "abH" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/newscaster/security_unit{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/white{tag = "icon-2-5"; icon_state = "2-5"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "abI" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/machinery/door/window{dir = 1; name = "AI SMES Door"; req_access_txt = "16"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/white{d2 = 2; icon_state = "0-2"; tag = "icon-0-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "abJ" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/requests_console{department = "AI"; departmentType = 5; name = "AI RC"; pixel_x = 0; pixel_y = 30},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"abK" = (/obj/machinery/porta_turret{ai = 1; dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/turret_protected/ai) +"abK" = (/obj/machinery/porta_turret/ai{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/turret_protected/ai) "abL" = (/obj/structure/cable/white{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel/black,/area/turret_protected/ai) "abM" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (EAST)"; dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "abN" = (/obj/machinery/airalarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -119,7 +119,7 @@ "aco" = (/turf/simulated/wall,/area/turret_protected/aisat_interior) "acp" = (/turf/simulated/wall/r_wall,/area/turret_protected/aisat_interior) "acq" = (/obj/structure/table,/obj/item/weapon/secbot_assembly,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/bluegrid,/area/turret_protected/aisat_interior) -"acr" = (/obj/machinery/porta_turret{ai = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/aisat_interior) +"acr" = (/obj/machinery/porta_turret/ai,/turf/simulated/floor/bluegrid,/area/turret_protected/aisat_interior) "acs" = (/turf/simulated/floor/plasteel{tag = "icon-darkblue (NORTH)"; icon_state = "darkblue"; dir = 1},/turf/simulated/floor/plasteel/warningline{tag = "icon-warningline (NORTH)"; icon_state = "warningline"; dir = 1},/area/turret_protected/aisat_interior) "act" = (/turf/simulated/floor/plasteel{tag = "icon-darkblue (NORTH)"; icon_state = "darkblue"; dir = 1},/obj/structure/cable/white,/turf/simulated/floor/plasteel/warningline{tag = "icon-warningline (NORTH)"; icon_state = "warningline"; dir = 1},/area/turret_protected/aisat_interior) "acu" = (/turf/simulated/floor/plasteel{tag = "icon-darkblue (NORTH)"; icon_state = "darkblue"; dir = 1},/obj/machinery/camera/motion{c_tag = "AI Antechamber Motion Sensor"; desc = "It watches you carefully."; name = "motion-sensitive security camera"; network = list("Sat")},/turf/simulated/floor/plasteel/warningline{tag = "icon-warningline (NORTH)"; icon_state = "warningline"; dir = 1},/area/turret_protected/aisat_interior) @@ -173,9 +173,9 @@ "adq" = (/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/weapon/crowbar/red,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate) "adr" = (/obj/structure/table,/obj/item/weapon/storage/box/zipties{pixel_x = 1; pixel_y = 2},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate) "ads" = (/obj/effect/spawner/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) -"adt" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/aisat_interior) +"adt" = (/obj/machinery/porta_turret/ai{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/aisat_interior) "adu" = (/obj/structure/cable/blue{tag = "icon-1-2"; icon_state = "1-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/aisat_interior) -"adv" = (/obj/machinery/porta_turret{ai = 1; dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/aisat_interior) +"adv" = (/obj/machinery/porta_turret/ai{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/aisat_interior) "adw" = (/obj/effect/spawner/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) "adx" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate) "ady" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate) @@ -4014,11 +4014,11 @@ "bzj" = (/turf/simulated/floor/plasteel/black,/area/engine/gravity_generator) "bzk" = (/turf/simulated/floor/plasteel{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/engine/gravity_generator) "bzl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Engineering Gravity Generator Room"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0; start_active = 1},/turf/simulated/floor/plasteel/darkwarning{tag = "icon-warndark (WEST)"; icon_state = "warndark"; dir = 8},/area/engine/gravity_generator) -"bzm" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/obj/structure/cable/white{tag = "icon-1-4"; icon_state = "1-4"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/turret_protected/ai_upload) +"bzm" = (/obj/machinery/porta_turret/ai{dir = 4},/obj/structure/cable/white{tag = "icon-1-4"; icon_state = "1-4"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/turret_protected/ai_upload) "bzn" = (/turf/simulated/floor/plasteel{tag = "icon-darkblue (EAST)"; icon_state = "darkblue"; dir = 4},/obj/structure/table,/obj/item/weapon/aiModule/supplied/protectStation,/obj/structure/cable/white{tag = "icon-1-4"; icon_state = "1-4"},/obj/structure/cable/white{tag = "icon-4-8"; icon_state = "4-8"},/turf/simulated/floor/plasteel/warningline{tag = "icon-warningline (EAST)"; icon_state = "warningline"; dir = 4},/area/turret_protected/ai_upload) "bzo" = (/obj/machinery/computer/upload/ai,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/white{tag = "icon-2-4"; icon_state = "2-4"},/obj/structure/cable/white{tag = "icon-2-8"; icon_state = "2-8"},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/turret_protected/ai_upload) "bzp" = (/turf/simulated/floor/plasteel{tag = "icon-darkblue (WEST)"; icon_state = "darkblue"; dir = 8},/obj/structure/table,/obj/item/weapon/aiModule/core/full/corp,/obj/structure/cable/white{tag = "icon-1-8"; icon_state = "1-8"},/obj/structure/cable/white{tag = "icon-4-8"; icon_state = "4-8"},/turf/simulated/floor/plasteel/warningline{tag = "icon-warningline (WEST)"; icon_state = "warningline"; dir = 8},/area/turret_protected/ai_upload) -"bzq" = (/obj/machinery/porta_turret{ai = 1; dir = 8},/obj/structure/cable/white{tag = "icon-1-8"; icon_state = "1-8"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/turret_protected/ai_upload) +"bzq" = (/obj/machinery/porta_turret/ai{dir = 8},/obj/structure/cable/white{tag = "icon-1-8"; icon_state = "1-8"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/turret_protected/ai_upload) "bzr" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/space,/area/space/nearstation) "bzs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/lattice,/turf/space,/area/space/nearstation) "bzt" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/space,/area/space/nearstation) @@ -4319,7 +4319,7 @@ "bFc" = (/obj/machinery/light,/obj/machinery/power/apc{auto_name = 1; dir = 2; name = "Autoname APC South"; pixel_x = 1; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel/darkwarning{tag = "icon-warndark (NORTH)"; icon_state = "warndark"; dir = 1},/area/engine/gravity_generator) "bFd" = (/obj/structure/cable/yellow{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor/plasteel/darkwarning{tag = "icon-warndark (NORTH)"; icon_state = "warndark"; dir = 1},/area/engine/gravity_generator) "bFe" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel/darkwarning/corner{tag = "icon-warndarkcorners (EAST)"; icon_state = "warndarkcorners"; dir = 4},/area/engine/gravity_generator) -"bFf" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/obj/structure/cable/white{tag = "icon-2-4"; icon_state = "2-4"},/obj/structure/cable/white{tag = "icon-1-4"; icon_state = "1-4"},/obj/structure/cable/white{tag = "icon-4-8"; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/turret_protected/ai_upload) +"bFf" = (/obj/machinery/porta_turret/ai{dir = 4},/obj/structure/cable/white{tag = "icon-2-4"; icon_state = "2-4"},/obj/structure/cable/white{tag = "icon-1-4"; icon_state = "1-4"},/obj/structure/cable/white{tag = "icon-4-8"; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/turret_protected/ai_upload) "bFg" = (/obj/structure/cable/white{tag = "icon-4-8"; icon_state = "4-8"},/turf/simulated/floor/plasteel/black,/area/turret_protected/ai_upload) "bFh" = (/turf/simulated/floor/plasteel{tag = "icon-darkblue (EAST)"; icon_state = "darkblue"; dir = 4},/obj/structure/cable/white{tag = "icon-4-8"; icon_state = "4-8"},/turf/simulated/floor/plasteel/warningline{tag = "icon-warningline (EAST)"; icon_state = "warningline"; dir = 4},/area/turret_protected/ai_upload) "bFi" = (/obj/machinery/hologram/holopad,/obj/structure/cable/white{tag = "icon-4-8"; icon_state = "4-8"},/obj/structure/cable/white{tag = "icon-1-4"; icon_state = "1-4"},/obj/structure/cable/white{tag = "icon-2-4"; icon_state = "2-4"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) @@ -4616,11 +4616,11 @@ "bKN" = (/obj/structure/cable/green{tag = "icon-1-2"; icon_state = "1-2"},/obj/structure/cable/green{tag = "icon-2-4"; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "bKO" = (/obj/structure/cable/green{tag = "icon-4-8"; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/effect/spawner/lootdrop{loot = list(/obj/item/stack/sheet/metal = 1, /obj/item/stack/rods = 2, /obj/item/weapon/shard = 2, "" = 3); lootcount = 2; name = "random material damage spawner"},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "bKP" = (/obj/structure/cable/green{tag = "icon-2-8"; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (EAST)"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) -"bKQ" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/obj/structure/cable/white{tag = "icon-2-4"; icon_state = "2-4"},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_x = -25; pixel_y = -2; tag = "WEST"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/turret_protected/ai_upload) +"bKQ" = (/obj/machinery/porta_turret/ai{dir = 4},/obj/structure/cable/white{tag = "icon-2-4"; icon_state = "2-4"},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_x = -25; pixel_y = -2; tag = "WEST"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/turret_protected/ai_upload) "bKR" = (/turf/simulated/floor/plasteel{tag = "icon-darkblue (EAST)"; icon_state = "darkblue"; dir = 4},/obj/structure/table,/obj/item/weapon/aiModule/core/full/asimov,/obj/structure/cable/white{tag = "icon-2-4"; icon_state = "2-4"},/obj/structure/cable/white{tag = "icon-4-8"; icon_state = "4-8"},/turf/simulated/floor/plasteel/warningline{tag = "icon-warningline (EAST)"; icon_state = "warningline"; dir = 4},/area/turret_protected/ai_upload) "bKS" = (/obj/machinery/computer/upload/borg,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/white{tag = "icon-1-4"; icon_state = "1-4"},/obj/machinery/light,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/turret_protected/ai_upload) "bKT" = (/turf/simulated/floor/plasteel{tag = "icon-darkblue (WEST)"; icon_state = "darkblue"; dir = 8},/obj/structure/table,/obj/item/weapon/aiModule/supplied/freeform,/obj/structure/cable/white{tag = "icon-2-8"; icon_state = "2-8"},/obj/structure/cable/white{tag = "icon-4-8"; icon_state = "4-8"},/turf/simulated/floor/plasteel/warningline{tag = "icon-warningline (WEST)"; icon_state = "warningline"; dir = 8},/area/turret_protected/ai_upload) -"bKU" = (/obj/machinery/porta_turret{ai = 1; dir = 8},/obj/structure/cable/white{tag = "icon-2-8"; icon_state = "2-8"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/turret_protected/ai_upload) +"bKU" = (/obj/machinery/porta_turret/ai{dir = 8},/obj/structure/cable/white{tag = "icon-2-8"; icon_state = "2-8"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/turret_protected/ai_upload) "bKV" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/space,/area/space/nearstation) "bKW" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/space,/area/space/nearstation) "bKX" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central) diff --git a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm index 8a69888cf4d..9c8c0624788 100644 --- a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm +++ b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm @@ -112,11 +112,11 @@ "ach" = (/obj/effect/decal/cleanable/blood/old,/obj/effect/decal/cleanable/blood/gibs/old,/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/obj/effect/decal/cleanable/ash{desc = "They look like human remains, and have clearly been gnawed at."; icon = 'icons/effects/blood.dmi'; icon_state = "remains"; name = "remains"},/obj/item/weapon/gun/energy/laser/retro,/turf/simulated/floor/plasteel/shuttle,/area/shuttle/abandoned) "aci" = (/obj/structure/closet/wardrobe/mixed,/obj/item/clothing/under/rank/centcom_officer{desc = "A badge on the arm indicates that it's meant to be worn by Centcom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; name = "\improper dusty old Centcom jumpsuit"},/obj/item/clothing/under/rank/centcom_commander{desc = "A badge on the arm indicates that it's meant to be worn by Centcom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; name = "\improper dusty old Centcom jumpsuit"},/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned) "acj" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/ai) -"ack" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/porta_turret{ai = 1; dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"ack" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/porta_turret/ai{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "acl" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "acm" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) "acn" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/wall/r_wall,/area/turret_protected/ai) -"aco" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/porta_turret{ai = 1; dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"aco" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/porta_turret/ai{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "acp" = (/turf/space,/turf/simulated/wall/shuttle{dir = 2; icon_state = "diagonalWall3"},/area/shuttle/syndicate) "acq" = (/obj/machinery/door/window{name = "Cockpit"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate) "acr" = (/turf/space,/turf/simulated/wall/shuttle{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/syndicate) @@ -191,14 +191,14 @@ "adI" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned) "adJ" = (/obj/structure/tank_dispenser/oxygen{layer = 2.7; pixel_x = -1; pixel_y = 2},/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned) "adK" = (/turf/simulated/wall/r_wall,/area/turret_protected/AIsatextAS{name = "AI Satellite Storage"}) -"adL" = (/obj/machinery/porta_turret{ai = 1},/obj/machinery/ai_status_display{pixel_y = 31},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/AIsatextAS{name = "AI Satellite Storage"}) +"adL" = (/obj/machinery/porta_turret/ai,/obj/machinery/ai_status_display{pixel_y = 31},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/AIsatextAS{name = "AI Satellite Storage"}) "adM" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "AI Satellite West Wing APC"; pixel_y = 25},/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "AI Satellite West"; network = list("SS13","AISat"); start_active = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextAS{name = "AI Satellite Storage"}) "adN" = (/obj/structure/tank_dispenser/oxygen{pixel_x = -1; pixel_y = 2},/obj/machinery/computer/security/telescreen{desc = "Used for watching the AI satellite."; name = "AI Satellite Monitor"; network = list("AISat"); pixel_y = 29},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextAS{name = "AI Satellite Storage"}) "adO" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/shutters/preopen{id = "AIBlast"; name = "AI Chamber Blast Shutter"},/turf/simulated/floor/plating,/area/turret_protected/ai) "adP" = (/obj/machinery/door/airlock/glass_command{name = "AI Chamber"; req_access_txt = "16"},/obj/machinery/door/poddoor/shutters/preopen{id = "AIBlast"; name = "AI Chamber Blast Shutter"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) "adQ" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the AI satellite."; name = "AI Satellite Monitor"; network = list("AISat"); pixel_y = 29},/obj/machinery/computer/station_alert,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) "adR" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "AI Satellite East Wing APC"; pixel_y = 25},/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "AI Satellite East"; network = list("SS13","AISat"); start_active = 1},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/pen,/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) -"adS" = (/obj/machinery/porta_turret{ai = 1},/obj/machinery/ai_status_display{pixel_y = 31},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"adS" = (/obj/machinery/porta_turret/ai,/obj/machinery/ai_status_display{pixel_y = 31},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) "adT" = (/obj/structure/table,/obj/item/weapon/c4{pixel_x = 2; pixel_y = 1},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate) "adU" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 5; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned) "adV" = (/obj/machinery/constructable_frame/machine_frame,/obj/item/weapon/circuitboard/chem_dispenser,/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned) @@ -211,7 +211,7 @@ "aec" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextAS{name = "AI Satellite Storage"}) "aed" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextAS{name = "AI Satellite Storage"}) "aee" = (/turf/simulated/wall/r_wall,/area/turret_protected/aisat_interior) -"aef" = (/obj/machinery/porta_turret{ai = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) +"aef" = (/obj/machinery/porta_turret/ai,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) "aeg" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) "aeh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) "aei" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/aisat_interior) @@ -2442,10 +2442,10 @@ "aUX" = (/obj/machinery/airalarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "aUY" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/plasteel{icon_state = "darkblue"; dir = 4},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "aUZ" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard) -"aVa" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/obj/structure/sign/kiddieplaque{pixel_x = -32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"aVa" = (/obj/machinery/porta_turret/ai{dir = 4},/obj/structure/sign/kiddieplaque{pixel_x = -32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "aVb" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aVc" = (/obj/machinery/ai_slipper{icon_state = "motion0"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) -"aVd" = (/obj/machinery/porta_turret{ai = 1; dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"aVd" = (/obj/machinery/porta_turret/ai{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "aVe" = (/obj/machinery/portable_atmospherics/canister/nitrous_oxide,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/atmos) "aVf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/atmos) "aVg" = (/obj/machinery/airalarm{pixel_y = 23},/obj/machinery/camera{c_tag = "Atmospherics Monitoring"},/turf/simulated/floor/plasteel{icon_state = "cautioncorner"; dir = 1},/area/atmos) diff --git a/_maps/map_files/MetaStation/MetaStation.v41I.dmm b/_maps/map_files/MetaStation/MetaStation.v41I.dmm index 4e761307eae..dfa8ada1a5e 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41I.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41I.dmm @@ -1981,11 +1981,11 @@ "aMe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/storage/primary) "aMf" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/space,/area/space) "aMg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) -"aMh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/porta_turret{ai = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) +"aMh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/porta_turret/ai,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aMi" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/flasher{pixel_x = 0; pixel_y = 24; id = "AI"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aMj" = (/obj/structure/sign/kiddieplaque{pixel_y = 32},/obj/structure/table,/obj/machinery/camera/motion{c_tag = "AI Upload Chamber - Fore"; network = list("SS13","RD","AIUpload")},/obj/structure/flora/kirbyplants{icon_state = "plant-07"; name = "Photosynthetic Potted plant"; pixel_y = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aMk" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/obj/machinery/airalarm{pixel_y = 23},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) -"aMl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/porta_turret{ai = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) +"aMl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/porta_turret/ai,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aMm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) "aMn" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/space,/area/space) "aMo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/hallway/primary/fore) @@ -2132,11 +2132,11 @@ "aOZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel,/area/storage/primary) "aPa" = (/obj/structure/table,/obj/item/device/assembly/igniter{pixel_x = -4; pixel_y = -4},/obj/item/device/assembly/igniter,/obj/item/weapon/screwdriver{pixel_y = 16},/turf/simulated/floor/plasteel{dir = 4; icon_state = "brown"},/area/storage/primary) "aPb" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/turret_protected/ai_upload) -"aPc" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) +"aPc" = (/obj/machinery/porta_turret/ai{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aPd" = (/obj/machinery/computer/upload/borg,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/westleft{base_state = "left"; dir = 2; icon_state = "left"; layer = 3.1; name = "Cyborg Upload Console Window"; req_access_txt = "16"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aPe" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aPf" = (/obj/machinery/computer/upload/ai,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/westleft{base_state = "right"; dir = 2; icon_state = "right"; layer = 3.1; name = "Upload Console Window"; req_access_txt = "16"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) -"aPg" = (/obj/machinery/porta_turret{ai = 1; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) +"aPg" = (/obj/machinery/porta_turret/ai{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aPh" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/crew_quarters/courtroom) "aPi" = (/obj/structure/bed/chair{dir = 4; name = "Prosecution"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/crew_quarters/courtroom) "aPj" = (/obj/structure/table/wood,/obj/item/weapon/paper,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 10},/area/crew_quarters/courtroom) @@ -2342,9 +2342,9 @@ "aTb" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/storage/primary) "aTc" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/storage/primary) "aTd" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "brown"},/area/storage/primary) -"aTe" = (/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/obj/machinery/porta_turret{ai = 1; dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) +"aTe" = (/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/obj/machinery/porta_turret/ai{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aTf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) -"aTg" = (/obj/machinery/porta_turret{ai = 1; dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) +"aTg" = (/obj/machinery/porta_turret/ai{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aTh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/fore) "aTi" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Courtroom"; opacity = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) "aTj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) @@ -2525,13 +2525,13 @@ "aWC" = (/obj/item/weapon/wrench,/turf/simulated/floor/plating/airless,/area/engine/engineering) "aWD" = (/obj/machinery/camera/emp_proof{c_tag = "Aft Arm - Far"; dir = 8; network = list("Singulo")},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aWE" = (/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/structure/window/reinforced{dir = 8},/turf/space,/area/space) -"aWF" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"aWF" = (/obj/machinery/porta_turret/ai{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) "aWG" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) "aWH" = (/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) "aWI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/sign/poster{pixel_y = -32},/turf/simulated/floor/plasteel{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "aWJ" = (/obj/machinery/camera{c_tag = "AI Chamber - Fore"; dir = 2; network = list("RD")},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 20},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) "aWK" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) -"aWL" = (/obj/machinery/porta_turret{ai = 1; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"aWL" = (/obj/machinery/porta_turret/ai{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) "aWM" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aWN" = (/obj/structure/flora/kirbyplants{icon_state = "plant-13"; layer = 4.1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "aWO" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) @@ -3741,14 +3741,14 @@ "btW" = (/obj/structure/window/reinforced,/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "btX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "btY" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Foyer"}) -"btZ" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/obj/machinery/porta_turret{ai = 1; dir = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; dir = 4; name = "Research Monitor"; network = list("RD"); pixel_x = -28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/turret_protected/aisat_interior) +"btZ" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/obj/machinery/porta_turret/ai{dir = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; dir = 4; name = "Research Monitor"; network = list("RD"); pixel_x = -28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/turret_protected/aisat_interior) "bua" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/power/apc{aidisabled = 0; cell_type = 5000; dir = 2; name = "MiniSat Foyer APC"; pixel_x = 0; pixel_y = -29},/obj/structure/cable/yellow,/obj/machinery/camera/motion{c_tag = "MiniSat Foyer"; dir = 8; network = list("MiniSat")},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Foyer"}) "bub" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/aisat_interior) "buc" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/airalarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/mob/living/simple_animal/bot/floorbot,/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/turret_protected/aisat_interior) "bud" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/turret_protected/aisat_interior) "bue" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) "buf" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/turret_protected/aisat_interior) -"bug" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/porta_turret{ai = 1; dir = 2},/obj/machinery/computer/security/telescreen{dir = 8; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/turret_protected/aisat_interior) +"bug" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/porta_turret/ai{dir = 2},/obj/machinery/computer/security/telescreen{dir = 8; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/turret_protected/aisat_interior) "buh" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/turret_protected/tcomfoyer{name = "\improper MiniSat Foyer"}) "bui" = (/obj/machinery/computer/station_alert,/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/obj/machinery/computer/security/telescreen{dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = -29},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure{name = "MiniSat Maintenance"}) "buj" = (/obj/structure/table,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/computer/monitor,/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure{name = "MiniSat Maintenance"}) @@ -4081,7 +4081,7 @@ "bAy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "platingdmg3"},/area/maintenance/maintcentral{name = "Central Maintenance"}) "bAz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bAA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) -"bAB" = (/obj/machinery/porta_turret{ai = 1; dir = 2},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/ai) +"bAB" = (/obj/machinery/porta_turret/ai{dir = 2},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/ai) "bAC" = (/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bAD" = (/mob/living/carbon/monkey{name = "Pun Pun"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bAE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 6d0134872f5..0757e74208e 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -2694,9 +2694,9 @@ "aZP" = (/turf/simulated/wall,/area/bridge/meeting_room) "aZQ" = (/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = null; req_access_txt = "19"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/bridge/meeting_room) "aZR" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) -"aZS" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) +"aZS" = (/obj/machinery/porta_turret/ai{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aZT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) -"aZU" = (/obj/machinery/porta_turret{ai = 1; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) +"aZU" = (/obj/machinery/porta_turret/ai{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "aZV" = (/turf/simulated/wall/r_wall,/area/crew_quarters/captain) "aZW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/crew_quarters/captain) "aZX" = (/obj/machinery/door/airlock/command{name = "Captain's Office"; req_access = null; req_access_txt = "20"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -2863,7 +2863,7 @@ "bdc" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitecorner"},/area/hallway/primary/starboard) "bdd" = (/obj/machinery/vending/cola,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bde" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/wood,/area/bridge/meeting_room) -"bdf" = (/obj/machinery/airalarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) +"bdf" = (/obj/machinery/airalarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/porta_turret/ai{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload) "bdg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bdh" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/ai_upload) "bdi" = (/obj/machinery/computer/arcade,/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -6496,16 +6496,16 @@ "cuV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) "cuW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/ai_slipper{icon_state = "motion0"; uses = 10},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) "cuX" = (/obj/machinery/power/apc{dir = 4; name = "MiniSat Service Bay APC"; pixel_x = 27; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/port_gen/pacman,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) -"cuY" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cuY" = (/obj/machinery/porta_turret/ai{dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) "cuZ" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/mob/living/simple_animal/bot/floorbot,/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) "cva" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai) "cvb" = (/obj/machinery/ai_status_display,/turf/simulated/wall/r_wall,/area/turret_protected/ai) -"cvc" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/machinery/porta_turret{ai = 1; dir = 4},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; listening = 0; name = "Station Intercom (AI Private)"; pixel_y = -29},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/turret_protected/aisat_interior) -"cvd" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/turret_protected/aisat_interior) +"cvc" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/machinery/porta_turret/ai{dir = 4},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; listening = 0; name = "Station Intercom (AI Private)"; pixel_y = -29},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/turret_protected/aisat_interior) +"cvd" = (/obj/machinery/porta_turret/ai{dir = 4},/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/turret_protected/aisat_interior) "cve" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/turretid{control_area = "AI Satellite Hallway"; enabled = 1; icon_state = "control_standby"; name = "Chamber Hallway Turret Control"; pixel_x = 32; pixel_y = -24; req_access = list(65)},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) "cvf" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/turret_protected/ai) "cvg" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/mob/living/simple_animal/bot/cleanbot,/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) -"cvh" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cvh" = (/obj/machinery/porta_turret/ai{dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) "cvi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) "cvj" = (/turf/simulated/wall,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvk" = (/turf/simulated/wall/r_wall,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) @@ -6515,7 +6515,7 @@ "cvo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Chamber Hallway"; req_one_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvp" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "cvq" = (/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) -"cvr" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"cvr" = (/obj/machinery/porta_turret/ai{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "cvs" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvu" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) @@ -6530,10 +6530,10 @@ "cvD" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvE" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvF" = (/obj/structure/lattice,/obj/machinery/camera{c_tag = "MiniSat External NorthWest"; dir = 8; network = list("MiniSat"); pixel_x = 0; pixel_y = 0; start_active = 1},/turf/space,/area/space) -"cvG" = (/obj/machinery/porta_turret{ai = 1; dir = 4; installation = /obj/item/weapon/gun/energy/gun},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvG" = (/obj/machinery/porta_turret/ai{dir = 4; installation = /obj/item/weapon/gun/energy/gun},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvH" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) -"cvJ" = (/obj/machinery/porta_turret{ai = 1; dir = 4; installation = /obj/item/weapon/gun/energy/gun},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvJ" = (/obj/machinery/porta_turret/ai{dir = 4; installation = /obj/item/weapon/gun/energy/gun},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvK" = (/obj/structure/lattice,/obj/machinery/camera{c_tag = "MiniSat External NorthEast"; dir = 4; network = list("MiniSat"); pixel_x = 0; pixel_y = 0; start_active = 1},/turf/space,/area/space) "cvL" = (/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvM" = (/obj/machinery/camera/motion{c_tag = "MiniSat Core Hallway"; dir = 4; network = list("MiniSat")},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index aca9055edc1..777dbd09a9d 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -135,11 +135,11 @@ return src.verbs -= /mob/living/silicon/ai/proc/upgrade_turrets - for(var/obj/machinery/porta_turret/turret in machines) - if(turret.ai) //Make sure only the AI's turrets are affected. - turret.health += 30 - turret.eprojectile = /obj/item/projectile/beam/heavylaser //Once you see it, you will know what it means to FEAR. - turret.eshot_sound = 'sound/weapons/lasercannonfire.ogg' + //Upgrade AI turrets around the world + for(var/obj/machinery/porta_turret/ai/turret in machines) + turret.health += 30 + turret.eprojectile = /obj/item/projectile/beam/heavylaser //Once you see it, you will know what it means to FEAR. + turret.eshot_sound = 'sound/weapons/lasercannonfire.ogg' src << "Turrets upgraded." /datum/AI_Module/large/lockdown diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 77e42cc5a38..f9d235b8a6a 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -51,7 +51,6 @@ var/auth_weapons = 0 //checks if it can shoot people that have a weapon they aren't authorized to have var/stun_all = 0 //if this is active, the turret shoots everything that isn't security or head of staff var/check_anomalies = 1 //checks if it can shoot at unidentified lifeforms (ie xenos) - var/ai = 0 //if active, will shoot at anything not an AI or cyborg var/attacked = 0 //if set to 1, the turret gets pissed off and shoots at people nearby (unless they have sec access!) @@ -408,8 +407,6 @@ criminals = pick(0, 1) auth_weapons = pick(0, 1) stun_all = pick(0, 0, 0, 0, 1) //stun_all is a pretty big deal, so it's least likely to get turned on - if(prob(5)) - emagged = 1 on=0 spawn(rand(60,600)) @@ -467,47 +464,51 @@ popDown() return - var/list/targets = list() //list of primary targets - var/turretview = view(scan_range, base) - - if(check_anomalies) //if it's set to check for xenos/simpleanimals - for(var/mob/living/simple_animal/SA in turretview) - if(SA.stat || (faction in SA.faction) || SA.has_unlimited_silicon_privilege) //don't target dead animals or NT maint drones. - continue - targets += SA - - for(var/mob/living/carbon/C in turretview) //loops through all carbon-based lifeforms in view(7) - if(emagged && C.stat != DEAD) //if emagged, every living carbon is a target. - targets += C - continue - - if(C.stat || C.handcuffed || (C.lying && !(C.buckled))) //if the perp is handcuffed or lying or dead/dying, no need to bother really - continue - - if(ai) //If it's set to attack all nonsilicons, target them! - targets += C - continue - - if(istype(C, /mob/living/carbon/human)) //if the target is a human, analyze threat level - if(assess_perp(C) >= 4) - targets += C - - else if(check_anomalies) - if(!(faction in C.faction)) - for(var/F in C.faction) //We target carbons without the portaturret's faction and who also have alien or slime faction. - if(F == "alien" || F == "slime") - targets += C - break - - for(var/obj/mecha/M in turretview) - if(M.occupant) - if(ai || emagged || assess_perp(M.occupant) >= 4) // we target all occupied mechs if we're emagged or set to attack all non silicons. - targets += M + var/list/targets = calculate_targets() if(!tryToShootAt(targets)) if(!always_up) - popDown() // no valid targets, close the cover + spawn() + popDown() // no valid targets, close the cover +/obj/machinery/porta_turret/proc/calculate_targets() + var/list/targets = list() + var/turretview = view(scan_range, base) + for(var/A in turretview) + if(check_anomalies)//if it's set to check for simple animals + if(istype(A, /mob/living/simple_animal)) + var/mob/living/simple_animal/SA = A + if(SA.stat || in_faction(SA)) //don't target if dead or in faction + continue + targets += SA + + if(istype(A, /mob/living/carbon)) + var/mob/living/carbon/C = A + //If not emagged, only target non downed carbons + if(!emagged && (C.stat || C.handcuffed || C.lying)) + continue + + //If emagged, target all but dead carbons + if(emagged && C.stat == DEAD) + continue + + //if the target is a human and not in our faction, analyze threat level + if(istype(C, /mob/living/carbon/human) && !in_faction(C)) + if(assess_perp(C) >= 4) + targets += C + + else if(check_anomalies) //non humans who are not simple animals (xenos etc) + if(!in_faction(C)) + targets += C + + if(istype(A, /obj/mecha/)) + var/obj/mecha/M = A + //If there is a user and they're not in our faction + if(M.occupant && !in_faction(M.occupant)) + if(assess_perp(M.occupant) >= 4) + targets += M + + return targets /obj/machinery/porta_turret/proc/tryToShootAt(list/atom/movable/targets) while(targets.len > 0) @@ -608,6 +609,11 @@ return threatcount +/obj/machinery/porta_turret/proc/in_faction(mob/target) + if(!(faction in target.faction)) + return 0 + return 1 + /obj/machinery/porta_turret/proc/target(atom/movable/target) if(disabled) return @@ -668,10 +674,6 @@ src.active_state = "Laser" src.power_change() -/* - Portable turret constructions - Known as "turret frame"s -*/ /obj/machinery/porta_turret_construct name = "turret frame" @@ -778,7 +780,6 @@ qdel(I) return - //attack_hand() removes the gun if(5) if(istype(I, /obj/item/weapon/screwdriver)) @@ -787,7 +788,6 @@ user << "You close the internal access hatch." return - //attack_hand() removes the prox sensor if(6) if(istype(I, /obj/item/stack/sheet/metal)) @@ -827,9 +827,6 @@ Turret.gun_charge = gun_charge Turret.setup() -// Turret.cover=new/obj/machinery/porta_turret_cover(loc) -// Turret.cover.Parent_Turret=Turret -// Turret.cover.name = finish_name qdel(src) else if(istype(I, /obj/item/weapon/crowbar)) @@ -996,6 +993,10 @@ projectile = /obj/item/projectile/bullet/weakbullet3 eprojectile = /obj/item/projectile/bullet/weakbullet3 +//Blame MSO +/obj/machinery/porta_turret/ai + faction = "silicon" + //////////////////////// //Turret Control Panel// //////////////////////// From 58c2972047dce7e2d2dac0b8ecd0e13c1dd84605 Mon Sep 17 00:00:00 2001 From: MMMiracles Date: Tue, 2 Feb 2016 18:28:23 -0500 Subject: [PATCH 05/17] made AP rounds actually capable of denting people in bulletproof armor --- code/modules/projectiles/guns/projectile/saw.dm | 4 ++-- code/modules/uplink/uplink_item.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/projectiles/guns/projectile/saw.dm b/code/modules/projectiles/guns/projectile/saw.dm index 2defca3028a..a924bd5b328 100644 --- a/code/modules/projectiles/guns/projectile/saw.dm +++ b/code/modules/projectiles/guns/projectile/saw.dm @@ -82,8 +82,8 @@ armour_penetration = -10 /obj/item/projectile/bullet/saw/ap - damage = 35 - armour_penetration = 35 + damage = 40 + armour_penetration = 75 /obj/item/projectile/bullet/saw/incen damage = 7 diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index 58bbbc033f3..9d2ceeb1c19 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -381,7 +381,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once. cost = 3 item = /obj/item/ammo_box/magazine/m12g -/datum/uplink_item/ammo/shotgun/slug +/datum/uplink_item/ammo/shotgun/stun name = "12 Stun Slug Drum" desc = "An alternative 8-round stun slug magazine for use with the Bulldog shotgun. \ Saying that they're completely non-lethal would be lying." From dd2d48d783d78bd3036289638d0d56b118310aca Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Wed, 3 Feb 2016 09:38:58 +0000 Subject: [PATCH 06/17] Updated README.md with the maps the codebase comes with and how to enable map rotation on them Let me know if there's anything else to add. --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index dfbbcebd098..8c2c30c5703 100644 --- a/README.md +++ b/README.md @@ -91,16 +91,22 @@ the new version. ##MAPS -/tg/station currently comes equipped with three maps. +/tg/station currently comes equipped with seven maps. * [tgstation2 (default)](http://tgstation13.org/wiki/Boxstation) +* [MetaStation](https://tgstation13.org/wiki/MetaStation) * [MiniStation](http://tgstation13.org/wiki/MiniStation) * [AsteroidStation](https://tgstation13.org/wiki/AsteroidStation) +* [BirdStation](https://tgstation13.org/wiki/BirdStation) +* [DreamStation](https://tgstation13.org/wiki/Dreamstation) +* [EfficiencyStation](https://tgstation13.org/wiki/Efficiency_Station) All maps have their own code file that is in the base of the _maps directory. Instead of loading the map directly we instead use a code file to include the map and then include any other code changes that are needed for it; for example MiniStation changes the uplink items for the map. Follow this guideline when adding your own map, to your fork, for easy compatibility. If you want to load a different map, just open the corresponding map's code file in Dream Maker, make sure all of the other map code files are unticked in the file tree, in the left side of the screen, and then make sure the map code file you want is ticked. +If you are hosting a server, and want randomly picked maps to be played each round, you can enable map rotation in [config.txt](config/config.txt) and then set the maps to be picked in the [maps.txt](config/maps.txt) file. + Anytime you want to make changes to a map it's imperative you use the [Map Merging tools](http://tgstation13.org/wiki/Map_Merger) ##AWAY MISSIONS From 92dfa8df987bc620022a95fc74da8ecff229edd8 Mon Sep 17 00:00:00 2001 From: kingofkosmos Date: Wed, 3 Feb 2016 20:55:24 +0200 Subject: [PATCH 07/17] Makes health analyzer show an actual percentage of the analyzed mob's health. Also fixes the span in time of death. --- code/game/objects/items/devices/scanners.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 7c9eb724098..87ba0fd8d73 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -121,7 +121,7 @@ MASS SPECTROMETER var/tox_loss = M.getToxLoss() var/fire_loss = M.getFireLoss() var/brute_loss = M.getBruteLoss() - var/mob_status = (M.stat > 1 ? "Deceased" : "[M.health] % healthy") + var/mob_status = (M.stat > 1 ? "Deceased" : "[round(M.health/M.maxHealth,0.01)*100] % healthy") if(M.status_flags & FAKEDEATH) mob_status = "Deceased" @@ -172,7 +172,7 @@ MASS SPECTROMETER // Time of death if(M.tod && (M.stat == DEAD || (M.status_flags & FAKEDEATH))) - user << "Time of Death: [M.tod]" + user << "Time of Death: [M.tod]" for(var/datum/disease/D in M.viruses) if(!(D.visibility_flags & HIDDEN_SCANNER)) @@ -409,7 +409,7 @@ MASS SPECTROMETER else if (T.nutrition < T.get_hunger_nutrition()) user << "Warning: slime is hungry" user << "Electric change strength: [T.powerlevel]" - user << "Health: [T.health]" + user << "Health: [round(T.health/T.maxHealth,0.01)*100]" if (T.slime_mutation[4] == T.colour) user << "This slime does not evolve any further." else From 7e372d65c3d3f5eece76d7259e5c3aee2f9e9208 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Wed, 3 Feb 2016 17:15:43 -0500 Subject: [PATCH 08/17] Tweaks blob expansion to be faster near the expanding blob but slower near the edges of the blob Blob spores now produce a slightly larger cloud of smoke when dying. Fragile spores and blob zombies produce the current, smaller cloud. Replicating Foam will try to expand when damaged much more often. Adds Electromagnetic Web, which does burn damage and EMPs targets, as well as causing a small EMP when dying, but takes more damage; a normal blob that hasn't been near a node or the core for 6~ seconds can be oneshotted by a laser. --- code/game/gamemodes/blob/blobs/blob_mobs.dm | 5 ++- code/game/gamemodes/blob/powers.dm | 3 +- code/game/gamemodes/blob/theblob.dm | 8 ++-- .../chemistry/reagents/blob_reagents.dm | 40 +++++++++++++++---- 4 files changed, 42 insertions(+), 14 deletions(-) diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index ac392f1bfb9..7aba1651893 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -42,6 +42,7 @@ attacktext = "hits" attack_sound = 'sound/weapons/genhit1.ogg' speak_emote = list("pulses") + var/death_cloud_size = 1 //size of cloud produced from a dying spore var/obj/effect/blob/factory/factory = null var/list/human_overlays = list() var/is_zombie = 0 @@ -80,6 +81,7 @@ desc = "A shambling corpse animated by the blob." melee_damage_lower += 8 melee_damage_upper += 11 + death_cloud_size = 0 icon = H.icon speak_emote = list("groans") icon_state = "zombie_s" @@ -106,7 +108,7 @@ // Attach the smoke spreader and setup/start it. S.attach(location) - S.set_up(reagents, 0, location, silent=1) + S.set_up(reagents, death_cloud_size, location, silent=1) S.start() ghostize() @@ -137,6 +139,7 @@ maxHealth = 20 melee_damage_lower = 1 melee_damage_upper = 2 + death_cloud_size = 0 ///////////////// // BLOBBERNAUT // diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index 2960257ba42..9105a12547c 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -83,7 +83,7 @@ if(!B) src << "You must be on a factory blob!" return - if(B.health < B.maxhealth*0.8) //if it's at less than 80% of its health, you can't blobbernaut it + if(B.health <= B.maxhealth*0.8) //if it's at less than 80% of its health, you can't blobbernaut it src << "This factory blob is too damaged to produce a blobbernaut." return if(!can_buy(20)) @@ -92,6 +92,7 @@ B.take_damage(B.maxhealth*0.8, CLONE, null, 0) //take a bunch of damage, so you can't produce tons of blobbernauts from a single factory B.visible_message("The blobbernaut [pick("rips", "tears", "shreds")] its way out of the factory blob!") B.spore_delay = world.time + 600 //one minute before it can spawn spores again + playsound(B.loc, 'sound/effects/splat.ogg', 50, 1) blobber.overmind = src blobber.update_icons() blobber.AIStatus = AI_OFF diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index ea2315f67d3..261ae65f713 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -96,10 +96,10 @@ for(var/obj/effect/blob/B in orange(pulse_range, src)) B.Be_Pulsed() if(expand_range) - src.expand() + src.expand(null, 1) for(var/obj/effect/blob/B in orange(expand_range, src)) - if(prob(12)) - B.expand() + if(prob(20 - get_dist(get_turf(src), get_turf(B)) * 4)) //expand falls off with range but is faster near the blob causing the expansion + B.expand(null, 1) return /obj/effect/blob/proc/Be_Pulsed() @@ -168,7 +168,7 @@ B.loc = T B.update_icon() if(B.overmind) - B.overmind.blob_reagent_datum.expand_reaction(B, T) + B.overmind.blob_reagent_datum.expand_reaction(B, src, T) return B else T.blob_act() //if we can't move in hit the turf again diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index 73604676d6c..945546333dc 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -2,6 +2,7 @@ /datum/reagent/blob name = "Unknown" description = "shouldn't exist and you should adminhelp immediately." + color = "#FFFFFF" var/shortdesc = null //just damage and on_mob effects, doesn't include special, blob-tile only effects var/blobbernaut_message = "slams" //blobbernaut attack verb var/message = "The blob strikes you" //message sent to any mob hit by the blob @@ -16,7 +17,7 @@ /datum/reagent/blob/proc/death_reaction(obj/effect/blob/B, cause) //when a blob dies, do this return -/datum/reagent/blob/proc/expand_reaction(obj/effect/blob/B, turf/T) //when the blob expands, do this +/datum/reagent/blob/proc/expand_reaction(obj/effect/blob/B, obj/effect/blob/newB, turf/T) //when the blob expands, do this return //does brute and a little stamina damage @@ -24,7 +25,7 @@ name = "Ripping Tendrils" id = "ripping_tendrils" description = "will do medium brute and stamina damage." - color = "#890000" + color = "#991010" blobbernaut_message = "rips" message_living = ", and you feel your skin ripping and tearing off" @@ -60,7 +61,7 @@ B.overmind.blob_mobs.Add(BS) return ..() -/datum/reagent/blob/sporing_pods/expand_reaction(obj/effect/blob/B, turf/T) +/datum/reagent/blob/sporing_pods/expand_reaction(obj/effect/blob/B, obj/effect/blob/newB, turf/T) if(prob(10)) var/mob/living/simple_animal/hostile/blob/blobspore/weak/BS = new/mob/living/simple_animal/hostile/blob/blobspore/weak(T) BS.overmind = B.overmind @@ -82,14 +83,14 @@ /datum/reagent/blob/replicating_foam/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) if(damage > 0 && original_health - damage > 0) - var/obj/effect/blob/newB = B.expand() + var/obj/effect/blob/newB = B.expand(null, 0) if(newB) newB.health = original_health - damage newB.check_health(cause) newB.update_icon() return ..() -/datum/reagent/blob/replicating_foam/expand_reaction(obj/effect/blob/B, turf/T) +/datum/reagent/blob/replicating_foam/expand_reaction(obj/effect/blob/B, obj/effect/blob/newB, turf/T) B.expand() //do it again! //does low burn and a lot of stamina damage, reacts to stamina damage @@ -98,7 +99,7 @@ id = "energized_fibers" description = "will do low burn and high stamina damage, and react to stamina damage." shortdesc = "will do low burn and high stamina damage." - color = "#FFDC73" + color = "#EFD65A" blobbernaut_message = "shocks" message_living = ", and you feel a strong tingling sensation" @@ -228,6 +229,29 @@ if(M) M.adjustStaminaLoss(0.4*reac_volume) +//does burn damage and EMPs, slightly fragile +/datum/reagent/blob/electromagnetic_web + name = "Electromagnetic Web" + id = "electromagnetic_web" + description = "will do low burn damage and EMP targets, but is somewhat fragile." + color = "#83ECEC" + blobbernaut_message = "lashes" + message = "The blob lashes you" + message_living = ", and you hear a faint buzzing" + +/datum/reagent/blob/electromagnetic_web/reaction_mob(mob/living/M, method=TOUCH, reac_volume) + reac_volume = ..() + M.emp_act(2) + if(M) + M.apply_damage(0.6*reac_volume, BURN) + +/datum/reagent/blob/electromagnetic_web/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) + return damage * 1.2 //a laser will do 24 damage, which will kill any recently-made normal blob + +/datum/reagent/blob/electromagnetic_web/death_reaction(obj/effect/blob/B, cause) + if(!isnull(cause)) + empulse(B.loc, 2, 4) //less than screen range, so you can stand out of range to avoid it + //does brute damage, bonus damage for each nearby blob, and spreads damage out /datum/reagent/blob/synchronous_mesh name = "Synchronous Mesh" @@ -260,9 +284,9 @@ for(var/obj/effect/blob/C in orange(1, B)) if(C.overmind && C.overmind.blob_reagent_datum == B.overmind.blob_reagent_datum && !istype(C, /obj/effect/blob/core)) //only hurt blobs that have the same overmind chemical and aren't cores C.take_damage(damage/damagesplit, CLONE, B, 0) - return damage/damagesplit + return damage / damagesplit else - return damage*1.25 + return damage * 1.25 //does low brute damage, oxygen damage, and stamina damage and wets tiles when damaged /datum/reagent/blob/pressurized_slime From af2e2da7ccac3c222208ae99eb0e2ad52b4f9168 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Wed, 3 Feb 2016 18:01:38 -0500 Subject: [PATCH 09/17] correct arg and var names, ho --- code/game/gamemodes/blob/theblob.dm | 2 +- code/modules/reagents/chemistry/reagents/blob_reagents.dm | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 261ae65f713..7bb05b18dca 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -168,7 +168,7 @@ B.loc = T B.update_icon() if(B.overmind) - B.overmind.blob_reagent_datum.expand_reaction(B, src, T) + B.overmind.blob_reagent_datum.expand_reaction(src, B, T) return B else T.blob_act() //if we can't move in hit the turf again diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index 945546333dc..a58b61dd7e5 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -66,7 +66,7 @@ var/mob/living/simple_animal/hostile/blob/blobspore/weak/BS = new/mob/living/simple_animal/hostile/blob/blobspore/weak(T) BS.overmind = B.overmind BS.update_icons() - B.overmind.blob_mobs.Add(BS) + newB.overmind.blob_mobs.Add(BS) //does brute damage but can replicate when damaged and has a chance of expanding again /datum/reagent/blob/replicating_foam @@ -91,7 +91,7 @@ return ..() /datum/reagent/blob/replicating_foam/expand_reaction(obj/effect/blob/B, obj/effect/blob/newB, turf/T) - B.expand() //do it again! + newB.expand() //do it again! //does low burn and a lot of stamina damage, reacts to stamina damage /datum/reagent/blob/energized_fibers From 7fcc24edf915624198d56d19d6e5f79ee6454ba6 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Wed, 3 Feb 2016 19:46:12 -0500 Subject: [PATCH 10/17] Blobbernauts can no longer pull. Decreased blobbernaut health to 200. Blobbernauts take half brute damage. Blobbernauts do around 3 more damage with chemical attacks. --- code/game/gamemodes/blob/blobs/blob_mobs.dm | 22 +++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index 7aba1651893..895e025eb02 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -21,6 +21,10 @@ /mob/living/simple_animal/hostile/blob/blob_act() return +/mob/living/simple_animal/hostile/blob/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + ..() + adjustFireLoss(Clamp(0.01 * exposed_temperature, 1, 5)) + /mob/living/simple_animal/hostile/blob/CanPass(atom/movable/mover, turf/target, height = 0) if(istype(mover, /obj/effect/blob)) return 1 @@ -48,11 +52,6 @@ var/is_zombie = 0 gold_core_spawnable = 1 -/mob/living/simple_animal/hostile/blob/blobspore/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - ..() - adjustBruteLoss(Clamp(0.01 * exposed_temperature, 1, 5)) - - /mob/living/simple_animal/hostile/blob/blobspore/New(loc, var/obj/effect/blob/factory/linked_node) if(istype(linked_node)) factory = linked_node @@ -151,27 +150,30 @@ icon_state = "blobbernaut" icon_living = "blobbernaut" icon_dead = "blobbernaut_dead" - health = 240 - maxHealth = 240 + health = 200 + maxHealth = 200 + damage_coeff = list(BRUTE = 0.5, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) melee_damage_lower = 20 melee_damage_upper = 20 attacktext = "slams" attack_sound = 'sound/effects/blobattack.ogg' speak_emote = list("gurgles") - minbodytemp = 0 - maxbodytemp = 360 force_threshold = 10 mob_size = MOB_SIZE_LARGE gold_core_spawnable = 1 see_invisible = SEE_INVISIBLE_MINIMUM see_in_dark = 8 +/mob/living/simple_animal/hostile/blob/blobbernaut/New() + ..() + verbs -= /mob/living/verb/pulled //no pulling people deep into the blob + /mob/living/simple_animal/hostile/blob/blobbernaut/AttackingTarget() if(isliving(target)) if(overmind) var/mob/living/L = target var/mob_protection = L.get_permeability_protection() - overmind.blob_reagent_datum.reaction_mob(L, VAPOR, 17.5, 0, mob_protection)//this will do between 7 and 17 damage(reduced by mob protection), depending on chemical, plus 4 from base brute damage. + overmind.blob_reagent_datum.reaction_mob(L, VAPOR, 20, 0, mob_protection)//this will do between 10 and 20 damage(reduced by mob protection), depending on chemical, plus 4 from base brute damage. if(target) ..() From ba4f5101f7cbecfeaa78084214b73377bfd1be43 Mon Sep 17 00:00:00 2001 From: oranges Date: Thu, 4 Feb 2016 14:33:57 +1300 Subject: [PATCH 11/17] Remove uncessary spawn from turret code --- code/game/machinery/portable_turret.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index f9d235b8a6a..fbdd98e3282 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -468,8 +468,7 @@ if(!tryToShootAt(targets)) if(!always_up) - spawn() - popDown() // no valid targets, close the cover + popDown() // no valid targets, close the cover /obj/machinery/porta_turret/proc/calculate_targets() var/list/targets = list() From 8d4351fd04651c08cb8a404824ef66beaed7a2c1 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Wed, 3 Feb 2016 22:03:22 -0600 Subject: [PATCH 12/17] Revert "Fixes https://github.com/tgstation/-tg-station/issues/15127 smes issue" --- code/modules/power/smes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index f682efe7573..d1585e5b40f 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -46,7 +46,7 @@ component_parts = list() component_parts += new /obj/item/weapon/circuitboard/smes(null) for(var/i in 1 to 5) - component_parts += new /obj/item/weapon/stock_parts/cell/high/empty(null) + component_parts += new /obj/item/weapon/stock_parts/cell/high(null) component_parts += new /obj/item/stack/cable_coil(null, 5) component_parts += new /obj/item/weapon/stock_parts/capacitor(null) RefreshParts() From a251e61621bae68294a20ab7816809fdb252eab5 Mon Sep 17 00:00:00 2001 From: kingofkosmos Date: Thu, 4 Feb 2016 19:50:08 +0200 Subject: [PATCH 13/17] Reverts the span change in time of death. --- code/game/objects/items/devices/scanners.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 87ba0fd8d73..ae8d23b9ecb 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -172,7 +172,7 @@ MASS SPECTROMETER // Time of death if(M.tod && (M.stat == DEAD || (M.status_flags & FAKEDEATH))) - user << "Time of Death: [M.tod]" + user << "Time of Death: [M.tod]" for(var/datum/disease/D in M.viruses) if(!(D.visibility_flags & HIDDEN_SCANNER)) From ccc229a157588c8b01efc0ed2f49d2e4aac634ee Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Thu, 4 Feb 2016 16:29:23 -0600 Subject: [PATCH 14/17] Fix bad checks in holodeck --- code/modules/holodeck/computer.dm | 42 ++++++++++++++----------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm index 6f31a22f717..5f08f86d952 100644 --- a/code/modules/holodeck/computer.dm +++ b/code/modules/holodeck/computer.dm @@ -150,29 +150,25 @@ /obj/machinery/computer/holodeck/Topic(href, list/href_list) if(..()) return - if(Adjacent(usr) || istype(usr, /mob/living/silicon)) - usr.set_machine(src) - src.add_fingerprint(usr) - if(href_list["loadarea"]) - var/typepath = text2path(href_list["loadarea"]) - if(ispath(typepath,/area)) - var/area/target = locate(typepath) - if(istype(target)) - load_program(target) - else - world.log << "area not ready: [typepath]" - else - world.log << "bad area argument: [href_list["loadarea"]]" - else if("safety" in href_list) - var/oe = emagged - emagged = !text2num(href_list["safety"]) - if(oe == emagged) return - if(program && !stat) - if(!emagged && program.restricted) - load_program(offline_program) - else - nerf(!emagged) - src.updateUsrDialog() + if(!Adjacent(usr) && !istype(usr, /mob/living/silicon)) + return + usr.set_machine(src) + src.add_fingerprint(usr) + if(href_list["loadarea"]) + var/areapath = text2path(href_list["loadarea"]) + if(!ispath(areapath, /area/holodeck)) + return + var/area/holodeck/area = locate(areapath) + if(!istype(area)) + return + if((area in program_cache) || (emagged && (area in emag_programs))) + load_program(area) + else if("safety" in href_list) + var/safe = text2num(href_list["safety"]) + if(!program) + return + nerf(safe) + src.updateUsrDialog() /obj/machinery/computer/holodeck/proc/nerf(active) for(var/obj/item/I in spawned) From f96290ff810a6f0ff502a80708ac40f910b38cf4 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Thu, 4 Feb 2016 18:54:01 -0500 Subject: [PATCH 15/17] weakens death EMP --- code/game/gamemodes/blob/theblob.dm | 4 ++-- code/modules/reagents/chemistry/reagents/blob_reagents.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index d6737d4f26f..3b67eab6a7c 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -101,10 +101,10 @@ for(var/obj/effect/blob/B in orange(pulse_range, src)) B.Be_Pulsed() if(expand_range) - src.expand(null, 1) + src.expand() for(var/obj/effect/blob/B in orange(expand_range, src)) if(prob(20 - get_dist(get_turf(src), get_turf(B)) * 4)) //expand falls off with range but is faster near the blob causing the expansion - B.expand(null, 1) + B.expand() return /obj/effect/blob/proc/Be_Pulsed() diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index a58b61dd7e5..38dcc9bfd94 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -250,7 +250,7 @@ /datum/reagent/blob/electromagnetic_web/death_reaction(obj/effect/blob/B, cause) if(!isnull(cause)) - empulse(B.loc, 2, 4) //less than screen range, so you can stand out of range to avoid it + empulse(B.loc, 2, 3) //less than screen range, so you can stand out of range to avoid it //does brute damage, bonus damage for each nearby blob, and spreads damage out /datum/reagent/blob/synchronous_mesh From a0134f1cba7cd47a5d289412b9dbcca4f132e87d Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 5 Feb 2016 00:02:48 +0000 Subject: [PATCH 16/17] Automatic changelog generation for PR #15176 --- html/changelogs/AutoChangeLog-pr-15176.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-15176.yml diff --git a/html/changelogs/AutoChangeLog-pr-15176.yml b/html/changelogs/AutoChangeLog-pr-15176.yml new file mode 100644 index 00000000000..8cee123d230 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-15176.yml @@ -0,0 +1,12 @@ +author: Joan +delete-after: True +changes: + - experiment: "Blob expansion is faster near the expanding blob, but slower further away from it." + - tweak: "Blob spores produce a slightly larger smoke cloud when dying. Sporing Pods spores and blob zombies produce the current small cloud." + - rscdel: "Blobbernauts can no longer pull anything at all." + - tweak: "Blobbernauts health reduced to 200, but blobbernauts now take half brute damage." + - tweak: "Blobbernauts now take massive damage from fire." + - tweak: "Blobbernauts do approximately 3 more damage when attacking." + - wip: "Replicating Foam will expand more actively when damaged." + - rscadd: "Adds Electromagnetic Web, which is light blue, does burn damage and EMPs targets, and causes a small EMP when dying." + - rscadd: "Electromagnetic Web takes more damage; a normal blob that hasn't been near a node or the core for 6~ seconds can be oneshotted by a laser." From 303a49147c9f0161c1587699f96ca86d4df8cbb3 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 5 Feb 2016 00:59:30 +0000 Subject: [PATCH 17/17] Automatic changelog generation for PR #14911 --- html/changelogs/AutoChangeLog-pr-14911.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14911.yml diff --git a/html/changelogs/AutoChangeLog-pr-14911.yml b/html/changelogs/AutoChangeLog-pr-14911.yml new file mode 100644 index 00000000000..4f71e735a88 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14911.yml @@ -0,0 +1,9 @@ +author: MMMiracles +delete-after: True +changes: + - tweak: "Bulldog now starts with stun-slugs instead of its usual 60-brute slugs. Slugs now cost 3 TC instead of 2." + - tweak: "Most SAW ammo has been slightly buffed in damage so maybe it'll be worth buying now along with a slight cost decrease for the gun itself." + - tweak: "Incen shells for the shotgun now apply extra firestacks on hit so it actually sets people on fire instead of turning them into a light show." + - tweak: "Incen rounds for the SAW now leave a fire trail similar to the bulldog's dragonsbreath round." + - rscadd: "Nuke Ops now have the ability to purchase breaching shells, a weaker variant of the meteorslugs that can still push back people/airlocks/mechs/corgis." + - bugfix: "SAW should now use its in-hand sprites for an open-closed magazine"