From 20bafdd85589242706698517ce4977879733c140 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 3 Nov 2019 03:23:59 +0100 Subject: [PATCH 001/135] Unmodularize phantom thief glasses, missing durathread headwear sprites and space-nam clothing. --- .../modules/clothing/glasses/phantomthief.dm | 0 code/modules/clothing/head/misc_special.dm | 13 ++++++++++++ code/modules/clothing/suits/miscellaneous.dm | 11 ++++++++++ icons/mob/head.dmi | Bin 196947 -> 197381 bytes icons/mob/suit.dmi | Bin 361247 -> 361653 bytes icons/obj/clothing/hats.dmi | Bin 94748 -> 96001 bytes icons/obj/clothing/suits.dmi | Bin 125674 -> 125954 bytes .../code/modules/clothing/head/head.dm | 20 ------------------ .../code/modules/clothing/suits/suits.dm | 13 ------------ .../icons/mob/clothing/space_nam.dmi | Bin 653 -> 0 bytes modular_citadel/icons/obj/clothing/hats.dmi | Bin 463 -> 0 bytes .../icons/obj/clothing/space_nam.dmi | Bin 591 -> 0 bytes tgstation.dme | 3 +-- 13 files changed, 25 insertions(+), 35 deletions(-) rename {modular_citadel/code => code}/modules/clothing/glasses/phantomthief.dm (100%) delete mode 100644 modular_citadel/code/modules/clothing/head/head.dm delete mode 100644 modular_citadel/icons/mob/clothing/space_nam.dmi delete mode 100644 modular_citadel/icons/obj/clothing/hats.dmi delete mode 100644 modular_citadel/icons/obj/clothing/space_nam.dmi diff --git a/modular_citadel/code/modules/clothing/glasses/phantomthief.dm b/code/modules/clothing/glasses/phantomthief.dm similarity index 100% rename from modular_citadel/code/modules/clothing/glasses/phantomthief.dm rename to code/modules/clothing/glasses/phantomthief.dm diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 0dea8bfe79..eb5dd983df 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -301,3 +301,16 @@ . = ..() if(!warped) warp_up() + +/obj/item/clothing/head/flakhelm //Actually the M1 Helmet + name = "flak helmet" + icon_state = "m1helm" + item_state = "helmet" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0.1, "bio" = 0, "rad" = 0, "fire" = -10, "acid" = -15) + desc = "A dilapidated helmet used in ancient wars. This one is brittle and essentially useless. An ace of spades is tucked into the band around the outer shell." + pocket_storage_component_path = /datum/component/storage/concrete/pockets/tiny/spacenam //So you can stuff other things in the elastic band instead of it simply being a fluff thing. + +//The "pocket" for the M1 helmet so you can tuck things into the elastic band + +/datum/component/storage/concrete/pockets/tiny/spacenam + attack_hand_interact = TRUE //So you can actually see what you stuff in there \ No newline at end of file diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index bc885868c5..306bc7dbca 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -633,3 +633,14 @@ flags_inv = HIDEGLOVES|HIDEEARS|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS|HEAD alternate_worn_layer = UNDER_HEAD_LAYER + +/obj/item/clothing/suit/flakjack + name = "flak jacket" + desc = "A dilapidated jacket made of a supposedly bullet-proof material (Hint: It isn't.). Smells faintly of napalm." + icon_state = "flakjack" + item_state = "redtag" + blood_overlay_type = "armor" + body_parts_covered = CHEST + resistance_flags = NONE + mutantrace_variation = NO_MUTANTRACE_VARIATION + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 5, "bio" = 0, "rad" = 0, "fire" = -5, "acid" = -15) //nylon sucks against acid diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 3d8f26a82e2d6147f90042a3f9cbfb6c1507d66a..07aa08b42715682b0066d11a302a2685b54d1e78 100644 GIT binary patch delta 21858 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 OCH^t7GA=%OG3GyBM+{T| diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index b0fb5984c32bfbd775d1394daa3ddc0c31f5744d..bff0c8f6f6a83ec5ae520cc80021d9df6dd05823 100644 GIT binary patch delta 25678 zcmbq)byyW&+wRaQ-7S)WfPw-d9nvi+jkJKY)X=SfG$`Fj3rIHz(kUX+Qj*fJ_nhGu z@ArP^I{%&P+IwQnTC-O?ao^9gc2*cgT_i;u3wYqIt>-55!qvjX*4fS0$q@j&-haqY za-tK&?;kxaqWYxkq`@xfdQ>2T=Py; zE{Eoo>)90}=#MD6Iy#%3r?*cgYYyL=503G67iLU;@m%7(;gO7 z4>lzd7jisZEzMU%6;mVWIwpOpb41iksv@T1gFWIvkrdP!OI84s@yl=562FywU>W=q zy@P-g|2471GVyO+b`0lr(#*Lj-6V&k0e+BLl>vQcO3dKCwimzGgLxf)eoj}1WSZ-V zYuk*Dj(n3ZECoV!gazV!Wc>;Ta&~n;@`qkoC>T;~Vf`ZfIK(qRdwSvKV=*_`=CdjG z!|(HzvnTnbtH!&5BxL*$1@>NVH6|0caG{ZC&stL4pOC1p(7i8WPtx#lQA9A!pH-(O zV|Ily?{eeUwj@IC)v0 zB)sU+Hz7sqOW>;=B)N<;7d3qzaMhrrHn`04yV`A2n2=h2DEUs}Ow(HLgujlYYH8d` z@>!gD?Rl>4Qj{t0l$YdG5a~Xy#tJ$Hz5M3K4HU zec?QLY|&npe7ZGFhU>1S6D!s_I$HDzp(r!(9+@Oc$^!z%IzhFiB;ub!2Lz9F8AR1_ z8_$IeIr@e1m_qB>-vSR=M{^$EldiqZTKwH*4q(lHBBFEuWIrIvFMiq_W%}!VbScSQ z>Nmfs)P$qcv;-=QJu(u7gFe<^44@^`hxUEKEe&WT0vuLYRrQ>Y1X5+z7u(yiZL+N1 zCRC!)fOb8GVX2Ap-%j_R4zM}dy9Ze>fzI9A>kNG=x#l)JEE2oxUCitr zx#sdkmq(cj>N{KJljy-sCFo3{A_>_u&&*NU&%l5n?}eXttxOskqP|lOzp2#Iu9X?X zmt=MbbqKi=$7WJpZ1ri<_ZC_cq33&sMg+YEA5cxvB06H=ogkI1$2(n>%y5D?GqLJ3 zWgE4%t9NoJi?fqtNH~F}R<^GjspaPc3j{rT(yK&lJAXOp=`UL2Eam4aCk(kyU(`!j zScC4GpBn}n#oEmxiOYWO38jcpvYBkhYI?j^a?+#CwF3o_9NW4KttobuT-bw%#eT_x)FoUWGW|AYUV>azT$|CArF9tEmvWamoh-kv8q=s@mmNqLu z*KE|Lg8(nsFF^Vr)cBSGYpquhiC$UW18|igw@8}~edKMTCL$;y43i1m^exT8yAGkl zwd9o0YOUaN_`+YcT)B;Zi=^L9I=H9g7Z63~Pa3%U<(*E22|6zA*-x#aMMo2#w|~;F z4Y_nCO(_dj5(88E3>sP5Q<~CSRW!C8uj%$D-%e{G*zS9O7i*goKr~*hX7Mhhw7366 z65d-$q8gDWBme*=KtU#$0V|vV3kCk7!e2D_i{8M1h4GyU%Zqlpbsu4r0#u>6mb3~3lKjmk=nE3gV z0Kg8F`n;JNJ@);3Y0Jk^@gQ{$bil^R32Wi_JzJ~u)Ft;E32x}vw{O@xe_}Z*`}*W$ z7uQ`n_s_cR>g;~vaj>&v0f}C?xVTlm7cR$A=S}N>&yJ+_$qDCf0xtM{etvv*HhleS zN?vxh#GJKzjDdz2h|3!3W{xBr71asR%p%EdK?n^i9fAYq;7 zi_i8a>t2?AwTu?DdIBa~REGOM*}bPSIEs?dvdE3uDliSdoM;sac=<|M*?ZH-YrzNz zAZ56a<4S`ZE<$G)3QC~E%Yo}zY4OZE{j^D0J5J5y9dn|{*+ma~Wn}{`xcf%+>SEAk zhBy}A8f5+_k_wtTdVyCb3ia=>|1lv%c(sh@w>PxjqSXZlAbWc|3X9d!_lXznub#b~ z_(iL`-qVx+@KMH_CpFFkzp0?t!kxvxn zr$fv{sBWGZ<8Gz5j6R^`7btD+;dc2o(SM+CB|;BsEa*+;FT>{InXnR?sQLcF%|oBl zYLq+dzDgTPK0rjlq!A>*c`1l8!9Ss4$JO-_)YsuIGb(JPe#f$CNg}mo87)DC^OPxy z8C{y@*9h-~feV%E2Bjolz9gBfOxHLSGchYqc_m6^%efRT;CCB0w&B)ZC(-*rrnb%f z{$*1llUoEU!Fvq9_qQaKqG?HFEc1&vvog4$&qpK%RGYFKB!TH>YvS;=|#7lDm5+Dm4Ck6E~|#s39fO0qus4D@%=k))0XfssY##&p)oa` zOfbutSGAtQ!Np?>o({h@RXy%U*PmN&-Fg?Ii;0y~l;FLIg(?a^tp*`*ap{jcGtuU_ zipj8o%t5=z{3~6i;uh;i)?B;scl9#LvVs=Lu~$IP`c)R@JH9U0=%}KbBIoR%8U&W3 zb?dv$tIZ%}d*{&sC9InGU%O4dfQAm|D@nUHPPS5uo#M9JV2l3)=wwVcVNdKW|CMp~ zM!T>2>(~oIAUV8!>>-Gw4XaDtlWPnB{}1%XL@WZXBi(fMxiB3b%%hjjqhS?0jD47N zhXI20v?AfVYTH!<6-4Z;+OKwoOFQF>-Ti~^`3gB$#Rq+~*3Wsf+5z#FUAvZ}`9<4O za_r-!oQ=oJFP*vt!IhXp=$GM4-#Ij#C3I6HJqo(p{ilbuu1RHW<3LP8O-50Ts>d_|_xuJ4Ho!V)gw;-+q1dYl!-} zCrAxsXJ-SAjg9FnfqE<9F9k)7RQ)4zss8Ybiqd0XVBm-sksl6Jt@g)~GJ%g!3Iz`p zKHuCVdvWpdGJ0mv${F4smI&BXkKGf);a7^5Ko1~7F`{q%GAwvUM36M6lkdkcJqOR1 zP$nQk#`&V4&T=t4ob7~Fo*$bj2L(X)LvzWMCX;<{>l9wjf%Wo3D_{B%lLA>V+U-U` zqUlrS2;yXpsA#L~U1cn8uookaCCaplQD2|!I9%%BbzSS0e8}hy7Au)tFiLByq@^{j z={?Sn+1awO71Gp6ZVfvcN;vSt<_720*$ALDP~^X&Et z_|e}5s+&>^dCc(ZWbO&lYT76=*pzzl99pUoSr9-okkx{qY zGT_1-v4wh67tauyK0QzsM!R;Vhw89=%RtS`vgZ+loUe@k zTyNbVy-F2tjOiKEk74Vv?-PMD$@~BqP}z2zyQNM0cmy2)7FyA=6PXv7O!<`Arx{=9 z?>uWPN>(#&Ic49CC+5Mp9xv4M;ci25{F>Ck6H~$l^J$iPfKL z1B!uxRUtoqI8fm;{~8*3TFt7f)EGi$=yKoMLku62xUq4L3R@|gjDzPca2pk5rulh% ziG~)UjuR(kWA~?fgR!I9lnC5s>@aC+e#P=FyaBOr?qUkO2}ax8-0jxQ^cYhY&zDC} zpno&L_zoK=p!%sa(Fy?dWMW|Uu^kT~ytOgqOa!$?WeGv%XMr|Jp@BIq*0 zikS95y2&q4+E;(MuY-e$nd02z8aiy^>t>NTGW)eBa2eYV+R!bu)HpF8wX&al_re)( z^Q0)v`TM$*wYJh*@4Z$$Lmx}?$)tJo<6~u|n(dvGuLZAfF`Xuo$MFV$bG?tccig#p zIp!wyMURJnIedKnnwXn{w#8Vmrlw~3q{*!MTb0YYtl~Y)@{{S$&nq&Hk7Up+!>^h3vD$VOeHVG*7@ zKhbl4+w#x*-O{An@1(H-MPlrb!?}$t(#G@Z>jf^3yOI*9F4mSH6J0!(WJE6dtOBL} z>sRH!y2XL)<~&AoGt38Xm@m6YnnW(|H``Hcw>!u>IS~=RWM5K{pDcM4!7M4no$Kq5 z^OoUdSPlm%H71H*4mMo*;WVC`XLcQXOjxCA{A<^*Hnl~!5;d`dn9k6HnXY7jT24HZ z%*%H}8HRFSt<(5GeL{|cIOf{|^%vs@)0~=*T`5Gj9783rqwx4qn1O7YgHOy0rXie@ z`8~E7Ierh46(u$#utR|IU^Db4X^!{tv1hGf5$LJ$Nd=8oPZ-@V#>eNQu`zI?qnCt9 z1BCmrrPjW&rMS=&oSBf13LLdpRuXoas&BoXgh2)w@9P*4HA10<560(lX=yl%)%^;& zQoW?(?1pV|_kuDhQ%BJ3Aptjq;ZSd3?}Mp360HmwA6_u4nI&wM@$OAi{`{T$ zoC{%Dl{zI03a!pdJ3Z&oRnEv5o^x(|uHG7y*3DV9g~e;PUD!!OwN;l5Ul&JdI3v-Npik0%XUJ{zH!r14tn$Vq-11QL z)6)0?0CS3%MCN(RAkI7Vxk7Fo%_5&b5^!-oCGhQAWBjnd%nE?TmdFUn#QlhNVpyLj zH}uP~%$FgVCSg2^j9YLy{8ZEk1+EF#KR$gC(-!}#1Howi_+s&}mx4t6ZBuC}?#aoC zqIpDXP$$#&&W^^jXXLeQvpcf=l!k1_vDK^5_wsM2x0r>#nZC4JIhnh>wF3&O=!p}j zrKJ^@mP*;$az5baPqM_PWyX@2)$jOLKi&NsCW!HAX^|5Xn%d8v-PT&&XWDtyX_ry8 zhfGRJ8vF{|E~CRa@87NlTV;3-Y!lX1C!Z$NC`f&n%N+@Urr7`#qRC&sGJ%J099D>sYtljde=zBCMwPRQkfL3ji}7RQ1* z&cPw-EOsf=Y&$l+HuQyxViIOhpI~cboA%v`Hi0;q8CyvLG!e3WVqp8w*Zr>5{5$mH zlYX`|jsm8T4jTdHdkbWU_m8xINAIH+2yUYXnMzoBKgR4L!zA9^qckJJL6-z_al+3( z*9FB9wZ%l+`p<#BH2C;8O>@`J%UEQX8r=E#0I2|8H9u;~SPy=aSAWF=(4?hHt+>C* zxVpH&)U33$)cJT*BUPCVrYS@I7q0|9E{4EtvY2}e>m7p~qOGkhwc_*c?k*qA zn($p3h{15TtS6D$W(L~snYEPkz0b3)@n?1-UeIj(Y7`wqW2Gn-rG*g zCcK?zQ5B_QtbO=ZSX_mZ32R3b3}mULeCytZbM~hSA$g z`n~USpH03sj*VMGmnp@P$RxpSX$f5zFuta?aq)?N#$*kh`guj{T{*i9WXV`=kfH}k zrq)c3i}L|mI+&N3m~n=2ff7sss7mQG;Jdtuh4I+;)B)|aq=~8(n_GI>p9qm7s%t|5 zzq(uH@~pN{pI^nAbc;XtCa!2TXRT=YP4c|W?fxK+`uD}~t~~;y6W));F-r6giw!;j zl-vdpy?+L)u7e6bn;tTA8`e-Macyjss*#e_!#!-%&m7XVQN zI=!-F?%QFUf!=>9a@RW?dJ~7+AKO%U`C$DcCJ2A^E3*jr^3YE2sG!J>d3WkBEX6_ZYDJv`M{d7CHHK~V2CN}I6UNt^H zcl1X=4P=0!G?$v_+~m_!bC43+K55I~RZ|lm-#fEI;6^C&#>O9`Gpi{H^#N~ke6q{BjSl@2Y z`5k)0{#yZYR^PySa&wt}4)u|GI6P0{=Ya$(2Gc(IKOm`#oZZnWG*t_QexBBwA!`xS zxbD2~!X4=sk5{&3hGfFcSW7MVtB7+q+_nKlXAmoh=sj zU$F*AErZxZNH2(S- zWwxa%_1kH|B^yMF(67>d%3CHmIgJ?g7vy@{J77nl%6HKdM!X;<31Dn;;X@FT(FNmU z=AI+A#;$f3f^o#{FpK;JL8z2sj>XJseseQzj=KD0?$?21*ccEIgj=ylHeP~9Z;2(;v;DK9LcK(0Y@9!<{gh3ORCfSPsnHQ z&eN!X9raYxy3flZk@EMeAEn_ULHp^ShacN_b+~J+mU-PPUR}U~LP?=tTZODQd^iq` z1jlmSv_rgXSP>xBed zPq}*i!*mFa>6yZQC4DoNjMSd=7j%~8h#E%&wL_qrRt#iN=lP%>QK6i&`?g0uGVk15 zd;nKEw*Et8&x42p!BVx=)(uG{^k1j5^;5SM5TM zj0k`-)~tEwYY9z>mT0;ki*w`x0T~H36Fq9o(>kTyPtCj!9Q0Btrg)5`uvl@DuYF(R zUbcyabeUm?F!6HX#XD1Fo)S>q!lb*rF8*~XIHj%8U@Gy-SWF6m*u+MckdTm!cY1W2 z{|@QTOa|@L;qzf=p(vU#>CYgi6vFv~BO3s!i#ai);5q{6__400(Rya2@_><~H!tbeEU2i+ z30&8m2vjG3zM87xLyi&fR(k*K9C%ZoaR9t`GR=p0`~2buf48{6?%v$734QF$t0xB?Xkg^8U*bjJ^y)Nf~rND+k!<#tS)DG{cmMEY$s8KC$!nn11-VSaZwLBfl= zuN-By2??C2G8J#k$+Wc4u;c2A$pV?a+%MiiZpL4u1V~g7_QkjrG(2NrK10%AhodMG zN69b|GZE=#KjT6NiSWauj>r~6m{iD!QJ8{IWh53mfUe-+O&r3_Ttc8C%v)2#SaM_d zULKP~lVk`w(*vQ@?>~hSnI8yY510mMknvT1j0r+D_hwU_$y!71^thd7k+;`^2;qXh z(U1DIiEFWlol%VwZ|`liBYYFLN!KG~vj%a@))Q(69f29}su(88t|{ULL#l-bQWlVSiEY5{ zPvsCsO;TQ`PCD&qd$@U9@Gif#fyJqKc6VI(Im@8l_3TZ<^6K+S_m%L@Ym>)XZ6n;7 z4PJ^D;J%AJNJ^6>Lmdqnuob1%|Msv;@3BqWrW!Ys*YQfQ4Rr^!_>}H#h3-?5!<; z!)iDaFM$)Q5u^8rTQ)=@0GTIF!1!1hCcS2ZUjXtqKmm~~3Zt(V(+lcOLa`?jG8zB} z2KgJl7nU%iHfdNRwD8clEh7oA;G|JgXD6D=c|2kU;c$Uw-=@T20?7oi#~O$*ojpP|V~Xm8I^Kv3`woQr}jgd#~X%q10&pX%$G+1Wv? z;o;$QcFC0!B_*YCw<`-Fze|C1M-acDpkPcZ>n0Xo^;59ZlnCYxX&ASFPkVj|@>#52 z-;^ETl1zjod4};NIgthmacirn;EKuR~&laI&*w=7u@` zWJ1-KgIw8YlAq4@Cqz7LXQMXrZ%i_a&&Dh*;uFlI2P(i4AUc#aps#juRS}5XVoq=M zfA6>}Wx^ZUP#%5khOz9pE1_kjLXIes7 zFP5nBL&q2u{SHfz>gd5aMCgE-!dnHk&v4pB5b~j^fA{`9-E+5bSq@H4Nqc*)nhnv9 z$LMx1U&<;d;P5nUGQ&v4CNsqJ5>CtjOqAvzet7o*z0doQZnJ{(WjIsgHXa*W00%Ut zEFW<87F)Mp3&E7sefrsswUw3m>DO2;j4Bm2(x{Xtawk)efdVH&|JCiiyQwIKOxTsP zx75lqyjmToiX3bHrG9Wgl}_I$Ub$nje+PJ3yRxT44(V<`whn3 z6Fm+bN6adjsI)*Zp2;9F>Vq5Dz$mA13c_OW3UFL(qhEY|@ao6Go9X+=Mfi9QLm7*! z)7}5w7=$YwCT>1p@LEE-{D8%%RszK?RLA}F{c7;B=@V*0ISbsn{@o3D`FxRF_rDv% z=te%0XSG^{VglyS`BRWbmXq=hITorh2)pRDqKcYYY|UY zD{Nup0_F0Eg$+%#nwDzyjtg%y=iDARkt zaMM4$;enHHtk08w``v?`#^o(QRrT(v-(8!`gX5Jihdmo!7YN~|?bxkzaXc3Lgg+{i zaAg0%{Ie%VS6Mry;?EFjGi)2tY)bwy1$!#Z;AoLTP<}~Cv|}KNks3Ml$=@6@)VFy9Q=CHO^2g&B+#!(C4BLEbMJSQOm2SxzvFivMf^Z_Ji6a0H6-O z%fM5YP~^K;mmCpuvW6K7M-pMb zKw!s*D1Xe`*Z*!NNFX_5>^MGdUq86R;`6gxae+G7*|b*Up`ajIfMcs^YTLL?jDkni z;v2a@VvjKs)loihv^$Y2RZ|VY~7xp{01)po?9Z*rF z)#iU#k^bEO-E}oqi6r1c9p*Wj`_us^Ck+hN*t_8~GCio`{4jkVOJ?Czgm@?#V2*Gi zY~2((uF!n`It&t+N?GE+E*f_su@Qc)+;A!K5&PH%>FHY%+m>#Y4nE%VWKN~r3e1Gl z|9)2<@UJ$VS6}X{ElyM-M^1O=2e{f13&qHtf=V{yKa&l{u)+nuCYH~EV%v{B|EhgB zwrB)2xs|p5IadPNMf#nu#gUrZqfj`c>NdYG!^eAkY62_C-XBS3^u7BmV7e&7gRgc4 zA3l6YCuj%FW3<&c=m?~F7i8`$7ch?{*q$A#pfUdL97^L?*NY1#$Rhk&#ub|B!H64O zW6C)wSKMI#d}TH8_zYdy7IP@gD5mANvYV&J>XhyqKT#t%NqOJwbO?3L(%S3-1J9ii zD>*GK92v;Ofjtp}diSo?&OPCnsHi!4e%x%PO-5{xnV+8*qtr~DlZEoE#4v5Kv|Jxs&G4S|EC@s(!LTZTA0uPg*;lJt(Jbn`NU zKv5VK%xo}r=2jveyg*1$`t7DnU0&Z&+-G-}Qso`o;LXl=5##2fA53hHN#ifC`sfy* zJ@OPzHaC5ehL4|WYBaZw7%EL*(+$TXo3{G%X0%5!lkdVp^R6zO0p3a?kzy74YQ5!m z$S%0v;=nzOtEL1^*9I0uQ6ncg!82$Hg*}~ymZTokvOptXa8^}`bMiqQWv4y|q0q9nRX_wS17Mh~#7YzPGxKA_Lwb3l6?*Y5gL* zJqrkk%XAFUAd|d9GIY`OR$4$4S6+@Ebz$Mlhj=^yJ_Mh>Wgr{klN@_Z!6!F@-?&+0 zhRH;OPBq#`&s4B^D}*Tm6%~oHHZ)duMh#yvxGCYcC){VWJI^LJb`iCc3~ELT~qU5NUtg~EEign$|1T5SHih5 zxKde}SnxE`j6ZPQ!S5CWy)_h71V=Gu$}0nt69d4Lh{2(usb~Dik|LT$4y*c_pBKf9 zqjO{0{F*-b2C-M8hz(>B#U5yPvI=jEiVe5K$vfj{19eRc_J~t9lFPc(+KF!fA0r>wM)7EZ9LkUO1($~8$F~1`-@-z za{!p=hH-F(6&G(N!9=8Z5pYf6$tx4j1pCex7V6xxvQ+rt!~{y4QJHQmiucR%(NR$% ziud^hGRo0WZ(~1Y@%ldU#fb#fUg5rsMhKaLkr{g4{aahMazxAlnw;yg0Gz_(xQ&{l z-PK`=9Up;Avbn)YPoYH+@(Yo=J(T_swEtFvhDESxjJ0vF+>OoZ)kKUNy5!QRX%HSh z{_|%AK9&+WtV%-8O96Y`ZBuX%2hgRy)93-V>x}q^IfRA7kh=s>% z5`Lsq5wsjk`K}&3uW43?#+#cq;e3$ZC4@BBMvQ_N**uqrd{Cstt(%z6*1fawQ4_z% ztVrJ0b+M+E{?XjpaSU%~LCs}oRn4KV?+tDBULkElJ!D@Af!`Wki+C=rTpw+>U&Aju zy12o3;TO=3?wM&k_z+LTb1$D(&`~)Oy19Y_m8xFeuSV~c#pB)t{5pplKKA~iRAqSy z4SU|}f?l5x{?)bfO6xY^QsgahFKJ4IS1P22)OzG%eXrNTlRLkJ2J;kV@mtNj4gu{K zuGi;+qVl1Tb?^X-(MV{>u(s)Qoa{Vynnbw|f}rQ^m*?C2yMKQ1$Vlh4O{(!vO}-z^ z;EH{^ySMqYTeoD~`b&BV?Vq#=FTWWE@1qUEFx=lf`rJDjxGiVPPdRO)J(2rZI44kx z8r0Qpho2h}oJB8Oh6KGjs1si5*QZ`(-7U<6wrK=EQV<2JU{yAVO}-F~{r2G0lY>lA z;TFgQC;f2vrU**Lw7ZWr3ryhMIOQe!F{D6+_&AZu;~p18B<7P^o6H)2M2d+Gg%)h{ zj^ktSSuYZ>vnokPwMTmIu+s?4s`bHZ?N!ZWk`^XJ-ekw?+osAIrfstlOgZ+*hjnRQ z)Zs(@9GAv%C!QX*-*uLIx7^=v07-ipTLSb29hB3co@&hFB}c0CBlo#|nc~*$zh8m8 z_|S0J!w*rzojHQfk?w*E*ub~TDUV^qV(VfF3rMp3$K8BEMbP}r-+J&GIw|vUhL;$mX=PDp$6W};#hc#Y~F-T6t_`Vh+@I(|>AVzc_i_F3KAUIX(y z@NhnMHa3=*9LXO2KlR|9gj_cpo5)1#l@V<-)p|+}0{&NrmxqT1T~L44x0rtan%8>D z-dm-0)Z0|B)Zb7+cw^GI1>6IB`slhIxzz^7N=8PLyVq(I3C2x!FXdVoz3p5_#Jx}> zZaPo*_Za9vf{iEa7_Q;2|0((F!3f(El%D^pMiB0r*-a|(Z>zr>ZwUYYR|5a*Rn+9+ z-IAjo_^XnYUN0Zf*3CIgEjz29UJb?$2v0vE4ZPy*Mu-c-sXM$gldvn$u>&znvDc1& z2K@-Qs=W6DO#3qqW&$fQ@Bp)^M}?Atw^cQi&qLKt+h#tJ%X$|u;rrb8gMR`%zE{M< zjsoZP93FwRA9c8Xdx$tZqP+x7XAP{Bzd1beK3nkA$`~&E6v*)S2Xy;01gDO~&$6z> z>0m#wjC6$>|1JR^Apf8fS!?fIsUx?Xg*J_&UwrHIFXGTFV&ODV6g4+B@eo&OxoD+` zb{T7LajIju-2o4%Y#KLX7!&?9FAy|?3-AO;&K4e^>#3}LtexEINq=bXoSTn69R#!@ zah#zS|M~SBPej-WAO8M*#Q68WM*F2R7;8YQyDvtVNSJ z@F=!AO>5_hC%4dn=d4l16zD^2=#3$!k8T&gwW}QhKlZP7!f%L7zF!r*xaDSkwzuHi zyZ`_V^S2u2-`GjHiJU{{dIIvigtc{C>_bd>e>HeHi0A-_8RI~Q4hdCHrv z0q{(Lj#o}&T;FOt-_nb0BF+{oOAhJMJk=a~o{@_j*7!Vxr~B8rZvc~NN|QDQF1Ve) z@6lY{wG$dkME2Cg&hhZVd0^eg?JKedt#xb_g(++E+o++h7!c52uS5AVti7H>$X5?Z zFTFdgDz`7o%)xx=i}+_v{-+=REE?Pu@jdi0xFheZQZ?g!sTJCrnjRM@WS{GeJYBGp z+BDDrdl&%6GdrOVsvi%$tBVRTfdk=yId}Jir?b4rUU6)(vH6Y-J`=BGqhFehZK3C~ zrw7^ycE~B-XTJ<>-@3rAUu5mDjbANe3t`C7PVlInbNDp2DoK3%vohJZJm=Dhxzne6 z64>GMSfrWsp5#u%}m=cFOYNT0Ki*1;deDG_)HCf za}ILu?(T}Gj8t}LC&(R@I|YiKwQs~2)9vi4tcGdUr?s_$?W90;UIh-yW9nymJlMr4 zEP%_Y>uAl3Z}!!u@Ja9J54JH>AK|TFj@AC_lDpQM#rw!MmyD~$cuI-HC2!~V&sIZM zqlXSxjR6xgjo}2G>?q*Navn9{Kawk61AS}Ma$TUxo!>yJsX&6;zahCj@qm&YadBi( z0|Z_};%6pm#|L1SW7=O?<#p@38ap*vCGsIX77xm`AQQUrN0AoZI2i{k+iUn%_<#qDT%4$JI!yfQRF&NUm3Z z%XkvBH=JSN|DdoI`u14^uW?PLL7e>Bg#N_u;hD)HSTus%e=mjnvua}1!~k7G?L%$| zXcUnm3@@1{Du;*&tyS%7JrcI09(GWfjnv!QTayNji9I(eI$8_XV~g)4@@?y=if3Xc zDTux1{kIn-NX^St!3PR7oX;L)ct{33b!SEeV*B%KD2YiXAF30kbI4|t(jW{pda@_e z-thzktFq5T^G_1cJ}QnhCS%h&8CORc@PO@T~#6n zV0(&S)CF%bRnC@Oi%ok2z5OY;Q=$Qy3z%?!3g&j@Yv;$;+)&4Jb?s$|-?+PfyVbbe z1e=VBrpH5O7I#ntrl)LN_`c<8?Fyr;F+9$18O3!GrXyHCD<~a(I6am9#qp_ufK|DW z6z6qf?sfBG=;9Xo_IBb6*${k@`?hb`9}_%NF#tb35NC?*EuU47y<)_J&By;O_)D-F zjLJeV$ga`j9^4;z$5+CnPsrr%Te7qg&C3Q}uQIw+OdH)8apsc^W5J4 z@OSO#T^digIrYBaBd0!#Skc0|mM+>1!Mq3})^23Dyi6qQLe)V5Eq`VMa{rpYjP!$l z%nhM4H22^i?S(b@2jn^m{VBv$_wcCSYZ{1pk~K^tahRV=RHyaM)OY9JP(@krAz0q9 z6hpBwk>Mg4z^L9QWQ-WGk~nEF#`pqsxFJq}u&l(X&4(DPdiA3#=C8JK&cyHk0R8@U zM3FZql)ZLiXDECL$sTr9$@>G`MPxZgtJKj*SSQr#qj4miKU=+}FMH}e-C1c|fpzjO z#9QHA?Fc}?@B~|8L{0?E`+97df0*1DvJ^>qvH-Cg=YOGJX30MDGQAl|Cn7fVpCvg7 z`R5|x#u3G){3*mzFI6YJxIABt<#hJ&0jjB1EGB7Sm*$EisdcPmMT!37GBKZQ(JuEW zWpdehlOz~+&g($|(6`VK*$$*d%6pUif1wsXsEW&EX!p!_M)KqG(qcSEy^{kq=N zyr<$sl^(+aCTyICtx(jv|H~wHAZ{l3Z`TY@d!Xwi1n1PJWRr``3A44y1O4|~&o=uR zL1q1wEr(Im)5Cto$+Mq6YG*knge^?qoW8DzA+b5q>MMA%GE>CTf_zE5_xb)?SQIKj z!=7@rtukmQ9EZV6vdg}m35FtLh3Pa;nr?lDEk0~N52p4{%2A=I{au^Vl1`P;rw5yl z8o#B%!>dFDjbRzb9qfdk>;`>-JB;>ECvU|1&Mzl;PEFu|HC)(UkBlwD765@4O((VY z@hIn!bK59x5aKN1UlSjZ=8yamf9ErVygCs@eRf}4SGWH+sHR4!`r&bbAwJyK`F#@S zQ5~Fm=BTU8>eY=(!{w60r7cFGWk<9dzw~mv5YT5vEF$DP-f#XC{-D~plT|u#weO!F zi@fps!&Z3#U`uQxpniwB!DHq$b+Aw9v=gDu&Gh>#ZPn#FN${BISyG*qsbqS6B zVuL$Pr$C>DB__YB%ig^nQ=37yHMH>p) z=|tDJNjj6j+~O9`0uImqNmtx1ub)aJ-LO|7{&4s3f6d##d`|JeO5xr+i0I%-6$5f$n*EdyZ)q zzu*a@{zvsIt-1eV692l1(IsRoBTQEQVq)OGj7)e`!DyZNZ%Xtp*Ba3eWDoei*qQ79 z#o}NR7ykcI3H)!SxACOkxgKrlKNRu(_~+~y$+`V3`p5DkR@{?-*0Htvs{80O|zaf{?HgD1L zW76K-6EW4WYVeX@QW<3kjeA3E z!7Jl)1R<___w7)>z#b#U`u(8n$%ow3gC)iPCk+)uacsx{VF}YK*ZH>V0bd+L9Tjy$ zsqiMnV;Bb(KFUzBMH6*{<97eZJ>+(j)xE6j#DF|xYq|K90j#me`>w3Q1J+9R^7=C@ zcz6&iXv@&uhG5M3q8TJ2_#@EbX{`CI>uB!hVxs0uABz6B480#{_ax#A(63Ix{KiKh zU*fgdr`Lw#zh3sjlQU>sB9C2NZ^cW2CB4d`P85Izyxzu9d=JN|iZ=R}1&>2VZPVT%0E`b{ zSO$|o_ydz~5dP8;U>Rj}(PrB*i@SR~{-9TDbxSodG24JBdsYRw;roAM!lDc)CTr1H zdbZp!Mcrbd$^CevVfOv(B{$}2(|+64=CI)6djU34{RT(+R(Nu@{LU7hPT$|+R+6m_ zYr7iFns6G?uWb2=*ib9sm{H$^)({RmXdsYUXdn)UtyWIjg{@n8M2)|M_IKxn(i9*|FN9n!W*%s`pPV zqj04AbKL2&lsHxfk$w3hvkTf82hAUT`;}k( zMAK!TQh)`EyWIuF$bTKxdqJh{*s#IGcZRXaZ|5|6%Uy6cj zFwaRi3D4MrR9yx81tsJm`4dc>+zJ`Cn*3x2uZR2Nb<+7~xe<1f9S%})O4wGULEFWT zd>-r^dO06t*ISs)^|r%dioJ#AWsk3-d$22pKczV12-Isu$?WNnB}I)Mxhz7*2E#@i zue#5ADH*^`kmhetuOj)E!=B>8sgu_CJQSzD=t=QNk+s*lN4&XK{% z-~!I9NY*j6zJ9|bbb?figVc%+Dn*<+Xx~&WZ7=%bOJ%C2K_O36Dv`teUU`S)*E=J$ zaS#aCYX1r0)YLf6a)-go{OOA(DsVpC4$&x;l~u#G!t40Mi}QV~R`^dtF&7t`B44ZE zLOlbcHztUyN|Z0|E^O)eW|wXC{EC&Cc=Rq#UmrPfMRBtVc^q@VCq+W4df!E4?2^3* zKPN(_n$IZtn7YL1lhvpCpRf@s1})yN`NN9r5B>C60IKX~dFVtuxC6!$I14TM-(q;| ze#ZbJ{Qa2~s7M2T*jF_6-2&$8Uq+iSpf9z^Tm=`F1_JC0@O z69HZ}w$?QMB2&GZjiwB{t@pwhC2_IimX+Fe3|{+qE=#SvUkoc5ncG3|!s4hE>;F{o z)nQS6-`AIt?i3^y29yv~KsttQ5CJIx>5^_PASK-b(ujaGl9Ea(lF~IucMV80^IksR z-#_oY&&=GJb7$sx&e>$iNT=EVgG-1M z6&IqJ1MA{7m0gY+(L77Y=#Crbyp-jx_|q-q10+=H#jr6B_4~I6|6CmU${~T1qas;r zsIBTxMk*};ZDha#p5u3!Y@b=bG|BU!Sa;ZY0*!9*zg%=#0c9+43L*kp;(ni9iA5&o zvniN!d55!&6#8~=w>J8s!!8Ni9G^5z^Wr2=N68cDY((o!UR@mX@Pl7Nv3J5;^SdPS z-@w@dojD#^K;CIKl1{`QLd=N2%U^>QM(Eq@XQVEmmS1#lQ0D#GN zleHGQ!<+P-i=+Y3QxPI!QP15GG5k8mIl=xU-qEI@aaeH5D(T!5bQh~MgRQ!Sg`Xq{)f4R`V0$T91ZKDkU>-1NL zySttNJJKM8e7hKLXO_BbK2iNcRueWYI6+9b+R#uCt35c&^cVG&?*Ae^@Y_XhB!hD+ z|L4Bnu|kNF592B08racW^;0He&$#NG7DO^bZi*sFxHMs=bV+p>DF|F>&Yzp5h1OJk z3oB`SMxL}4AF9lpJgOefUyPT(FZiA83cLr6h`$nC`o%zbE5K7Z3;+|l@tBHg;?>(< z6h`N+1cLHcNu!k>@w!hRZAlmZ8M_1Q(wfBFV(V``lMv#?W(MYb8ffruImPZAn*6qv zU03&Z{@?+eWl=IbQvIQ%gR@*LVF|WA|YD0~L zzrXU|nX1y;!2%#1P=4Z|*@(BBFMi6j!=xoYvBh(*;OL4D?G^RfBO|=0268Z&-H+4` zn{W8v(@q}ufg7jsNTt1#52j*#>ut~72;Tl(xnt}x*V2;QTj&%IS7PJ2tMU;R{fyiq z^GkldJ zu>Ukft{=Q8t*V+ptrPhbyrQ2tBXF*l-fbYH;=PDw171Vov-jzY^|O~uw>mU3Od`lv zNv4^l6N&&e4IfEfR9481=F6tP-Iv6lN7r1$XNzJm-t-M+2Q3WU^o^f@g+nOk`DRKl zH*|41dSmB^c^F#!7JjoJ9v2ZU;l09ro&Ov`NSMp+rWO?~^~3k!#>2$f8>f3{JP7n5 z9;T@j)s4PK`u=1BpJeh1j7Tgm9;qo*fPG?)-#F3hhFC^#U-#4f`M0>Y-}zA0iVYFB zmmk=sJ2gK-9)-NJ1La#3JAU;u@GJ{uSFjPvBCmM9J6r#V%-AZ#2<#=(wC;%zf;~wlzF12A|ChdGCD~D8`k%6kxyHM)0|0sJogpb6fObKsYVw_Vjn1Ie<% z3r>Ady5kUpSfMwc@39u2(xGg-+3OwwSoENkEJIO~DjmYeQ@WG6!1!Q7NY1yj0S&2d zrOo6TC-~JIzV|N<5UtPGVHP4+@v#i`2`cLDS32L(6IzRUZfI(>7bG(eajilcv*pmn z3iyDA=hdgyp*z-w%s?w*`W16&B)iFdi90-bU?oppC6BQCmwQKT&Ol7cp;qMSkKinL zCfznda>jX@{5zGK z+bi$RoDx9)+ZvkrW)SUO9wPPvfT(B!i!{)84!Tc347?aO+uLPIMcH*@dbIHN>ii_{iB;RL&3N|D%LOu!J@q>HL2ROWZ!zb) zbwpi-Brb3poHg9cJ>eJ6hW?ey1<2g1!VmI*;KhBa()fO$seVN+dD@uG53AOmyojw1 zWd9>5ZWxv&6^A2yHb6$?WRAG^Mz$B8pGKPr=FP880&|!{azR0UcUg{j$oSk#dx3%) zwNGt*s(XI~j9z+Z4fuV~H4dFEvh@AQE+>w?>yT6;t{wc+QNoTi&q!(uG0f{Z2FwRE zik)6UQA{ty7E`0OtxqtGR3JS&r*jquBe%>64s@;@b@JkYhq8g%zr*j?+)$;D!nq&? z!|Cbg`hrMF;q2-if2`Myb4N!*+4{f3S*6*YJh4}J>hS65DH|UjDYT;=9s0g(Cg{M{BBV$llnwiq}?@9ZO4gG9ecDNf>fkH5ghvt~dl68&?WXqZ8E5TW;`+FQ zG8}L{10{<%(feLYULwKYL@W)+Sr5Ax(rsd4uOejBUb$N_Nmcgbuc?uqNz(kEaFol7 zf-SdStuo9*>yX#P1@9>xtoFSa(X*)0PwM?dyNEh%v^f3HlgFNTc_(u1_%X|yhxp+j zlG;=O+HE&r1%pUx#Mp)G_#`4iHiCrp(ax!j_Od;vQ4?l{j}NC&`ul-au{@vYbp`qm zs$+L?EhLOX{-polGjjYk0i$YwxFe1WhNDozq1*Hgl=S z^z7usnkc@if1dBY+qOCdrEL`EGIlE8^{oU?*vTy!I%6c{QlVKXM)y<<)bQ#FF;8D{ z->M67j??eiTLf>32B;4S&0I<&Uk;1up~@Gu_5CnU(9v;#std{j4c^CAc!2MivRyC? zW!7oripBQ}sQA9j&O#|5&t!KfRqsoMu?9(fw<2!P)o_{`42=;ZywHrmNhl5pWEo90dcy-yoNgML%Y zbKO4SxzU9NwWYNL^W7Zm#>tkd_;O^lf-lFFs%yDRc4n2SRUawo*`mwsi^w^8HCtXj zu6Yc4FeVE=kmoJy4L>cDRS_+gHJqS{rD#-UP+?V(k$%sZTtJhmj|{!pi*GqQ_S*Pb zlYFI`=^szEB)Yh86|kuCcfa{8ASdGRk5GGb1)tO3DYlv|%il~rEnUM)L!$Jb*1_eQ z=ooljVPf**um%hOeLZQo8{C1S_+^dS6%GVl7Gv@9>UX+gy0aJQV_rQB>{ezd-b44X`gzytI8%6}UeNmj5ZO`_Q{1?iOatx+6I@g!V@*NUVL7 zki{aBtfg8*q4=QpO(Gu~zGb}Hj&!OtZ%nYL8V)9gi7{IwQ8bS{mzKZ&l!xGxCs;b* zCt+;ax~6;QugOGxj`kMu`I{J9Wv|7`&YORXBQUTjS}3~X8A$g}ygJ5F2O2fLju>6wa7Z-L z>MPDO{CRk?!MeuUr0HGnJ1%rGd5RohGh+?Wxrj)@_Ce$P^_&?fx+55648DD6(6)5_tP%t2>xYZYb}%4Ih}8Sf zpG$TEY0zb(@%(waB~eBV{tM^uB6{n|eD>&ACbIY9R`;44z3!SXK z7|L!mdVl2TB3spdY1i7)A{zfUae|;;^Cxp>396=N@>@$whAO!oKqvO3GEC?h5)3WH zETUMA*YOW=Ko)Dp$gCv3H@7$07fF!=jH%s86;s@}Ki2#6QBr|rtTr~j#3UqaR0OP0 z*_ekH`M8fyXbAG<#}02+WxOveG+UCdQ@UbHS2`GrM;6~E|n3x(}*Y4y%Gy&MS=9tjv$mKrMJtv_md zr;$}lil}Z7={KS*<3M3kDui;ty>77%wr1k-J|CfVV~f2~ffd>m_PBX)ChbH1fP@)lEhT-4QW(3K%O zo?*7kTs`tSpTF5S7!H@Uwzih8U~mC(6ceccF=+k8aZvPxxKIdXjlko_dA}M=yh18> z)a`fS>CJJR<=UP|(zoPVhs#u(x19LSeJio5hyzh6g6 z_@0%TuI_nioLEH|oGsXNtCzw2?vZRhS-~jh=^33PSshwBK0+=GH}5=VF0q2Fih0oL zxVIMUz>S0!<{Q2KpK;$B_y;SfS0(G#1L%_iMg-%3w1~xy&yLmB$_lfK`(WiGrBs2|$4)~}0#zsej#r@6Yg;HRcx?*EceER^*Ev||=9Y_l~y zWf)6AyR`V`t?h!y zy~}s=LQ)Z^k#Lor$tCE+>W)4#QR0ZM-S~)Sr#CAG*S_)dAmwe>Vx)r5i7rY9!+J>B z^uM%JZhTQNPo@J)eFYDu#gMq2KQmVj)#Di?IgWG)F1l7s$IhQ`J(6D_tq&l7uN65^ zO$N0r%{3*N4j&gWCu60BHSx>kF!pWEHT|(MRyjTLf!~K^*l3Z`@w`s04F6#s3w9A&n-CtcCe!3_2BJm@#fF%LZ;Z}0La;-NEqFx&57 zCREBXo5AVD`Nkt~3PB&^`rS4vz-JvRdab483X6_f%FTtjh1@D>Y;)qOY4gcU=T2Xo zjHD-3kQVEj=N0YiNPC?y@}Bz)=hKIed58UjOxlLk$hWD=os8b_n-E>o9k*gXpmq0)JAc!R-tVP#v$UH2M~moE1X_FI^?Gwi%jQ( zN+}dJ=M23$o0D=0wiMg) zJ?_ncKXs*G!@vO^p%w@<#4G+fy zL1h(sQtD*%KkKEQ2P@JwhUR9o5b#rO!81jjhFdiK`*C_c+p%O|j)&@V_YP%?T9-q0EQhR#&FF8H^>-8m919seor<_x{tQaI-5eXQWmGsY9jY~o^KKRSjQ*8;sSd6RN6=4l)dzt;k=YIJ@iNPf z^=i(6rXA{l&*#e$m)yyC`RQ=%_t@#&%kNpf6>9O?a0@()r=e#{#8Y`d;e-9+F&(!u z2^S~lY9TlICjZzTyS8DppiblyI-+ICBjLuS)U8l~G;pxs`^r)-);bpcmgb0TB$3$W zQ8m4q?7PoP?i}wFcunsBSv0+MY+99bWijjl2GVlBDlk#3jmajx?lEz}H&-vlX3B&Fy(+rg{9i;f9GL8C*f_O%prozh(( z@xUa8OIss-`xUsWh=O1eh>m&6-NF1+ulsW+J@MW>g?w8#CY?fApH)ILh)SxaQD1jo z(Gs>-WYaVLurrHc`=i%-7?~;c`!Z|t6AN70W;F0#^=#tVc0gra;PW0*L?A9@Sp42m zaMt5mRklz(J{KOS7F5x|9R34&wK;J4+OjF0=c#a_m@=t?w3!npR9Vi92!b-3k*DQ~ z56EKWn~(dW;F!crq?NNqX7kt!^J81$}AC7X1dMZAv4&e6wD~5rq8# zs(0EZ4tX0ze0?(au^Gf!8l2Z|5$@olM&Ycd>UQQ!iox&rWp7+uyBl3BrFD~!2uT&| zLxi~h67CRP2v%})CJid_rnGZ}R_x8)HHgvqNSjCk55>0IX(GOuJlz`@R8GHbv0Z@B z4s=~$_VfR<<|5jTSF;_-J>BE-vH&x3@@`O1lnKSf3YI2TQ0Q4yPafJISw2Ji2;1H} z?|ili->TQsokK^HlbU_8es*!!NrmG=qh@6ubK$jV*grLA9bM{z8E%j>!Q(!!g#LJE z6Mm!Y`rLuclw|g=Jo)Lgf50bX6_QV84K!UdU0aOm$%3p0$~77A1oYTbu>LIbB*$ll zAtRUsm{)66@ zI@8gB_$H3s&dAL;r6RfvtE@_F|1%kXp9bg}q<0>fb_g_ax~bSdg1f@+bbCI%nbvAO z?Y%2;pd9RaG|OO}$1K`EC0kD9O3p=RK12_x2mSAwO`m{9v|t>ZO?B#D!SR?!wj5hx zR2#V-;=uahGcT0nUFch zhs0XKXn5G=D`V7bWn7>eMF-vGL*VcwpB*t)&_TrwZu_z5%0XE9OU@{TIE&l+`C=W__X|5BXjwk(@vc&69`Z3;-r~xl`z9t?zdL1D=;~XkEG0DNx zKBf;?wAU_}?y?Bc&DitGtVx30LH&|>NU#dB!;b0Ws_K)sZH<{lJMH z9dA8(vc3(MPXa-0h%7H1TS_xtf>GiD6Y)3XZ)ldJP$MYqba<+^6LsJsq>}QX+ z3}dwN`uXY04T_isk8vSUOhV0yU4s}U|n=VmCRuyR8)#aUc zLD5V3GkTE@+k}2FR+@%f_6X27*S<0+!efb2+QC?zgj@OJ;Dq(OOTuS?s>uF#gcSut zexm%_j_(X<>eniNUM~v+HhhccrYynGkolwIhYm>gOkKK1?vrz`JclDc4>V+IkQ+K`=XUpHKtEs7b8ly0O!Qlt^-77!2+k#6aj znY-|}_x_)K?>*-^&oeV?t#^IbdgB|PZ@g0%NtqQ!8OIE4d28#t%2>HPd-cNE^@Woo z1mc;Vkv8B+_vuF1^obUQb^UJe%bUu&3v`xzFh2e@azd_1om``oJBpJl!xLGuW;^-i zW`TNm5}GVg`Rs})yVFGk`szaMbY-vdRCJ1q!(DB@2y^8QG(>S%_-sn}H@3NOC31!X zuW~x)wN8Nn_WrgXiw0vq#ND!X_v8xNKlyCZ^NzL)imqzna#IP)x;HbDD3tnQ%eG2f zRe6qBO(lK3zojYnE|)H*G~qtMnV14>LXFO#PkLKb;9OvbQMkrHn-CA7m4sC`3@;v$ z6Q=BoBk{fk5zXiOEei>iuQJP^Xirx2wAM1y`KSZ1j#vtNk(Fs(KJQjv8v5C1Z*)GC zKUi&GyRURuDM=jB=i?`I<^-y#gnfRANItsI2hz-y+c$z{LC!0eYk-h z{#fL9`pwVtY=3`g>HhIrE^{I$ivK-#+>hvIBuK+o%AdWX`ZyUc32vugOyY#a-V-ZA zMe$zg0M+l*D5B5S?k_&svCelu-6FLYM^xkXiTh;fk`1S^AG}w;0ZYB7znC1$Or|MM zrmj%^ZS7C9KAdOdSS4A2E?Oa{pT&t}NdIm~@S8372XA^>>2U`Jjg$Z!e{Lz%Q4bRsSPi41eBcyA* z>I~f^Oy&-Hnf^yP%xBQ&6VyFlkXKXi``G?#mvrWbrC%=AvO>8F#_oeBC49e5-4%mCM|eE|j$ zBs#ds#`W0ij&kmww!|WAM&QL4qp){LbKg()k()jb(~Nc#Wm{>%?T=>+4ZK}uqMG2^)! zoRREK^wd{9t`Y;L=V5U2dMUw9a`wbZeQkd4311TICQ_Sp`p2ld8hp@d$}8{mx+B(5 zWc5Oc1-JMnRarsLvu`h=Hry*N&I&`1gSALs;b-bDR^BY~w$D;9zsr{VG6`nuFDpIY zt2Mz~ex`6to-1!v-`+h8Z00*VCA;|fcip@<)iVE*$B#$3^&3OMws6WqJ|ARqVVeV= zkfM5O7Sz;^EtwH*I#U9==VdZ2RdKu{1HvC$Jx+brH2YlcgSO?eYb|`wvO@vqK=a8d z-0_J`6-GhiH0)2%_CqSlPb$#em!a7gp{oxpcyU!DVV}ZXEGISrvtxZHw*c3^?~@bc zAqy$#79aLnV;+7QSL;9C`Q1yuyG|>B-F-nWx9TBdWUVJWnCUosuIiQi+$n;GrNyNo zvRBHgUE^zkm=fb2v_Uv3TjhXm;!eQ2*F?X~;wz4WGkz)BNX(Sh zkw8ZTyy-qCJpv)-?|bH{Q!qC8bBObvT3!6T*>$T|xFy2698zCD;fjQ006>Dw7z!T0gQ@8d(kFBbU42ERBB_wjKj;D9gf zWX37xF@FMYLgj(%+na1JpNb0ge0hrnm9j`tN@YFQ7{_~CMHE;cxFZcDQ8nz~DP|AF zCJ0n=6^uCcb+J@&o6sv}?XtFqNik@47JP}4u8@78y8S(YrH5+ft#7=*+G)@FYx$49 zSsLkQ&1Sr9_AlfPAG=7T9t?W4uK55k7z`?vfOB7iOtM|MRMrDyW5}HZ!}=gYp1@3o zMMkF1ffd{VdH9AgBd-G$Yt?j)aG6m{{;6bSL<@ma5H3Y=Rv?v>qW?Ve+jtow#Rx%y zH`d=$J?iV!*s3vCVyBRjmc}mQ6|cAw5D;L$;7K9!Z)4Cc)j8zKE-T}L0P3@eDJkJA z11Wh#W$l;$UbKb=y^So((W$Ahg#}YCvsOAUFRy-y(zy?}3l6D9w_dqGAjjnA!lfmK zuUD-}ZSB-@Kg|S}lypBBs2muQ+_=I`J@RAnt9i`7O2GG-W>gxHd9nVf&@@3Ej~tRD z$h@q;_xa4m&lK+gP^e<4B?3S*4C-+pqhoM};I8wLw~v^aDOp}p_u+X z|Fq`CG7|3>B^()T@UIyExnJ)DH*!4Ag?6Ek^gq2qhS$%Tp<{dmjuEDSFy?qPc5S^6 zZ{_r>s3X3!MJy)9;|Ki&YdQFM0FM!S7JyRefe>E+ZQp(Ge+BA&XQUiP{?p^a^U=k* zsi>jS-kp62-@b{vB0G+E-oG|p&xadHj!^JQ1)>Ji z>8z-!jr1z*v-xd?+n-j$Z$@Sp7ZV&GA439o7oNz<%7*Tu^|ZA|!3$i-x9RCT@NWDQ z9Li{1o8fet(-S!oh>4f%?Ti;gJ=^bb;W+D?#JLB`oFbxFPZW|zCuu@1jcG+@ec&)0 zmuR8~Ho8z<0qV->{*mA_7f_5=^PW3VN(2D+ltqW z?jPWQ9EGuqE$BAlOF82Ooqen%l@F3kzf0XNZ!$0ZeLiN@T8KH~i4vfqAt7Xdc3;sE zK#T^fGh;2D>n07?GW8^3M{1rK`YE%+$pRm2d4!3nUzPJczfjfZ5~LG5qtd5G-2|oB!s|%syskTp*K9EoBsiM7YA8el zJzJz}ZS)tmn)7Tg(d}u%C(+@_r|&QjbCB937zwJo`aqr;Ry!Fc7WK;_9kI^}Qa+j_ z#%ZdyI`pO!p9yFyzt3=RhM6mQb$!L1Hf^^FG^3r-TRD}h$BS2#h~{Ovq+zq{W+9z7 znDKL>{Vq|*FI#Qr<%NcUNI;0*s~UTuUe|Z4XP6q})Z*ax8nbv&eG6<7`|~us5dH4~ zy6^3Eo@Uv78A5m}dBvUsTMk=~rfJ_8IT<0oVA6nn%2tf=J&ai831pLuNNSpvNXvU6s z@9?90{GxYr0{MQZ?640Ggux*ZGR`}blfT=0!r6{lo;-lTbNnGVEvQ%7(iF1kPIkfN za3Y}mt~g)nE4Ts$Hj42vZG^24`4^ZHMJO)+sCVn#x1C~7Zp!j~4}VR3>q3h0ta*09 zmAP~6IQS-EUPnM?Cj22kNfqTv*Or~MB$_ycWv2q6{DMQ9kGdCW#=x`$Jt8@J_I@S= zR#0_E>nBM#-@x;b(n3ljBS6DLVCog|cuW?k0D`;Lqh^3gUCWQ2EAFO?+s_79AHVH$?3rl7o>1YF(T^i%dncVZxX)aH?R=C1*{ zyoX|uR$WIWgvTn{S-8Nj==Y~nhnGINd)Sqv#Oy-2iQG3tnp?|W z2->rp(0f?*_dyunC5IgL-I0I74MF<(l zynh7(YgaWJ8Vg^pPZbl!`Aup?O@I730O*yrs?_SZG7 zfNBW-g=7KjqU%nPG&%CM?VV2S>})>jn8w21ptfqmD(@*}hvS>qhpU*$AiF3o@ZKxh zPHafT4?z+&$sZWu!gvgS3M%PsQWE=n1lOpBCKF=CA}~j0ujW`uQIR!0rt=7@{3NTT zNJmilFuo^pU`4Z@f#HX(on6=YC6GBO4sk`d+JqAeZSCynT=cHIdSQwkA#R2Ho5Uc#P- zsj2tj-Nk5cUNvxFv6iT{NrSAdV}FI8bMpN z(Phma4G)(XAfuBD_zw^y8*=1+76c|ce(y{k5V@JvWf!qUMAYBfXU+#5ADMVK9i@gy z8>}Z*s6##OjX-d~f;tXJoVtnIG&?qaR}MA9Z@KW}=Irkm0B!+A5WM%jIhkb^%v{jw zXDPo~yqAm8^9`|OY3jP|Y2Rr9~b&xZS9}nSw_)uW_^;)7TV%Eo-EC=at0To-r z=Ch%ZjQCLx^o1ISccS#_Z0?*d&do)e^L?;fxb`tZl```oPqBDkH#dvr7Zr7R{NhOX zpnf28)K|ZUMN8lP8rSG+!H6~Iy}8!tg%~5&d$-6CSD)ARRZQH2Tu1+5*#4RF^=VjAF=| z0_Fh_3Wya0pF!5QwrJfiy?rsu$I!vcqpu-kwLo z1vF;JH-s1Q8`uI)bkD!8{w`*PAe;I^Tob+WV{N6H`d%M>7*qb-Qb*;e2D!UdM}md~ z6me1{_Qk(VC9LVgaRFU@6&gN}dC&Pe*-OG1$i6-DO5W=TVZq&T8;j5e@}M*u z8+-wfr+BZEm?kWPIJj@;3VXJHo~r|HE>5I{ot)4UhXn2pLzrJcGSF}?L0Zir8nWEb z-XobOYVswIu_@C?z;^KNda&wui{VIX!=o8)sm34+^mnm~k`~*C^2x&`?C%gwtkL6Ph3?*8!M1G4GsqU76`9kyvzu9!c6 zUajdqz3LSpT52TR#P^h_{Ggcm#wZju~r= zot;KF%eQb|VBPkkbw0_9iI1CBwWTej92>K8wBh%-WXawJv@Yyd?TjgwqPO3_b5OcD zI!8ronVS?uh6S=ZNn7j4WmXxg53st6hLFL6pc}=->j0@1wM=%YT8Jbw84ff8kM7r8 z`R$O9eI4Vp)s(@a4kY5W+&w14H*I&qV82^$;9W?<_9x$0{+i93AJqHDwQBzvS3*Nn zKMIEP5xEgjQG|2|e>&Dg0x(LcG4mljrftY>Z8hziimaUG*U%r8E(h%lZDQ2i)D&Lc z81P}eCYy8sXB_KopthMA1OFhG%R-*(`JWYG*Y&tnerFaYPEH~R2M6=iP4{*35E0LP z-u~LQp&@n6-N`Cq*s(W0DO&auM{1b_pYWvP)r3>wNG9^*aqT!mg-Y<{X5@>J!S}i* z0yFg{6&*#x;^OnErygQjlbG%84tu4xHX!^GF?1C>y@qzdOm4lzu!Rp<=W)gTbpKqv zv%)0cC3eqL5B#-!JE=HnAZj?Z6gh%-XYW<{wFuO=7~?>C`}!23teM``BRT#M60z0B zyo?!pGDJ4|(=o7vtKFlOL@G64xPs@M%lPQ}3DZ5bH|V=(XME!O2fu?5k-dWe3k)Zi z&#ExDvW=newZPHI={-?il0YQH>n%k&i+lmdU;};#AdkDs(8^ zCq`~^99JLJVAi#0?1!ss)^Ky$%;k24NfUJe4*TwwtiRspii;FIp0AT{?rU=y1`JSg zfBEIbqVGSWXeX|v^(M7~qB6jSv2$w%ENNUC|W zTCSii?kV8?SCKn|2zJaI@0GQx`1y%+;v1iZ(=`4-L&9zQ1|n_^DPP zaYoGO9pBmqpWbn!C z7~aVEJ-mHo16-EgF2i87w^HLUK#ALnUzjXglkc8AJIjB7<+}}PU^h39`?UA7b}DtN z(7@J<%PO?boMHGero3n;^$asL;cjo5{D=o5RN0?ei*{z-yj3|}uH2DHjA?Nwm%g$A z-@nO~An(Yqc=T%%IVclu!BX;!KOPcC$sb?bKn^eveK8O>{B6U19XZ@jn z>SGMeRu{&Sv4fCHk=+=m*&`0=%uZsWAdI!c{~GJtmH1R3KrsN0rJdXVZBRr7{fOzY zmz=ty1=*MU7k6;TlQe(-ej&Ow@H`)kbQt;WXz2&C;)sYahIYYo1GHltC2k&^z2$Z_ z?Y08gQ?-I_xg86ep59h%+}yW98GI9Z)Fs$P99?qv`$yT&Md)XeWH>NL)90pyI1Hm+ z`{wRu5ZRkmwhG8M)^V^y6!pF+f%hRwvp1QsflN@+r`iU4(X$ywMMW++T2r>pz6 z;-cMLFiE56leH4*wb}G)<#sm-&m*Ev^s$D3(-t4ZTCiYiukH{3S=@UC!I`oc!CQrKeJve z`kirHKjzfD?CyKIR3tFQP^?m>Rv3gaJoXSv)3ajqnbK@Nt`*P0ECLk|axhNf4)P~u z1>c)(U(r-61Cx_h{q=y{A#hm2Ro2v`d>;M9m)mqv;&h_^ zM!5s-@=x>IHGEsLmI$R|>oX#2t(rTkEEC>87N%X&KTUhR7I^?7!Z#%Is5-3m#GM)z z7?%)aTto9@1o_+?V)o5HXU;F~+00YL2)gwHH+T4`e4Hb39>C5^8q$0Day`0jv#_nq zn`TIn>R>H4Bcx?mSxCl)CGTvzW;S02Td(Xxu3R8Q2I=9XPlI<-SGrSMD)i7&{~e_^ zuZa{sGr`**#$JRM3#K8R7O)UF+db@fXX?y)cWM$mIth1U7gSp5{SQWb*?eqNIjs`4 z_*igwc6RThG$1bX?F}anq5eVZs|yVMXm|J@uL6o3iN@ha49GFwHaFNfAt%BzVL!%-<#lx)S=MZ8WGSewI`&qqo{!kAc;XS>vE<(P+$5wPaGZ z{xFR&qs7eB^bMFgQ?bd7n&vhB!_3XYqx&{X)I*g+0w@oc2;MoJk&Y#Yy!(7*P;%N@ zN;4cT1ET1mooqJ+1pVXH8~teeB=HTMqL$Juh>zh985B*+(abF~NWY!<(IlUr5wZgN zrywa_^ZWX@-g$MwIgYVYJMT37uyF%Uy7ppcfMc7ZafUvC`*@NMbz*=1gTD(Qyt5m6 zWHwI^l+PWEN|S0pzJGFAdxz2kSJRqiBol4tX?9Qu<~-c*fkUG@x^ynjO*FIF zjuAJY$P~5p|Dt_X&^)t9N7wAp8h1^pBWgX8sRD%y2~nMvi;EO8nnU;oYzyp#HRZ#N zt3Fp(zx=VIvDMQ>2p~vLQyNj*GQDgaP8>4g5UD>Diy?4X3UVks2ulX(1Ry%GvDa^$Zsn3fDlSAcbq(d# zhPZR!$P&pA9QZ@NxF7a(isUrZ0hWC2?1b<1G^He=4<6ku+ER7FxIGoQ9En<-X+!5~ zF566%87S@pJ?LYqVsCNrW2jdcZ_|pbS7DWCR>;Byu^{K20g3A%`Nzu0{hGv$4Ct55 z`wxb|aEN7J%ha^u+}`p)lEVF9gz)9ZRN_skbVEGTUkxmXjk??_J}L>b@ISNxnhcU# z?WDm&eA2mflqI>dLqqi9zvZk}mF))6_^#A{$QS?_nrO`5Cm&H_>TX=|y~8Nk^iRJJ zJ)~6Qz?eAhI7uxBvp+j98)#R$s{i_{Z7Prf@33t(?iNH{=h34po1L+HFmi_f?^_r$ zBQr6jgtQAlngQ*j0Q0$NOgeOpvU#%}o z%TVA3XoAgvmf@YI*-KX;HzdD_B0{<SY2eMu{?1h$0|J!IKthN1A?8go^9FjcI$?bi zc=qg`MMoN#JqeKwqXM`MllH@mO2eHGW)OJ}LjGR4+c|ypvNys=@IDt}m2q=H1TsbddHb+8muKXE=7)JGiQb_#Bzw57haFOARj(8T8DGR!B-wAkhro@{ z+yNmMsnXnfl)bZ#yPPmL(GMIs_dwLAxDqsAc8TVyaati5+ito&mZfbMWN^Yaopm-5%i0(XHE1=ck(h*HMQ@=eAkr{L7QKh z%`^&QR=(vQ-Yp~wVOzVfmXuIFyEYtgF!5__X*sFDR|g%JS{tgKGf*I2_iyPg&wi#? z53}FMA$`5uW_n@!3su?d=%(pP!(ZZ*ojhHxT7n@JKO&p|<8hNi{=UrB&w5EDu+CU<35MoE8(np_35y{$^ED(QMj_Z%Fg{N0- z&saLZ7}*)DhWz)ldL|}sDNMd5dT{5LR`4j5U>qbC-%Sm0a%o3B@Njii_C8Ba-Q9Hr ztmd$>vHR7o9+uN6@oh`-kNGo9Hx@WIQYA14DpG7%pBJ+6D0lHq=vVMGH-9YQWdGcO`9N#kPPzb25u3D&1x2_Ar@tQQ$&7B`q$oXsg#v&qNZx zll&-L3U)jo?S~WCZaEzEm<3lZ4+>lz_B1VqC?w#-j^Klt!w@9q(_+~8%nShpG;{Yg zSoqa=8~+yipxHS&P%vd_edh$k4OcfeMrz{RoE%9#zqUn$C84L_G2pGIM|I`jR&ntf ztaMXQQ3aEH?w>`o*1r4WUq&4xXXyZFDRkI4jHO*fgj`s(+H|#4vTO(GseWegjVc z(*cxwFu3N85}&>aT$iDfW-5NgFCq#{(b~rV*s3jHu>Xw9&1u$GLIsOCCML%6WP3(H zLr@7$M*YV$H@C+SKb!g)Nf=9F<>w{WG~rvp2q>oqb+6d0|*gNe$5WG*~H zH6q!P@XsN#*jE_L#qC;}YSC%`doMwHQX>XZScDmpr)PVANUyUwTor(w7E=NmeTXYC z5M*&7m-m46dk0$ZPK@G9OVFjO%Fzo*k4Z{SE-+eJlM!I>N*^>n(drLts?K@t{b%j1 zi{eYGh8Y|jysY|9L#)2v$0A8{%usiAaZ*iw*SrV>bKC+#18QO5@#--_@!3Ht1D?$M zi75GCG=wPvOldwxT(xQ%dxc@>z5yve`LEVSeeXP%@RMq|5G{ipJx4bH1+lHEjHx2K z9!&43iUW7^&)ZzqR0|qEHl0;p9Ix%I>j5@v!x_K9@}|2s=6GE1R^|D*C@-6AN=Gw{ zc?<(Oh^3mw1}0aY`)+Ijs`HzBV#k|ieY+3nFlsHSSBIGRwwr$kL;QluDb&wb-y zfj-0?S*)?)gC7lF$jgTpc2!c}o4iFB-ZiQuq(NJ#Nxt59ba_@7Nb3G zzEBSxGW8HCzc{7~1Q0F5ME2Z1I~F+{K>b1l2|9nU5UKUM)JSJ@$S+*s+Yvah8^qZj z<`57K1URsvpD^u5M}GqYFe{jpk^Vf#(1%Erp7<6?YS|ESK4nVZygY}#M49Nfubi73W?<*fnk8ev&Ev@qCEFZ^LO znEoQvssKCRS3+@(ceH>3{LNljSyAlwY4+Edd*0~b zs1p;1#J!IXYn8x)NZFQ<%W2@mJmFj06uB|>gab}91aoy`^pO*UzXJCOy&`gl*>jI1Sf=@UB*9>p5Eq!1bki*lZuBC2f>~KanHiB z7(XDUxfcC5(+QUx9FqClApr$f8iWm%w;`d|Q3C~ZbYhZ3oiI}K=$LsCSUh)sk|YJk zfirU~G3>Stf%HaCOZF4MAQWzA_cHa0ezY`-Fo zweL}N4{A?+rZ`^yM3!nRw;5{*<_bSyeqergqSPw<#U_R@2Yklu&zq~V2lTOdY)#6e z1=PB;)x>UXoW8^j2w9&MpZDXVhA}JFs1$QN-y^)oKf&keQiu(Nx1MdagMmA&{uEA! z_igD07S!TC)*q5=7@VUR;twFk$BAJ$QefI^aeFtA{idaL0jmRXR6#Zbdx@{pf*@lo z@r?|J_3hh|a0vPF-7xDK@C;`u0!MAj>s&?3ocn$VdsG}#ALnaxfkODBZkQB~`h6A@ zIZ{pzk3|L!Bq^>lz!-0iwcRASc9YgIVC5|WTqJ`UYZ3$Z^-;$8t)Fy{U*Y87s0m5s zkQwvnX>RRbC;pO_%=>b|N_hBZncZm5Fh~4+9V0TO?^!?ImUBL^Fl5M_n4fZ^7jf> z)h7DxV4FL(Vr3IFEY_619@91bBe+RzVOn<4e)!8c=5#G@li{+vt7*Nb>x%7-+jV}Y zpg|lN+j3y6d1dB3hwa)OYl@T)CaSgOO<2NcsX2A84y9Eu%{36uVVuyr81vIzVE*se zK3r}NXdEknsw<12U&T}|d=CecKHCc|X^sockFQJLEot6{KZI8{I{X^SWglK|#v*E1 zsHZnFlXzqgZX2;7N1xKR{WCN`0#mMW?1b(x`a3jWb&o$@+>YZqc2}9=t76+Te6k35 z-MUig+0O&aJnqq;&0wszTt87`32Fs`(()#&L{G$R;YVmKdfRMnb;u;*0?)4~%lbpn z<18UP`qBL)IQq7_Yt0cQw-jJdSda2ws{P=wloNR_Yc?VrX@VB036#r;V~UJ`Ucif8BB; zR7#;3`djpX0*ZIZNRw*&&h+CExH#FMZ~Bt3Jyq*?EL)n(PIYqmT=p>Oc&qh7vqms^ z*bK>_rlbX?wfE0O_I=Nd#r#W5T~JGnpUbg9hTfkbW0Tg~2_2cvsRiG8wr*8BY)Sx} zo!l@eaywC^@I87+DaC-XnQt~AK!cl1wvbEmyw9eF(h^q@FUzpYXNaVqRq$M9!0M>J z{qqXIch5u&b=4*xe53mM_^hkJ2@0_X+>2Jxd*bWb|BR#xOdC|cx zdD(0Wr5Z9zlvODWypVn<(9r5jNV-7rHP&C;H3Q#?@Y&Wt5rk`e6G=C%bbQ)a64ho_2#AAp0~w|(@oq{OtdkJ z{>}crm;Vy+M8twfzKZuoNgd6mAafT6+%Q<>1El=_(mOi<<4StvLlLLaY7WB%_@t1R z!gM$OnZ)(M_!qOquJixWa6P%u5d47uqH^YW=?RJWJM({&uH6j(zas+vFJG1S%UO6m z)UnHRw6q1>`#5Vaxalm+e(AGP^gDMmEwUYzvV=CH11oo-m%Lr5HsPOWJEBvwuuA|e zLrznIC{eJE0B0xnWyyK8b}ge{(yf7=^{SH;IBlIOqmuP*ffJuwT-*o`mN@ZHHBrTK zY)JcVFQ{Lx`+dh9JUK$OSJVx@tD3PtTJYH`5KL3qz!rA}oqXqO6aaP+rvUq3Fu1NG z{cXWmUadjl!ym-tK7^3j$k^K2_SRr5dY%Dm+O7NB%<2j-EBrQ-xHd)AqFdlBCV=1$>l%%s z2?9u?B!vbC?41hiBSD9~lse6%b-Y1rPjG7Lom?y0?;U%tBGn#yrj7HCkbt?Ju(=&M z7RIKG0Geqcta4_Y>1ZawOJC>D^Zg1xV>+cw&;-sHtHys;=AR+`vn&DN@Y)(tLhF;? zi8?AwKCc78q!J&B59r>XsyTfnvHEced>NV|IG8vr-I!MHC^+OA{Dd$N_k2Ug@d zw?bpdDCB@|KUNQyO6*QIC{b4U-mN{@NQtrP#fEcV2n2Aejd}#%{KY$PC{#;D7SCLjOy?2&&Lb=HTQ~RQ}?D6 zIJ*<5^XKW#4cDik)6sr9I*@>85bNowP6iXi;<99vm_$O;{H{U+r=dL&wkjK$_}G#B z1ca8oJAIuBJ;y6sbx03YjsDT9D7CJk_-KPFZAk7=oSuR#$PSPpCrQErXDEM(6=J^l z(W+|h_%5k!!(26K`y=@`*@2qh`d*}f3k!-~uj30z&Vtlq@phDr!_R*U+JDUl6FrZ4 zNdld#v!mkX;DEyMjdaWO$q#+Et|I7?PHR!&VKCh2;qL=>dlT{BvIPHihn!yFK_>K7uH z`xYzAKPxMyRtO-cS-@X;b-~D=Fnso~tDu#3z5IbG-oRLApcV&F_kS+ySr`l` z)sggQweQ@CeIej3l`B6uW3PxU?)N5{RkiQs}$I z*CGm?~@;a2b8Fm)n4)yB8((+P}5{-wc|V>0%}>AQNxYOyZX_jOyn!fOX0qq z=G`Azqlc`eISU$DJNkxrU}t{JSP=aN#|+9>U7huq%O^54F0^U_SY?s)r)Dqk|Eitd z`QAd)qgA12BA2m4X?1b5nd>LuPA9v(*2)z$Cwgyc1~aeK3;16RC{Hhg6H0ksfx!Tu zFb}CdW0r3~tgNj&?FC5*I++vCe#U}nByh)*<{YFq@Iz;3XFh)WJNJh{PBQ@s3q|OU zi#~fT585Wp6oD%_Rt4+=Mau~u*!~Aq8OYBAPl_EZsi&IQ$Jz0kwIwBEl~l6C!Wjw* zP&#LkYEz2j({DSY*t-~YP&+XjyFeSa_i~TF3#KRqbD7(^w~SU(!d&mkLakvyL$7~DabVLL(qzvjK4Zrs3l)}Hd*f~;PI=}ot54?3a2{g+(f=Vra@>fi{*TT5AIm~~t;SD} z0AnaTx;ytu+?b4&hByV9?`Zb0@lQWz9|L+He|`(i9JF(qtY=zm^nu_1e#>$0lNmsA z_=bP!B;mKI+(6AU=yM%U&Uk+oM(vD?lb*Etr+t|nwR0j0f}0HEjq2j@WFH%R~B;5QSGMy3&}k9g{0ee5zjNzBxXUidY3b{4*C zcZKu1KOGfnll{a`dhkZ5wc)mU%Ty_Z2J&vI49a(upD$O*LEZDwZ;EG1ReTA}7Is<5 z`xlrH53Ua&3KH#N;6E^5oH56tmz6D;Tf5c8y4b+F)GJ0i2+OTD+h)enUeh9xv&n(u zY}EvHHicJU0YF8C1oHUK&TF2D#Q3j9*0+L+%*H%0S^l9+J|T$#3(JAmV25{#p!^s1 zOyBy~3BwKW1ZXyXNQ3N?692t5p@t}E4;_L$b%=0En*vuSRRwk@&kT6@8UFLchNa+4 z_g->a`i*eu6hZK&;eFUygZLADobAPvUUGBsBL_j+bXB&@?~Fx~A5TGhtRvqxUv9|R zle^HWl@M0D5_vaZV&j`VCFIfHN&h1m*gt@4!1)IwA*T$D!YBqXlWk(@b>AAoQVKi5 zX8?SW2-J~QKb9JmH)WL?0+r;y-+|vmit=8!Iv*I;+_A@v@EUr%)x9&KcsB1L)42Rq zxM|+;YFCuW5zsY5nTadzj}F{ixO$ueqPL)~&Qj#v_6D;kQ0xgu(BZ8*KeJGzqIXJ5 z_IFa4JfDUeZx4dbfDoX%F3qcSHkk)p6vAJDiUyj(|BMvu@EXGj{x(fdVP4)2#LHH0 z@MpAMdOFvpPJ<+sID^mp%ftt~+gOXG7mvbc@Ks;Dr#=}5Lf1Rg-tO+#_xv`lcENKy zUx$5gel(Z_l?VI^T-!OD*(=-E_S*kJn(o|yB?|13|Ezzm6~Gmbc4D~2$JXSbTBN0l z($ew9>^!?zpZ@lZ3!KDZZqI0o>1(!hxT1*B$oZu zV_|e9XM`}G_1znba7s?Uvv%Nljh@%|1J(aF9;7Js;qByiPJ$dxZQNE}uash6;6pa_m=EjUFTM}jUgecBet$*3xtvVHjXc)L)Z9s zHvz=C3-FJ(_78~anGSegkN;nei<#NcKG69n;8!q0BFiZ^?GBYh7U_X>Wl)Ft_|fD$ zW!5ua2^J#u_pTluY<_1Z8O*WgSA$PA2wxhM>-t((xAVZ7sFpOH5E|qU#g9Rm9b(0C zfdy(MIH!$-&-u1e4_!4@1I31U3;r1;B&rIXbW(9DPX-&+%a{He+wuPyPcSGT)3?O0 zz|_p>i2n)yA2rO88U=)qh$#O3dxFa8=n;uaWdn)K9hH!a3vUWaO02kG$?d(1i;Mhq zeiL(N;UA$e36{?!#OkV6Nar5 zF!JGN1wB?Po#A;$k3r8bhq|2K29DTez8>Lg>ntvlhERMq5kkp0K!2m^X6&1^7Z|`G zN%B39o%F}k_m{v3%I05q)|Tn8bln#i$^7G+;++Cl`w+7K3CFIZFBa85_o@CnN^|Cc zE%RUvT}Ph(iNAgYuNybMLs5n`bTTp3H4!@NDD@gp}+_hO(J2?knng2E? zBI>8mkJ?9nz7!zp|AOzsQ|dnY$ZqNjm(5=3^n@Zp!>D$lr;kq;V2vO^)^8p^kqkR1 z^Lfy9^0H)`Ve7PboPJog^IcfLW4d6rsc2}+tX<8_2XG%BXpuj*>G>=2l(fEw{Qzio zG2PHpGowb#!-+}YMmWFtCkx=%@S+#|-+)`Y6*IUYAXwi24EslwcRA}?_dv;A*GvAn zD%5)i2*mEd*wCD#lhemk$Dfc(wu*A30Mb6CgCATQgqx{vR6E<#*FJkqs$XLrGj%zH zMYMZY)V(neNRu-ZYFc={^(JNM<2EK~VLb0*- zB6k!4X~ojQbSmhXR8oa7B9s?Fu;@V#7Z0d_K^LoF8i{V{ZTHW2!4p43l^yqA$!j@X z@F^a$*1ABF-o1wS>yRev5|MGW<}5ssCJ)r&I<=t$A&+4<8O|Cljt%>DpKR<^6id4*9!p;imcJkVB4X$2?a8DvYmZ#+d3jp+Ssk2rU~ty+3KC*GfVzBv zvew(k*`O}?W0oaOh`w13!_G+qxhAeu{Af{szQ6igiw`?L6++5%G0EEQ_(jpV}P50j1Qo z&d{P}#vJ@K%vm&mk+kso1@i(#=jM5F&BVr+Cbuo;k`J)tAV`ZN7RcCt&wl>O=4yNR zev?I4SjZh(LHlgP=bFugDH{iK1gY3Qq~&PB9q{?JN2=w_Dv+|VHjc0K z$`35|g=^m|yF}I}ijRN1#isiDZDgL_+Z#mAxP0H`sj%#7Niv_O38%k&U<>(BSQsXD z$>1&qW;IrVQs!~AZ%WN{g9!kk6;}~(T?GJf=yfi|wV$n?R)#z|C}1W8o<=svij%D2 zaAG;Ne2`rzH&tKF|?k~Dt+7?kvEKHD|pP8R|2Z$DLFJIJ2fIIngA>6zV<>Ah}*|4w-S2zaK_ zxKNNk(%ajZh#nyYUjJxA1Op3x{0p|8cZJXwT4aBW$FJCaKlWa(M06XGR4!+EEdC|J zoG--!@$oNKboFjgtr^T3gN+5r z$!9BVXu<$vHk;fIvcf$(@k+~MrH);AgH|Qmahdsa4hIfgUY;)Q;RT5Moc#O}c?nZO|aU##v_ALnIF--F5Mh&UR*gU8+eGur%4@TKsw z#o$DH8{p0F$Ua8`0W$~hq+#1Z0gpqn1-zlH{aZRbuj{_CIT1=*qL!wf&#$L zD@i0HW8=_TSH|@2gbv7XCNQ@FW><|96-7|M5GiIK}u>!=?+1pJEak%hM9Z#zTbWBeePfPY#7ckXa3o1t#`fa zU3+h1gu+#X`tNH;rE2*b{wX<~mrr3WMQO)@bg4R%tKM3|{sZb^xF`gRMZ?Ucr2NB|0ED zE{p%N;FOMz&i4nx7G1ifGK;Il+-B_1lAXpv&N?zyJ{&}qCI@VyByDC4e0TH22{0>z z@rXVJJzX^nWdsg$!OT@RRuu?P$V3pS4zv~P<_tpJj`jpb8BF$9 z9z6++A((AUrWQWEZoCPVa7HH1?62}zPnQ)*snU5<9a_;2S53L$W0c^Avbapj72rp)uwG5 zyHJw;ddwOiNwXnM=4iP#z?Okn{kPt|FL%S3J{YDFiT#h>^nc|h5Yn5<@E~CQUwTu= zJ!ttm1P)2_KSGVP#CHNA7C+PW59?__L!B;_xfcTh!gPXlb1!0_8ay_Trzq8RZ@DP` zs#rk6ATfG(S5VbUBSiYVJ?Xt}{s{&Yf9+(|EOD=Xx~epnMGL(}X?!{nrrTQgKVk+LeQt~@;tI6EFVgD+$1QKb za_VG0@Q9#f+4(`@-iS-bO{77enixC^q3TJr)l|iiEB9P^5o!6ES&ZV^kMs@_Tbq~n zu>YMg22j51e;ay3If=@S15u8y24@4m#dp$5StbR|{%H1C!9;Z@aVLM3#+&UPtdrtp zka?Gi0RY|3&1nw&rtJy2OOPi}GO7zdPOP@Vw(U#dSUV<|T$!!+EHYyTJXSghO5h{w zFIeIJO{nhp8It(9Y6r6T#h&wDnxQ}K=zkpUIn3uc?nlk=Z zaT_?pGznb8hcid#8W;2k;2;`%o16oXL}vG z72o|xE13k6d`b@kAR+G4Emfdxp*irVok-BJRJIqoT_<`4{G;LpqYtg~5oYjXOUw9B zup?4&S9<=pcY^%`GD!~;Rncbhj>&HHu#kx5cHw(1I)7^!mk8^9Yt zSrcdSc&(ft5p4IYO8I7(#BTmLmk^F`l$;O8!ju1A!&lx8@te^P_!2_k)FvJ&JQQM^ z+^^m*sQ<0ooSTk*M-@uTx>W4|?IiKaCU|j8CmL)ec4(z$p*D;iNH>qgq^IG`*2t0C=@Y93{H2)a(3)y#oi=y~ZYur-kIVk8mF*1kArj#iDO=8>lf zB`PBWp1Qk~B|iJc@sz!V#7x0*7W(lx*Wp>Ib_e2a9X^V(UsfPx(jT#70w=JD+Ex{tFV z-UHqc&YPG9f^X97I%G~yh>`Z|2Q7t{fe`zw*zBUIcwcBUxTpJm#2)edw07waJ=fFe zKP8lNQl7~B&>b%n>fNQ1bk~*NK3A|XhvQrb&&qimQth5+ZXR`6yY7r&w9!O5_a=b; za-8E%nyTSHNENED#W5=Or@+eB`_t79od-l;PDR^a(34EX)zO}iU;l!EjKO!-{MVAz zdm*t^ePOze?4bFK$@<{)FYSDJIupg+uvZ2Tg=qbLin41oyVh{B&(ubrNIJX`d5-%~ zBLDqab?p2t;B0{}vAG2z=r_HS^}-3dX5d!}u2wo%g^yyJ@XvUB5b%>_n!>?=_v$~N z9tFzsFh%KkRQW#iCe%7XHTIbv*RJ#;0BO`gh(O87YHR!?!Slyn6L*F|^ONq8T5rC$ zb7-ecbjv67RjnINJ$if?5}5VL(5wFY4V#p>S#xfZDj5Xc1Ut}P?qV3~I1}-_`Q(Q- z;I#lNe`_jK4I*1dcQ2Lbey?rs;s|A(+DgbM_P*@jnVB)ukjtz>4IU2!7jp$43$$4s zT7P4>%b^_Z>abiHXoavTu2MQ{%Rj`Ay-aCP?Z=OJpp?|j(hZgEnDV0iYP6A@JOl#y zCn00cIJ=N3@@+0mL6(S>9q19mnfIK?n2?wce-wURVF#xrzAZS0D#l)tFTV^VnxgE| zD-a?ON+^ps6A~TUW>j07LB4bZJ<;v`7zzE+m<|n}cs3k0=0K-*gu!Daq#RvitqH2) zEWoc^n=V=x+qMPK(%U)5XN&XdPzCxBw&Sn*v4RCgpyebr;d1|m>R;{ERoV~Hb1dN~ zI1NCxVArgB>w{^)kX*qdOF_-!h6zXvM%f`9v#vW1p))2R!ynCxq-SPgd3KCW>^NnS zP{pB=baNzl+@ZymnHiax;3`zUu`jlw;g{vDNIQcn_pC`>$$1rM!|L$6^y+56zhn+g zakPL|bR3sj=+8N_)cZ!f!W1djP&mi6vL?ZU=OT#WXyM*`F)Siata|sSMKD$xY&Cka;9)9dZZ=+$v!|o~ zc*k{O_Lm6Q4V%XQ_Z)T06HkCvHZ?oNv$3@;1B39npPpk zZ7C^*@uZIcV?SR51eH{jY*NQo)TEi3cTwHjtMb<9*!ofe=cdH^dterW%M{YV1 zuE(Dn*)}pHjB)qOd=Cg_nF%S-)#m+OoAs4>kdPQTr=x2;m+j4p@E`>jP1UaVXTD;P5TG2<(^a=#^&IafI}wl8jR$NTKm|+L%Z7($ zPZPlFb-_q%(5oApMaB#(O80i2&MV*{rXbLUDMEnx0cV?RgCwI@cHI)sKM?ee3Us(z{_ZI2cy~)Hls4E{VPFlm|ICpi+7qu$*?+ z@yYq)cu4VxHCv-`b#H9KrCbfiPR>bpbtf(7`D1CpjpilTnrVu` zpGyoDd;dehAzA?}4Muy)~6ni4~3v0t$|lWx2`#_XE?P^}-ri64-<^P2X$Jv8XU;St0D9zyHnTrT&UwGPAW zn1!zy(Z|So(Im=(ciC}HC88k{A;Qg}g1=b|ngyRPM^xy(cP z9yVdQadv_UnU3=$%lY3~VH)&Nr+n_uH_5fI$B&gEq5HX6wVJdGd{r(thT44mE#ph+}oP>puD#nx`a>tgVRI_!k&0|lFFRmA)OD$Bq1+TO>f zad!CDE?mFLdUNyY)gOeO1Mal9ifJzCddr!*_B<&$B3#>JW{ zZ(ipb>0{Lzjh!+-*1zA7sjnP1O>KCsqN1NO>Ba`uy3O9Z)4n@5UK}j;ktepp(5x|Y zf?i_2AvS|gs)fUCYc)}x$;Hi0kKJ$Xc{swdmsz14RoQ7jG&D4)OYuB>IG*&wy?)EWGH)l3ES;g)`FwsFiv~~Wv0Ls`N|WfZ*LWP=+L;eaSrnjn5{RqZK_Oc zN;9O^UVjz+XzJkb(b1JHX)hpWGNC(uBqxL5{j4bCgE#sKLEJ0m;$TV1mq##|pq$Z| z?Q_eW-CeKum+DMp6ap#=eF5t640*n6hDN==EI2zHb@Ya_E1>*Iy4BfFlp`^XO7;h> z$2k>A$58idFxyUVNS8+i!a;<#Q|pby*fX1HH-&LAnU!dsV|7;MH60+l!}{qU?L7v` z>>4Jr$phWyi)NQ7n}`l;V>t1$N0zaltlwkhH#KP>v$m5?}_SfPxskcNdNtG@bvBR-r%TLRa5;>qO(ey)N4g zad(@`2&!Zo!d+lt;B*t}>gN@?l+}6!tB^P9`!PS@7~=qq{6! zt(M#~el?o5v9=s5$t$KXS-I}5XH8rPZ1z_&+c7XMo<;bEo0#uXEnz<=?v z1To`dx&R{ZGtvq_S1KA#k&h|251g>hGty)2G4u1}{-rHl{ajw&GwC|3yIE_b(SUO? z_hQgWlLzw0n?%dC$v@ZjtdKQzw6X~Wt?+P(*@s5}Z8nmPDDG(>;~T>I^K4 zi|nw5Hx%Q_m<4}a&|7+;OY*lx=GF4J%hZ*dz`b7+OP}kgpm~nXh0K9^%C{=Wtg}*9 zwvUomgr=4G;e|0Y1Ur#@gK+Zi1`}RXpUm>9@GC*MSD?>_y&N?Zu=Vr>dCRigwJo`P zLy|ljii9(vK#RFViH(w-D%+Y3PQ2358q{(>?~JBA1uG-EURdRwYtI%;4ra(XCJW85 zMeQfN6Y7fWsu1*sMG1}zeBD5psqIs!NOw*#*0Vu@3Ofr!6FaOY7&zKmM_cTChc~~V zN4-&!+{8N$=Y84BUP5ebtz3_yb}n_fXRzFa7($kqS9T{QeaDuQ*BB>+`Jd|(btA@- zt-m?#DV=1yEY)CL6);YbDU>I@KwJ}zcGZ0Dk6B433EG{LvY=~@ktmzjr1(vcHDBLr zBg@b!*X^n7k({3_u;?!QqCrA_!;i2Uyd@Q@5UIq9s!paTUCdG8#&=mT=CiO`@Dq;t z{%9!=JXsn@p)|(k=0UM_du;7DQV@o#AisZClzp{Mc+YeHIWmuwtSC$P7S?_9$5_BQ zD}5Jlxp5p%j#{S|1!<(z(5VSqhz#*rCI<|R-x)O*nxh1s{9}uM>@f%;`EHT=jkpc- z*1ZOweon=$gnJ1}Ma|UcJGfjCVizi9`DHK86+UBoVslOB?FRwMohL+{@RkP8=G(3p zK~xR4KQA$?N{B`9Nvn%T`Y_I!LDgCX8l`a+RFb`3{=V$_X1der$J*L2tzyoD#3x?S z(5XZA#$aGv^LMGmI7e`e{23-8uyI{ZzYue!yL!7v^Nm7?wB>+Plep05`w~f%3b+8J zeTI392D*5?{0eB}p|HWA48u*T8H&-M{TPxz2%R!}y-+_N!Q7hhfor&s9c%9CH-t zyj+f*r`_6a7eObS#N_cql@gUc1nq#vlM8YTY=GOTt#kQ7EjGFNbWy4tZlA3>pjjC{ zo1MiM9NprJE%l;oPJU<%_fQUb^8k@Ldajlc5qkM?`R14Ix!^s8H zLaHc+N`jThk#fetHyxEx!`#-YE<6^C@-3OJ%wJ=^lF{Tbnkq>;!40ai6wiFc`f=jB z;`@tcNs=|f$Vf;&P&~A=voq~u#R=rb{8W*gNn}#K{Fjo4N3o2x)6~c)LJ$uxoTNNQ z59EesmfF90C2-V_g_V&o0N)c!KcKlOOPJq=xQCM9#?67HEU{vL;TW(evq)|Dps)zEZ5`l}|z_jqvPpnE#&ut0;3!4aKPnRZMwxt(i1Q1N-;G$DBCtwagM(AX>?AZuyoK9 zEeT5A>%pjI^v{{x*VxIlL{RSzeD7sxm^ z=#Xip{a;}f2scKqSkLEw*nWgWC0S{Hu3&|MmURg-rUcbDAC={l{C-|=WgD-Lkk#wS zWHn|?#%Yut&i(`x?hv;5HtBliK7m_j#EWZ# zEYcS(&NVI5mNFu2a?^ib5_-LU#ke8ae4B}^uy=?<_DxPm(s|cFuZp9;! z@A00WkYA7k1H5RSo12lp(A-f&iQ;Wk*Z~b1PeE&klS(6VV|X7H>kVavgyCmzL~s2n zIl{^ce-{p#d?W6=h}9^tz-LKi&j_!e#7^>jx6gs+I%3^$&+QuZj3{81kvi{{5xD|H z4#vIjD!MD(yOa;kHZk%1MK@Pt6Y0^&+qn63VPY!yK(8r+YEgiy=l(RQs;lu8_$#s1 z`vERc_%qh516U%{M#pZV3(&sHMtrxr*n29W=fMcF0BX!EItqK!u*>NFfqLg~J^U2f z6P<6tPH(!)=w(HJMtpFhXJ%v+f6_uuA^O-BYVeaRR#;<6OG|s4Y>k;;*7+c8AJHp> z$2VEDK|5rCc^~6RnR+uLT>l*Nd;A3t@#R$>yT2`!Z1gHjkERwW! zI7i$^V64hlR%j|p>bmoicHaJVFXFksdWugLn7M%aS z)LD!tp6aB_vQqX+&PARwUvu7dAI|{AxCJHOA)oXj;AWoIj@wB5KITxzRnZf8u?QL8 yGHZuc+m!2wO$@;6f@Drq4q_!3el`R^m!_(o%2y?;(EkD^g!hU7 diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 6fb50da207e762857c8193d886b70653b9f6b917..3632757554280e5e5ca790459248eab5c8b622c8 100644 GIT binary patch delta 21003 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 U$S}dv1_Fz%wY}9N%d?4p0NRBn-2eap diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 852638bc3d6f06a5d006ca89f6772194dd9c9ac4..de7eca81c4848219b22459c6f674e89c1c2a9e07 100644 GIT binary patch delta 13113 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 bJp7E*|CefqLU#B81{^XHisGfBUwr=$&xYxO delta 12831 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 Vyr>S5tN;wyBt_*!%7yg&{s)VfFDZ*Bkpc$`yK zaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3K9+ z*DxbBCs&D!GbOXA7^I7fGp#5wHx;M1(cS%G+RA_<_I85~a|J6AONS#zWRnke*=C3V%IC2N!`t{>-1rSe|mt|eoWtl~tMgFOJ2q8)V zVRjCjn}euV6rJ58n>^NIjKEt2{4eR{0%ScuVnFHo4Z|=D!!V3LMXTQr`*S_l`u(s! z0HFWDgvjMy8vsTr)jR}w0C)ii`7sLvfbk!oyW=C$-LZ?5y-7Am6A_IB5GPQQ?|>+! zM6%vw4sq#hG7`5Vc+T2I_F0F-s@j_x6;n1b2#WM=y+Ht%TKZIRaTu$ z@(dvRALYMqh$&lJ3a%1Rn`z%ur~!EfkOPk4pf8}b;xYrs0mpFASD-Kz`($Zo3w{rFt&U?Ygh9j00001bW%=J06^y0W&i*H zetJ|`bVOxyV{&P5bZKvH004NLQ&wgsh#Q4h;K}ivRvE*JEtt$M85CWJrg- zsL1*TP(3h2LPTcT=SdrDUzp)g;7GRg52)JSX3KsMBckWCr0y0-Cm28jTem>joObi0 z6I21Pc2{z!2=(dUgv~2T5E40+UWURW+Njb|B6b({bX;# zLUU~{!39`ia0N%1ltCdzBSS*;exJFs=oS>%^AYa9$qV!yA;kDK4Y>dS002ovPDHLk FV1hbC#~T0u diff --git a/modular_citadel/icons/obj/clothing/space_nam.dmi b/modular_citadel/icons/obj/clothing/space_nam.dmi deleted file mode 100644 index 79e1bd6d777940ece6169674b95a4f546c45c27c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmV-V0eL_t(YiS3hNZ-XEZhGlY|6pB?V`~UxRFUPD7XqM4^?3)-9;`4BK zVAs9#uThd0@DE9&V#iw*g7=aph1%&uQU6eD{X3r=H3R8k7&H~@9P#mp7>p_Ti>86} zr7*DY)}9^idMylu-3e9X0+!wVG@T6Yb~Qa`w}NQaq-QDw!Y|W0`Gdc?zGsZ){2?YV z>lstX1q!@fmg&A5B0r9dVepwJj8LA;umz=}017dvO44>;_z2L(C z#38`pq5||)5rp8aUGM9TM?UKmmk1^3SU^<(gFEmFpIV?NEd;>M7~^dGqj7#EF9wn) zTi?E6gIDC4Ro?!i2}!Z;66}KaAplof6@MOqV;Bix`ztR~-~>0}xQmGe+=R<9Y^`uI dyuiNGbzd*w6D<*L#=-yq002ovPDHLkV1k{l{mcLW diff --git a/tgstation.dme b/tgstation.dme index c13db8171d..12d928295b 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1512,6 +1512,7 @@ #include "code\modules\clothing\glasses\_glasses.dm" #include "code\modules\clothing\glasses\engine_goggles.dm" #include "code\modules\clothing\glasses\hud.dm" +#include "code\modules\clothing\glasses\phantomthief.dm" #include "code\modules\clothing\glasses\vg_glasses.dm" #include "code\modules\clothing\gloves\_gloves.dm" #include "code\modules\clothing\gloves\boxing.dm" @@ -3052,8 +3053,6 @@ #include "modular_citadel\code\modules\client\verbs\who.dm" #include "modular_citadel\code\modules\clothing\clothing.dm" #include "modular_citadel\code\modules\clothing\neck.dm" -#include "modular_citadel\code\modules\clothing\glasses\phantomthief.dm" -#include "modular_citadel\code\modules\clothing\head\head.dm" #include "modular_citadel\code\modules\clothing\spacesuits\flightsuit.dm" #include "modular_citadel\code\modules\clothing\suits\polychromic_cloaks.dm" #include "modular_citadel\code\modules\clothing\suits\suits.dm" From cc53a0061feeba0558f8608f099fd9397a603f87 Mon Sep 17 00:00:00 2001 From: Fermi <> Date: Thu, 21 Nov 2019 02:15:58 +0000 Subject: [PATCH 002/135] Well it compiles --- code/game/data_huds.dm | 6 +- code/game/objects/items/devices/scanners.dm | 365 +++++++++--------- .../kitchen_machinery/smartfridge.dm | 16 +- .../chemistry/reagents/medicine_reagents.dm | 15 + .../reagents/reagent_containers/medspray.dm | 5 + .../emergency_cardioversion_recovery.dm | 119 ++++++ code/modules/surgery/graft_synthtissue.dm | 2 +- code/modules/surgery/organs/organ_internal.dm | 12 + icons/mob/hud.dmi | Bin 15921 -> 16268 bytes .../reagents/chemistry/reagents/healing.dm | 64 ++- 10 files changed, 402 insertions(+), 202 deletions(-) create mode 100644 code/modules/surgery/emergency_cardioversion_recovery.dm diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 65a7c6a954..55fe37008a 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -189,7 +189,11 @@ if(tod) var/tdelta = round(world.time - timeofdeath) if(tdelta < (DEFIB_TIME_LIMIT * 10)) - holder.icon_state = "huddefib" + var/obj/item/organ/heart/He = getorgan(/obj/item/organ/heart) + if(!He || He.organ_flags & ORGAN_FAILING) + holder.icon_state = "huddefibheart" + else + holder.icon_state = "huddefib" return holder.icon_state = "huddead" else diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index d6737b94e9..2cc0321f6a 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -131,13 +131,6 @@ SLIME SCANNER mob_status = "Deceased" oxy_loss = max(rand(1, 40), oxy_loss, (300 - (tox_loss + fire_loss + brute_loss))) // Random oxygen loss - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.undergoing_cardiac_arrest() && H.stat != DEAD) - to_chat(user, "Subject suffering from heart attack: Apply defibrillation or other electric shock immediately!") - if(H.undergoing_liver_failure() && H.stat != DEAD) //might be depreciated BUG_PROBABLE_CAUSE - to_chat(user, "Subject is suffering from liver failure: Apply Corazone and begin a liver transplant immediately!") - var/msg = "*---------*\nAnalyzing results for [M]:\n\tOverall status: [mob_status]\n" // Damage descriptions @@ -159,199 +152,190 @@ SLIME SCANNER msg += "\tCellular Damage Level: [M.getCloneLoss()].\n" if (!M.getorgan(/obj/item/organ/brain)) to_chat(user, "\tSubject lacks a brain.") //Unsure how this won't proc for 50% of the cit playerbase (This is a joke everyone on cit a cute.) - if(ishuman(M) && advanced) // Should I make this not advanced? - var/mob/living/carbon/human/H = M - var/obj/item/organ/liver/L = H.getorganslot("liver") - if(L) - if(L.swelling > 20) - msg += "\tSubject is suffering from an enlarged liver.\n" //i.e. shrink their liver or give them a transplant. - else - msg += "\tSubject's liver is missing.\n" - var/obj/item/organ/tongue/T = H.getorganslot("tongue") - if(T) - if(T.damage > 40) - msg += "\tSubject is suffering from severe burn tissue on their tongue.\n" //i.e. their tongue is shot - if(T.name == "fluffy tongue") - msg += "\tSubject is suffering from a fluffified tongue. Suggested cure: Yamerol or a tongue transplant.\n" - else - msg += "\tSubject's tongue is missing.\n" - var/obj/item/organ/lungs/Lung = H.getorganslot("lungs") - if(Lung) - if(Lung.damage > 150) - msg += "\tSubject is suffering from acute emphysema leading to trouble breathing.\n" //i.e. Their lungs are shot - else - msg += "\tSubject's lungs have collapsed from trauma!\n" - var/obj/item/organ/genital/penis/P = H.getorganslot("penis") - if(P) - if(P.length>20) - msg += "\tSubject has a sizeable gentleman's organ at [P.length] inches.\n" - var/obj/item/organ/genital/breasts/Br = H.getorganslot("breasts") - if(Br) - if(Br.cached_size>5) - msg += "\tSubject has a sizeable bosom with a [Br.size] cup.\n" - - if (M.getOrganLoss(ORGAN_SLOT_BRAIN) >= 200 || !M.getorgan(/obj/item/organ/brain)) - msg += "\tSubject's brain function is non-existent.\n" - else if (M.getOrganLoss(ORGAN_SLOT_BRAIN) >= 120) - msg += "\tSevere brain damage detected. Subject likely to have mental traumas.\n" - else if (M.getOrganLoss(ORGAN_SLOT_BRAIN) >= 45) - msg += "\tBrain damage detected.\n" - - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(LAZYLEN(C.get_traumas())) - var/list/trauma_text = list() - for(var/datum/brain_trauma/B in C.get_traumas()) - var/trauma_desc = "" - switch(B.resilience) - if(TRAUMA_RESILIENCE_SURGERY) - trauma_desc += "severe " - if(TRAUMA_RESILIENCE_LOBOTOMY) - trauma_desc += "deep-rooted " - if(TRAUMA_RESILIENCE_MAGIC, TRAUMA_RESILIENCE_ABSOLUTE) - trauma_desc += "permanent " - trauma_desc += B.scan_desc - trauma_text += trauma_desc - msg += "\tCerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)].\n" - if(C.roundstart_quirks.len) - msg += "\tSubject has the following physiological traits: [C.get_trait_string()].\n" - if(advanced) - msg += "\tBrain Activity Level: [(200 - M.getOrganLoss(ORGAN_SLOT_BRAIN))/2]%.\n" - if(M.radiation) - msg += "\tSubject is irradiated.\n" - msg += "\tRadiation Level: [M.radiation] rad\n" - - if(advanced && M.hallucinating()) - msg += "\tSubject is hallucinating.\n" - - //MKUltra - if(advanced && M.has_status_effect(/datum/status_effect/chem/enthrall)) - msg += "\tSubject has abnormal brain fuctions.\n" - - //Astrogen shenanigans - if(advanced && M.reagents.has_reagent("astral")) - if(M.mind) - msg += "\tWarning: subject may be possesed.\n" - else - msg += "\tSubject appears to be astrally projecting.\n" - - //Eyes and ears - if(advanced) - if(iscarbon(M)) - var/mob/living/carbon/C = M - var/obj/item/organ/ears/ears = C.getorganslot(ORGAN_SLOT_EARS) - msg += "\t==EAR STATUS==\n" - if(istype(ears)) - var/healthy = TRUE - if(HAS_TRAIT_FROM(C, TRAIT_DEAF, GENETIC_MUTATION)) - healthy = FALSE - msg += "\tSubject is genetically deaf.\n" - else if(HAS_TRAIT(C, TRAIT_DEAF)) - healthy = FALSE - msg += "\tSubject is deaf.\n" - else - if(ears.damage) - to_chat(user, "\tSubject has [ears.damage > ears.maxHealth ? "permanent ": "temporary "]hearing damage.") - healthy = FALSE - if(ears.deaf) - to_chat(user, "\tSubject is [ears.damage > ears.maxHealth ? "permanently ": "temporarily "] deaf.") - healthy = FALSE - if(healthy) - msg += "\tHealthy.\n" - else - msg += "\tSubject does not have ears.\n" - var/obj/item/organ/eyes/eyes = C.getorganslot(ORGAN_SLOT_EYES) - msg += "\t==EYE STATUS==\n" - if(istype(eyes)) - var/healthy = TRUE - if(HAS_TRAIT(C, TRAIT_BLIND)) - msg += "\tSubject is blind.\n" - healthy = FALSE - if(HAS_TRAIT(C, TRAIT_NEARSIGHT)) - msg += "\tSubject is nearsighted.\n" - healthy = FALSE - if(eyes.damage > 30) - msg += "\tSubject has severe eye damage.\n" - healthy = FALSE - else if(eyes.damage > 20) - msg += "\tSubject has significant eye damage.\n" - healthy = FALSE - else if(eyes.damage) - msg += "\tSubject has minor eye damage.\n" - healthy = FALSE - if(healthy) - msg += "\tHealthy.\n" - else - msg += "\tSubject does not have eyes.\n" - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/ldamage = H.return_liver_damage() - if(ldamage > 10) - msg += "\t[ldamage > 45 ? "Severe" : "Minor"] liver damage detected.\n" + // Body part damage report + var/list/dmgreport = list() if(iscarbon(M) && mode == 1) var/mob/living/carbon/C = M var/list/damaged = C.get_damaged_bodyparts(1,1) if(length(damaged)>0 || oxy_loss>0 || tox_loss>0 || fire_loss>0) - msg += "\tDamage: Brute-Burn-Toxin-Suffocation\n\t\tSpecifics: [brute_loss]-[fire_loss]-[tox_loss]-[oxy_loss]\n" - for(var/obj/item/bodypart/org in damaged) - msg += "\t\t[capitalize(org.name)]: [(org.brute_dam > 0) ? "[org.brute_dam]" : "0"]-[(org.burn_dam > 0) ? "[org.burn_dam]" : "0"]\n" + dmgreport += "\ + \ + \ + \ + \ + \ + \ + \ + \ + \ + " + + for(var/o in damaged) + var/obj/item/bodypart/org = o //head, left arm, right arm, etc. + dmgreport += "\ + \ + " + dmgreport += "
Damage:BruteBurnToxinSuffocation
Overall:[brute_loss][fire_loss][tox_loss][oxy_loss]
[capitalize(org.name)]:[(org.brute_dam > 0) ? "[org.brute_dam]" : "0"][(org.burn_dam > 0) ? "[org.burn_dam]" : "0"]
\n" + msg += dmgreport + //Organ damages report + var/heart_ded = FALSE if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/minor_damage - var/major_damage - var/max_damage - var/report_organs = FALSE + var/mob/living/carbon/C = M - //Piece together the lists to be reported - for(var/O in H.internal_organs) - var/obj/item/organ/organ = O - if(organ.organ_flags & ORGAN_FAILING) - report_organs = TRUE //if we report one organ, we report all organs, even if the lists are empty, just for consistency - if(max_damage) - max_damage += ", " //prelude the organ if we've already reported an organ - max_damage += organ.name //this just slaps the organ name into the string of text - else - max_damage = "\tNon-Functional Organs: " //our initial statement - max_damage += organ.name - else if(organ.damage > organ.high_threshold) - report_organs = TRUE - if(major_damage) - major_damage += ", " - major_damage += organ.name - else - major_damage = "\tSeverely Damaged Organs: " - major_damage += organ.name - else if(organ.damage > organ.low_threshold) - report_organs = TRUE - if(minor_damage) - minor_damage += ", " - minor_damage += organ.name - else - minor_damage = "\tMildly Damaged Organs: " - minor_damage += organ.name + for(var/organ in C.internal_organs) + var/temp_message + var/obj/item/organ/O = organ + + //EYES + if(istype(O, /obj/item/organ/eyes)) + var/obj/item/organ/eyes/eyes = O + if(advanced) + if(HAS_TRAIT(C, TRAIT_BLIND)) + temp_message += "\tSubject is blind." + if(HAS_TRAIT(C, TRAIT_NEARSIGHT)) + temp_message += "\tSubject is nearsighted." + if(eyes.damage > 30) + temp_message += "\tSubject has severe eye damage." + else if(eyes.damage > 20) + temp_message += "\tSubject has significant eye damage." + else if(eyes.damage) + temp_message += "\tSubject has minor eye damage." + + + //EARS + if(istype(O, /obj/item/organ/ears)) + var/obj/item/organ/ears/ears = O + if(advanced) + if(HAS_TRAIT_FROM(C, TRAIT_DEAF, GENETIC_MUTATION)) + temp_message += "\tSubject is genetically deaf." + else if(HAS_TRAIT(C, TRAIT_DEAF)) + temp_message += "\tSubject is deaf." + else + if(ears.damage) + temp_message += "\tSubject has [ears.damage > ears.maxHealth ? "permanent ": "temporary "]hearing damage." + if(ears.deaf) + temp_message += "\tSubject is [ears.damage > ears.maxHealth ? "permanently ": "temporarily "] deaf." + + + //BRAIN + if(istype(O, /obj/item/organ/brain)) + if (C.getOrganLoss(ORGAN_SLOT_BRAIN) >= 200) + temp_message += "\tSubject's brain function is non-existent. Neurine injection recomended." + else if (C.getOrganLoss(ORGAN_SLOT_BRAIN) >= 120) + temp_message += "\tSevere brain damage detected. Subject likely to have mental traumas." + else if (C.getOrganLoss(ORGAN_SLOT_BRAIN) >= 45) + temp_message += "\tBrain damage detected." + else + temp_message += "\tFunctional Brain detected." + if(advanced) + temp_message += "\tBrain Activity Level: [(200 - M.getOrganLoss(ORGAN_SLOT_BRAIN))/2]%." + + //TRAUMAS + if(LAZYLEN(C.get_traumas())) + var/list/trauma_text = list() + for(var/datum/brain_trauma/B in C.get_traumas()) + var/trauma_desc = "" + switch(B.resilience) + if(TRAUMA_RESILIENCE_SURGERY) + trauma_desc += "severe " + if(TRAUMA_RESILIENCE_LOBOTOMY) + trauma_desc += "deep-rooted " + if(TRAUMA_RESILIENCE_MAGIC, TRAUMA_RESILIENCE_ABSOLUTE) + trauma_desc += "permanent " + trauma_desc += B.scan_desc + trauma_text += trauma_desc + temp_message += "\tCerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)]." + if(C.roundstart_quirks.len) + temp_message += "\tSubject has the following physiological traits: [C.get_trait_string()]." + + if(ishuman(C) && advanced) + var/mob/living/carbon/human/H = M + //MON PETIT CHAUFFEUR + if(H.hallucinating()) + temp_message += "\tSubject is hallucinating." + + //MKUltra + if(H.has_status_effect(/datum/status_effect/chem/enthrall)) + temp_message += "\tSubject has abnormal brain fuctions." + + //Astrogen shenanigans + if(H.reagents.has_reagent("astral")) + if(H.mind) + temp_message += "\tWarning: subject may be possesed." + else + temp_message += "\tSubject appears to be astrally projecting." + + + //LIVER + if(istype(O, /obj/item/organ/liver)) + var/obj/item/organ/liver/L = O + if(L.swelling > 20) + msg += "\tSubject is suffering from an enlarged liver." //i.e. shrink their liver or give them a transplant. + + //HEART + if(ishuman(M) && (istype(O, /obj/item/organ/heart))) + var/obj/item/organ/heart/He = O + var/mob/living/carbon/human/H = M + if(H.undergoing_cardiac_arrest() && H.stat != DEAD) + msg += "\tSubject suffering from heart attack: Apply defibrillation or other electric shock immediately!" + if(He.organ_flags & ORGAN_FAILING) + heart_ded = TRUE + + //TONGUE + if(istype(O, /obj/item/organ/tongue)) + var/obj/item/organ/tongue/T = O + if(T.name == "fluffy tongue") + msg += "\tSubject is suffering from a fluffified tongue. Suggested cure: Yamerol or a tongue transplant." + + //HECK + if(istype(O, /obj/item/organ/genital/penis)) + var/obj/item/organ/genital/penis/P = O + if(P.length>20) + msg += "\tSubject has a sizeable gentleman's organ at [P.length] inches." + + if(istype(O, /obj/item/organ/genital/breasts)) + var/obj/item/organ/genital/breasts/Br = O + if(Br.cached_size>5) + msg += "\tSubject has a sizeable bosom with a [Br.size] cup." + + //GENERAL HANDLER + var/damage_message + if(O.organ_flags & ORGAN_FAILING) + damage_message += "\tEnd Stage [O.name] failure detected." + else if(O.damage > O.high_threshold) + damage_message += "\tChronic [O.name] failure detected." + else if(O.damage > O.low_threshold && advanced) + damage_message += "\tAcute [O.name] failure detected." + + if(temp_message || damage_message) + msg += "[O.name]: [damage_message] [temp_message]\n" + + + + //END; LOOK FOR MISSING ORGANS? + if(!M.getorgan(/obj/item/organ/eyes)) + msg += "\tSubject does not have eyes.\n" + if(!M.getorgan(/obj/item/organ/ears)) + msg += "\tSubject does not have ears.\n" + if(!M.getorgan(/obj/item/organ/brain)) + msg += "\tSubject's brain function is non-existent.\n" + if(!M.getorgan(/obj/item/organ/liver)) + msg += "\tSubject's liver is missing.\n" + if(!M.getorgan(/obj/item/organ/lungs)) + msg += "\tSubject's lungs have collapsed from trauma!\n" + if(!M.getorgan(/obj/item/organ/heart)) + msg += "\tSubject's heart is missing!\n" + + if(M.radiation) + msg += "\tSubject is irradiated.\n" + msg += "\tRadiation Level: [M.radiation] rad\n" - if(report_organs) //we either finish the list, or set it to be empty if no organs were reported in that category - if(!max_damage) - max_damage = "\tNon-Functional Organs: \n" - else - max_damage += "\n" - if(!major_damage) - major_damage = "\tSeverely Damaged Organs: \n" - else - major_damage += "\n" - if(!minor_damage) - minor_damage = "\tMildly Damaged Organs: \n" - else - minor_damage += "
\n" - msg += "[minor_damage]" - msg += "[major_damage]" - msg += "[max_damage]" // Species and body temperature @@ -382,7 +366,7 @@ SLIME SCANNER else if (S.mutantstomach != initial(S.mutantstomach)) mutant = TRUE - msg += "\tReported Species: [H.dna.custom_species ? H.dna.custom_species : S.name]\n" + msg += "\tReported Species: [H.dna.custom_species ? H.dna.custom_species : S.name]\n" msg += "\tBase Species: [S.name]\n" if(mutant) msg += "\tSubject has mutations present.\n" @@ -393,7 +377,10 @@ SLIME SCANNER msg += "Time of Death: [M.tod]\n" var/tdelta = round(world.time - M.timeofdeath) if(tdelta < (DEFIB_TIME_LIMIT * 10)) - msg += "Subject died [DisplayTimeText(tdelta)] ago, defibrillation may be possible!\n" + if(heart_ded) + msg += "Subject died [DisplayTimeText(tdelta)] ago, heart requires surgical intervention for defibrillation.\n" + else + msg += "Subject died [DisplayTimeText(tdelta)] ago, defibrillation may be possible!\n" for(var/thing in M.diseases) var/datum/disease/D = thing diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index ceb7a01ede..88176f4f26 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -144,7 +144,7 @@ else O.forceMove(src) return TRUE - + ///Really simple proc, just moves the object "O" into the hands of mob "M" if able, done so I could modify the proc a little for the organ fridge /obj/machinery/smartfridge/proc/dispense(obj/item/O, var/mob/M) if(!M.put_in_hands(O)) @@ -388,12 +388,18 @@ /obj/machinery/smartfridge/organ name = "smart organ storage" desc = "A refrigerated storage unit for organ storage." - max_n_of_items = 20 //vastly lower to prevent processing too long + max_n_of_items = 25 //vastly lower to prevent processing too long var/repair_rate = 0 /obj/machinery/smartfridge/organ/accept_check(obj/item/O) if(istype(O, /obj/item/organ)) return TRUE + if(istype(O, /obj/item/reagent_containers/syringe)) + return TRUE + if(istype(O, /obj/item/reagent_containers/glass/bottle)) + return TRUE + if(istype(O, /obj/item/reagent_containers/medspray)) + return TRUE return FALSE /obj/machinery/smartfridge/organ/load(obj/item/O) @@ -420,6 +426,12 @@ if(istype(AM)) AM.organ_flags &= ~ORGAN_FROZEN +/obj/machinery/smartfridge/chemistry/preloaded + initial_contents = list( + /obj/item/organ/random = 1, + /obj/item/reagent_containers/medspray/synthtissue = 1, + /obj/item/reagent_containers/medspray/sterilizine = 1) + // ----------------------------- // Chemistry Medical Smartfridge // ----------------------------- diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index c4decc081d..d864616b9f 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -940,6 +940,21 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) description = "Reacts with neural tissue, helping reform damaged connections. Can cure minor traumas." color = "#EEFF8F" +/datum/reagent/neurine/reaction_mob(mob/living/M, method=TOUCH, reac_volume) + var/mob/living/carbon/C = M + if(!C) + return + var/obj/item/organ/brain/B = C.getorganslot(ORGAN_SLOT_BRAIN) + if(method == INJECT) + if(B.organ_flags & ORGAN_FAILING) + B.applyOrganDamage(-20) + if(prob(80)) + B.gain_trauma_type(BRAIN_TRAUMA_MILD) + else if(prob(50)) + B.gain_trauma_type(BRAIN_TRAUMA_SEVERE) + else + B.gain_trauma_type(BRAIN_TRAUMA_SPECIAL) + /datum/reagent/medicine/neurine/on_mob_life(mob/living/carbon/C) if(holder.has_reagent("neurotoxin")) holder.remove_reagent("neurotoxin", 5) diff --git a/code/modules/reagents/reagent_containers/medspray.dm b/code/modules/reagents/reagent_containers/medspray.dm index df7c7af225..b445c38ad9 100644 --- a/code/modules/reagents/reagent_containers/medspray.dm +++ b/code/modules/reagents/reagent_containers/medspray.dm @@ -100,3 +100,8 @@ name = "sterilizer spray" desc = "Spray bottle loaded with non-toxic sterilizer. Useful in preparation for surgery." list_reagents = list("sterilizine" = 60) + +/obj/item/reagent_containers/medspray/synthtissue + name = "Synthtissue young culture spray" + desc = "Spray bottle loaded with synthtissue. Useful in synthtissue grafting surgeries." + list_reagents = list("synthtissue" = 60) diff --git a/code/modules/surgery/emergency_cardioversion_recovery.dm b/code/modules/surgery/emergency_cardioversion_recovery.dm new file mode 100644 index 0000000000..4d3a6ed72c --- /dev/null +++ b/code/modules/surgery/emergency_cardioversion_recovery.dm @@ -0,0 +1,119 @@ +/datum/surgery/cardioversion + name = "Emergency Cardioversion Induction" + steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/clamp_bleeders, + /datum/surgery_step/incise_heart, /datum/surgery_step/ventricular_electrotherapy, /datum/surgery_step/close) + possible_locs = list(BODY_ZONE_CHEST) + +/datum/surgery_step/ventricular_electrotherapy + name = "ventricular electrotherapy" + implements = list(/obj/item/twohanded/shockpaddles = 90, /obj/item/defibrillator = 75, /obj/item/inducer = 55, /obj/item/stock_parts/cell = 25) //Just because the idea of a new player using the whole magine to defib is hillarious to me + time = 50 + repeatable = TRUE //So you can retry + +/datum/surgery_step/incise_heart/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + display_results(user, target, "You begin apply an electrical charge directly to the heart and across the body...", + "[user] begins to make an incision in [target]'s heart.", + "[user] begins to make an incision in [target]'s heart.") + target.notify_ghost_cloning("Your heart is undergoing Emergency Cardioversion Induction!") + playsound(src, 'sound/machines/defib_charge.ogg', 75, 0) + +/datum/surgery_step/incise_heart/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + playsound(src, 'sound/machines/defib_zap.ogg', 75, 1, -1) + playsound(src, "bodyfall", 50, 1) + if(H.stat == DEAD) + display_results(user, target, "You can't use this procedure on the living! [H]'s body flops madly like a wild fish on the table from the current, and your crazed surgical methods.", + "[user] screws up, causing [H] to flop around violently as they're zapped!", + "[user] screws up, causing [H] to flop around violently as they're zapped!") + M.emote("scream") + H.electrocute_act(25, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE) + H.emote("flip") + H.Jitter(100) + return FALSE + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if (!(NOBLOOD in H.dna.species.species_traits)) + display_results(user, target, "induces a stable rythum in [H]'s heart.", + "[H]'s heart is shocked, attemping to bring them back to a stable rythum!.", + "") + H.bleed_rate += 10 + H.adjustBruteLoss(10) + H.adjustOrganLoss(ORGAN_SLOT_HEART, -10) + H.adjustOrganLoss(ORGAN_SLOT_BRAIN, -5) + H.electrocute_act(0, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE) + if(!do_they_live(H)) + playsound(src, 'sound/machines/defib_failed.ogg', 50, 0) + return TRUE + +/datum/surgery_step/incise_heart/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + playsound(src, 'sound/machines/defib_zap.ogg', 75, 1, -1) + playsound(src, "bodyfall", 50, 1) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + display_results(user, target, "You screw up, sending current racing though their body!", + "[user] screws up, causing [H] to flop around violently as they're zapped!", + "[user] screws up, causing [H] to flop around violently as they're zapped!") + H.electrocute_act(25, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE) + H.emote("flip") + H.adjustOrganLoss(ORGAN_SLOT_HEART, 10) + +/datum/surgery_step/incise_heart/do_they_live(mob/living/carbon/human/H) + + var/obj/item/organ/heart = H.getorgan(/obj/item/organ/heart) + H.visible_message("[H]'s body convulses a bit.") + total_brute = H.getBruteLoss() + total_burn = H.getFireLoss() + shock_touching(30, H) + var/failed + var/tdelta = round(world.time - timeofdeath) + + + if (H.suiciding || (HAS_TRAIT(H, TRAIT_NOCLONE))) + failed = "The [src] equipment buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile." + else if (H.hellbound) + failed = "The [src] equipment buzzes: Resuscitation failed - Patient's soul appears to be on another plane of existence. Further attempts futile." + else if(tdelta < (DEFIB_TIME_LIMIT * 10)) + failed = "The [src] equipment buzzes: Resuscitation failed - Body has decayed for too long. Further attempts futile." + else if (!heart) + failed = "The [src] equipment buzzes: Resuscitation failed - Patient's heart is missing." + else if (heart.organ_flags & ORGAN_FAILING) + failed = "The [src] equipment buzzes: Resuscitation failed - Patient's heart too damaged." + else if(total_burn >= 180 || total_brute >= 180) + failed = "The [src] equipment buzzes: Resuscitation failed - Severe tissue damage makes recovery of patient impossible via surgery. Further attempts futile." + else if(H.get_ghost()) + failed = "The [src] equipment buzzes: Resuscitation failed - No activity in patient's brain. Further attempts may be successful." + else + var/obj/item/organ/brain/BR = H.getorgan(/obj/item/organ/brain) + if(BR) + if(BR.organ_flags & ORGAN_FAILING) + failed = "The [src] equipment buzzes: Resuscitation failed - Patient's brain tissue is damaged making recovery of patient impossible via surgery. Further attempts futile." + if(BR.brain_death) + failed = "The [src] equipment buzzes: Resuscitation failed - Patient's brain damaged beyond point of no return. Further attempts futile." + if(H.suiciding || BR.brainmob?.suiciding) + failed = "The [src] equipment buzzes: Resuscitation failed - No intelligence pattern can be detected in patient's brain. Further attempts futile." + else + failed = "The [src] equipment buzzes: Resuscitation failed - Patient's brain is missing. Further attempts futile." + + + if(failed) + user.visible_message(failed) + playsound(src, 'sound/machines/defib_failed.ogg', 50, 0) + else + //If the body has been fixed so that they would not be in crit when defibbed, give them oxyloss to put them back into crit + if (H.health > HALFWAYCRITDEATH) + H.adjustOxyLoss(H.health - HALFWAYCRITDEATH, 0) + else + var/overall_damage = total_brute + total_burn + H.getToxLoss() + H.getOxyLoss() + var/mobhealth = H.health + H.adjustOxyLoss((mobhealth - HALFWAYCRITDEATH) * (H.getOxyLoss() / overall_damage), 0) + H.adjustToxLoss((mobhealth - HALFWAYCRITDEATH) * (H.getToxLoss() / overall_damage), 0) + H.adjustFireLoss((mobhealth - HALFWAYCRITDEATH) * (total_burn / overall_damage), 0) + H.adjustBruteLoss((mobhealth - HALFWAYCRITDEATH) * (total_brute / overall_damage), 0) + H.updatehealth() // Previous "adjust" procs don't update health, so we do it manually. + user.visible_message("The [src] equipment pings: Resuscitation successful.") + playsound(src, 'sound/machines/defib_success.ogg', 50, 0) + H.set_heartattack(FALSE) + H.revive() + H.emote("gasp") + H.Jitter(100) + SEND_SIGNAL(H, COMSIG_LIVING_MINOR_SHOCK) + log_combat(user, H, "revived", "Emergency Cardioversion Induction") diff --git a/code/modules/surgery/graft_synthtissue.dm b/code/modules/surgery/graft_synthtissue.dm index 7540b2cd94..86b2a8e909 100644 --- a/code/modules/surgery/graft_synthtissue.dm +++ b/code/modules/surgery/graft_synthtissue.dm @@ -49,7 +49,7 @@ to_chat(user, "There's not enough synthtissue to perform the operation! There needs to be at least 10u.") return -1 - if((chosen_organ.organ_flags & ORGAN_FAILING) && !(Sf.data["grown_volume"] >= 115)) + if((chosen_organ.organ_flags & ORGAN_FAILING) && !(Sf.data["grown_volume"] >= 80)) to_chat(user, "[chosen_organ] is too damaged to graft onto!") return -1 diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 194a10f4c4..ad0b7f46fe 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -365,3 +365,15 @@ tail.Insert(src) if(only_one) return TRUE + +/obj/item/organ/random + name = "Illegal organ" + desc = "Something fucked up" + +/obj/item/organ/random/Initialize() + ..() + var/list = subtypesof(/obj/item/organ) + list -= /obj/item/organ/random + var/newtype = pick(list) + new newtype(loc) + return INITIALIZE_HINT_QDEL diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 164fabe8063e39972b342358fc0786ad3fd4472e..17b5e9fd99514ff6ae39c85e2390e04296d48d7e 100644 GIT binary patch literal 16268 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 Gh5aAMnpva( literal 15921 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 diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm index 4949cc6ecf..5f89a7e4ed 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm @@ -102,20 +102,35 @@ pH = 7.6 metabolization_rate = 0.05 //Give them time to graft data = list("grown_volume" = 0, "injected_vol" = 0) + var/borrowed_health /datum/reagent/synthtissue/reaction_mob(mob/living/M, method=TOUCH, reac_volume,show_message = 1) if(iscarbon(M)) - var/target = M.zone_selected - if (M.stat == DEAD) - show_message = 0 + var/mob/living/carbon/C = M + var/healing_factor = (((data["grown_volume"] / 100) + 1)*reac_volume) if(method in list(PATCH, TOUCH)) - M.apply_damage(reac_volume*-1.5, BRUTE, target) - M.apply_damage(reac_volume*-1.5, BURN, target) - if(show_message) - to_chat(M, "You feel your [target] heal! It stings like hell!") + if (M.stat == DEAD) + M.visible_message("The synthetic tissue rapidly grafts into [M]'s wounds, attemping to repair the damage as quickly as possible.") + borrowed_health += healing_factor + M.adjustBruteLoss(-healing_factor*2) + M.adjustFireLoss(-healing_factor*2) + M.adjustToxLoss(-healing_factor) + M.adjustCloneLoss(-healing_factor) + M.updatehealth() + if(data["grown_volume"] > 135 && ((C.health + C.oxyloss)>=80)) + if(M.revive()) + M.emote("gasp") + log_combat(M, M, "revived", src) + else + M.adjustBruteLoss(-healing_factor) + M.adjustFireLoss(-healing_factor) + to_chat(M, "You feel your flesh merge with the synthetic tissue! It stings like hell!") SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) - if(method==INJECT) - data["injected_vol"] = reac_volume + if(method==INJECT) + data["injected_vol"] = reac_volume + var/obj/item/organ/heart/H = C.getorganslot(ORGAN_SLOT_HEART) + if(data["grown_volume"] > 50 && H.organ_flags & ORGAN_FAILING) + H.applyOrganDamage(-20) ..() /datum/reagent/synthtissue/on_mob_life(mob/living/carbon/C) @@ -129,6 +144,10 @@ to_chat(C, "You feel something reform inside of you!") data["injected_vol"] -= metabolization_rate + if(borrowed_health) + C.adjustToxLoss(1) + C.adjustCloneLoss(1) + borrowed_health -= 1 ..() /datum/reagent/synthtissue/on_merge(passed_data) @@ -139,6 +158,7 @@ if(iscarbon(holder.my_atom)) data["injected_vol"] = data["injected_vol"] + passed_data["injected_vol"] passed_data["injected_vol"] = 0 + update_name() ..() /datum/reagent/synthtissue/on_new(passed_data) @@ -146,6 +166,32 @@ return ..() if(passed_data["grown_volume"] > data["grown_volume"]) data["grown_volume"] = passed_data["grown_volume"] + update_name() ..() +/datum/reagent/synthtissue/proc/update_name() + switch(data["grown_volume"]) + if(-INFINITY to 50) + name = "Young Synthtissue Colony" + if(50 to 80) + name = "Adolescent Synthtissue Colony" + if(80 to 135) + name = "Adult Synthtissue Colony" + if(135 to 175) + name = "Master Synthtissue Colony" + if(175 to INFINITY) + name = "Apex Synthtissue Colony" + +/datum/reagent/synthtissue/on_mob_delete(mob/living/M) + if(!iscarbon(M)) + return + var/mob/living/carbon/C = M + C.adjustBruteLoss(borrowed_health*1.25) + C.adjustToxLoss(borrowed_health*1.25) + C.adjustCloneLoss(borrowed_health*1.25) + C.adjustAllOrganLoss(borrowed_health*0.25) + M.updatehealth() + if(borrowed_health && C.health < -20) + M.stat = DEAD + M.visible_message("The synthetic tissue degrades off [M]'s wounds as they collapse to the floor.") //NEEDS ON_MOB_DEAD() From ff7b070fa1164b7fb12b615fd0e03163813ed8cd Mon Sep 17 00:00:00 2001 From: Fermi <> Date: Thu, 21 Nov 2019 02:16:15 +0000 Subject: [PATCH 003/135] Maps --- _maps/map_files/BoxStation/BoxStation.dmm | 12 +++++++---- .../map_files/Deltastation/DeltaStation2.dmm | 11 +++++----- _maps/map_files/MetaStation/MetaStation.dmm | 12 +++++++---- _maps/map_files/OmegaStation/OmegaStation.dmm | 6 +++++- _maps/map_files/PubbyStation/PubbyStation.dmm | 20 +++++++++++-------- 5 files changed, 39 insertions(+), 22 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 53b12ca0bb..d8671b6a27 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -35129,9 +35129,6 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "bDD" = ( -/obj/structure/sign/warning/nosmoking{ - pixel_x = -28 - }, /obj/structure/bed, /obj/item/bedsheet/medical, /obj/effect/turf_decal/tile/blue{ @@ -36070,6 +36067,9 @@ "bFJ" = ( /obj/structure/bed, /obj/item/bedsheet/medical, +/obj/structure/sign/warning/nosmoking{ + pixel_x = -28 + }, /turf/open/floor/plasteel/white, /area/medical/sleeper) "bFK" = ( @@ -57530,6 +57530,10 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"nWU" = ( +/obj/machinery/smartfridge/organ, +/turf/closed/wall, +/area/medical/sleeper) "oce" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 @@ -93288,7 +93292,7 @@ bvj bvj bvd bFu -bvj +nWU bvj bvd bKH diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index d9d46066bf..7d4644dd35 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -103794,10 +103794,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "dsI" = ( -/obj/structure/sign/warning/nosmoking, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, +/obj/machinery/smartfridge/organ, /turf/closed/wall, /area/medical/surgery) "dsJ" = ( @@ -127428,6 +127425,10 @@ /obj/item/assembly/signaler, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) +"mMC" = ( +/obj/structure/sign/warning/nosmoking, +/turf/closed/wall, +/area/medical/surgery) "mQE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -174919,7 +174920,7 @@ dkv dma dma dma -dma +mMC dsI dro dvz diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index f72a787214..a21e6da9a8 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -62776,6 +62776,9 @@ "cro" = ( /obj/structure/bed/roller, /obj/machinery/iv_drip, +/obj/structure/sign/warning/nosmoking{ + pixel_x = -28 + }, /turf/open/floor/plasteel/white, /area/medical/surgery) "crq" = ( @@ -63296,9 +63299,6 @@ dir = 1; pixel_y = -22 }, -/obj/structure/sign/warning/nosmoking{ - pixel_x = -28 - }, /obj/machinery/iv_drip, /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -83997,6 +83997,10 @@ }, /turf/open/floor/plating, /area/maintenance/port) +"qnB" = ( +/obj/machinery/smartfridge/organ, +/turf/closed/wall, +/area/medical/surgery) "qqg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -104229,7 +104233,7 @@ cia cia cpX cia -cia +qnB cia ceu dyg diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index a7ab212bd6..0722811852 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -42880,6 +42880,10 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"uvp" = ( +/obj/machinery/smartfridge/organ, +/turf/closed/wall, +/area/medical/medbay/zone3) "uxJ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -81595,7 +81599,7 @@ aSh bcf bcW blt -aSh +uvp aOL bfA bfX diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index d70bc0187b..20bfe0e850 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -37749,6 +37749,9 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/machinery/light_switch{ + pixel_x = -22 + }, /turf/open/floor/plasteel/white, /area/medical/surgery) "bIp" = ( @@ -38828,10 +38831,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -26 - }, /obj/effect/turf_decal/tile/blue{ dir = 1 }, @@ -39305,15 +39304,16 @@ /obj/item/clothing/gloves/color/latex, /obj/item/clothing/mask/surgical, /obj/item/clothing/suit/apron/surgical, -/obj/machinery/light_switch{ - pixel_x = -22 - }, /obj/effect/turf_decal/tile/blue{ dir = 1 }, /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, /turf/open/floor/plasteel/white, /area/medical/surgery) "bLN" = ( @@ -55674,6 +55674,10 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"jdA" = ( +/obj/machinery/smartfridge/organ, +/turf/closed/wall, +/area/medical/surgery) "jeq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -92221,7 +92225,7 @@ bFU bFU bIn bJt -bFU +jdA bFU bFU bFU From ef78757ed8b6c978461c6d803f5a2694918aae47 Mon Sep 17 00:00:00 2001 From: Fermi <> Date: Thu, 21 Nov 2019 02:19:25 +0000 Subject: [PATCH 004/135] oops --- _maps/map_files/Deltastation/DeltaStation2.dmm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 7d4644dd35..c7a902f090 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -103795,6 +103795,9 @@ /area/medical/medbay/central) "dsI" = ( /obj/machinery/smartfridge/organ, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/closed/wall, /area/medical/surgery) "dsJ" = ( From 435d2f893e7c314774fb3deb52d4c3a8f96380f9 Mon Sep 17 00:00:00 2001 From: Putnam Date: Wed, 20 Nov 2019 18:31:39 -0800 Subject: [PATCH 005/135] Makes roundend threat log only show actual changes. --- code/__HELPERS/roundend.dm | 7 +++---- code/game/gamemodes/dynamic/dynamic.dm | 6 +++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index 2c92816264..b899d7f6ab 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -313,14 +313,13 @@ parts += "[FOURSPACES]Threat level: [mode.threat_level]" parts += "[FOURSPACES]Threat left: [mode.threat]" parts += "[FOURSPACES]Executed rules:" + for(var/datum/dynamic_ruleset/rule in mode.executed_rules) + parts += "[FOURSPACES][FOURSPACES][rule.ruletype] - [rule.name]: -[rule.cost + rule.scaled_times * rule.scaling_cost] threat" + parts += "[FOURSPACES]Other threat changes:" for(var/str in mode.threat_log) parts += "[FOURSPACES][FOURSPACES][str]" for(var/entry in mode.threat_tallies) parts += "[FOURSPACES][FOURSPACES][entry] added [mode.threat_tallies[entry]]" - /* - for(var/datum/dynamic_ruleset/rule in mode.executed_rules) - parts += "[FOURSPACES][FOURSPACES][rule.ruletype] - [rule.name]: -[rule.cost + rule.scaled_times * rule.scaling_cost] threat" - */ return parts.Join("
") /client/proc/roundend_report_file() diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index 83a3debfdc..9b97b6a623 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -510,7 +510,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) var/added_threat = starting_rule.scale_up(extra_rulesets_amount, threat) if (starting_rule.pre_execute()) spend_threat(starting_rule.cost + added_threat) - log_threat("[starting_rule.ruletype] - [starting_rule.name] -[starting_rule.cost + starting_rule.scaled_times * starting_rule.scaling_cost] threat") + log_threat("[starting_rule.ruletype] - [starting_rule.name] -[starting_rule.cost + starting_rule.scaled_times * starting_rule.scaling_cost] threat", verbose = TRUE) if(starting_rule.flags & HIGHLANDER_RULESET) highlander_executed = TRUE else if(starting_rule.flags & ONLY_RULESET) @@ -605,7 +605,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) new_rule.trim_candidates() if (new_rule.ready(forced)) spend_threat(new_rule.cost) - log_threat("[new_rule.ruletype] - [new_rule.name] -[new_rule.cost] threat") + log_threat("[new_rule.ruletype] - [new_rule.name] -[new_rule.cost] threat", verbose = TRUE) if (new_rule.execute()) // This should never fail since ready() returned 1 if(new_rule.flags & HIGHLANDER_RULESET) highlander_executed = TRUE @@ -626,7 +626,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) if (rule.execute()) log_game("DYNAMIC: Injected a [rule.ruletype == "latejoin" ? "latejoin" : "midround"] ruleset [rule.name].") spend_threat(rule.cost) - log_threat("[rule.ruletype] [rule.name] spent [rule.cost]") + log_threat("[rule.ruletype] [rule.name] spent [rule.cost]", verbose = TRUE) if(rule.flags & HIGHLANDER_RULESET) highlander_executed = TRUE else if(rule.flags & ONLY_RULESET) From 18e1246fd0e27a907aa4de8d5ba0f070fb4bfb56 Mon Sep 17 00:00:00 2001 From: Fermi <> Date: Thu, 21 Nov 2019 03:16:18 +0000 Subject: [PATCH 006/135] Classic fixes --- _maps/map_files/BoxStation/BoxStation.dmm | 2 +- .../map_files/Deltastation/DeltaStation2.dmm | 2 +- _maps/map_files/MetaStation/MetaStation.dmm | 2 +- _maps/map_files/OmegaStation/OmegaStation.dmm | 4 +- _maps/map_files/PubbyStation/PubbyStation.dmm | 2 +- code/game/data_huds.dm | 8 +- code/game/objects/items/devices/scanners.dm | 82 +++++++++--------- .../kitchen_machinery/smartfridge.dm | 2 +- code/modules/surgery/organs/organ_internal.dm | 7 +- icons/mob/hud.dmi | Bin 16268 -> 16277 bytes 10 files changed, 60 insertions(+), 51 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index d8671b6a27..55ed3e72ff 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -57531,7 +57531,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "nWU" = ( -/obj/machinery/smartfridge/organ, +/obj/machinery/smartfridge/organ/preloaded, /turf/closed/wall, /area/medical/sleeper) "oce" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index c7a902f090..ac7d291b2f 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -103794,10 +103794,10 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "dsI" = ( -/obj/machinery/smartfridge/organ, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/machinery/smartfridge/organ/preloaded, /turf/closed/wall, /area/medical/surgery) "dsJ" = ( diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index a21e6da9a8..0e6feb67c6 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -83998,7 +83998,7 @@ /turf/open/floor/plating, /area/maintenance/port) "qnB" = ( -/obj/machinery/smartfridge/organ, +/obj/machinery/smartfridge/organ/preloaded, /turf/closed/wall, /area/medical/surgery) "qqg" = ( diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 0722811852..bd3d72dc85 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -42881,7 +42881,9 @@ /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "uvp" = ( -/obj/machinery/smartfridge/organ, +/obj/machinery/smartfridge/organ/preloaded{ + pixel_y = 2 + }, /turf/closed/wall, /area/medical/medbay/zone3) "uxJ" = ( diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 20bfe0e850..9f1c1824cd 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -55675,7 +55675,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "jdA" = ( -/obj/machinery/smartfridge/organ, +/obj/machinery/smartfridge/organ/preloaded, /turf/closed/wall, /area/medical/surgery) "jeq" = ( diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 55fe37008a..1a57cf5051 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -190,10 +190,12 @@ var/tdelta = round(world.time - timeofdeath) if(tdelta < (DEFIB_TIME_LIMIT * 10)) var/obj/item/organ/heart/He = getorgan(/obj/item/organ/heart) - if(!He || He.organ_flags & ORGAN_FAILING) - holder.icon_state = "huddefibheart" - else + if(He) holder.icon_state = "huddefib" + if(He.organ_flags & ORGAN_FAILING) + holder.icon_state = "huddefibheart" + else + holder.icon_state = "huddefibheart" return holder.icon_state = "huddead" else diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 2cc0321f6a..b98cbc5495 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -150,11 +150,10 @@ SLIME SCANNER msg += "\tSubject appears to have [M.getCloneLoss() > 30 ? "Severe" : "Minor"] cellular damage.\n" if(advanced) msg += "\tCellular Damage Level: [M.getCloneLoss()].\n" - if (!M.getorgan(/obj/item/organ/brain)) - to_chat(user, "\tSubject lacks a brain.") //Unsure how this won't proc for 50% of the cit playerbase (This is a joke everyone on cit a cute.) - + to_chat(user, msg) + msg = "" // Body part damage report var/list/dmgreport = list() @@ -180,7 +179,7 @@ SLIME SCANNER [(org.brute_dam > 0) ? "[org.brute_dam]" : "0"]\ [(org.burn_dam > 0) ? "[org.burn_dam]" : "0"]" dmgreport += "\n" - msg += dmgreport + to_chat(user, dmgreport.Join()) //Organ damages report @@ -190,6 +189,7 @@ SLIME SCANNER for(var/organ in C.internal_organs) var/temp_message + var/damage_message var/obj/item/organ/O = organ //EYES @@ -197,15 +197,15 @@ SLIME SCANNER var/obj/item/organ/eyes/eyes = O if(advanced) if(HAS_TRAIT(C, TRAIT_BLIND)) - temp_message += "\tSubject is blind." + temp_message += " Subject is blind." if(HAS_TRAIT(C, TRAIT_NEARSIGHT)) - temp_message += "\tSubject is nearsighted." + temp_message += " Subject is nearsighted." if(eyes.damage > 30) - temp_message += "\tSubject has severe eye damage." + damage_message += " Subject has severe eye damage." else if(eyes.damage > 20) - temp_message += "\tSubject has significant eye damage." + damage_message += " Subject has significant eye damage." else if(eyes.damage) - temp_message += "\tSubject has minor eye damage." + damage_message += " Subject has minor eye damage." //EARS @@ -213,28 +213,28 @@ SLIME SCANNER var/obj/item/organ/ears/ears = O if(advanced) if(HAS_TRAIT_FROM(C, TRAIT_DEAF, GENETIC_MUTATION)) - temp_message += "\tSubject is genetically deaf." + temp_message += " Subject is genetically deaf." else if(HAS_TRAIT(C, TRAIT_DEAF)) - temp_message += "\tSubject is deaf." + temp_message += " Subject is deaf." else if(ears.damage) - temp_message += "\tSubject has [ears.damage > ears.maxHealth ? "permanent ": "temporary "]hearing damage." + damage_message += " Subject has [ears.damage > ears.maxHealth ? "permanent ": "temporary "]hearing damage." if(ears.deaf) - temp_message += "\tSubject is [ears.damage > ears.maxHealth ? "permanently ": "temporarily "] deaf." + damage_message += " Subject is [ears.damage > ears.maxHealth ? "permanently ": "temporarily "] deaf." //BRAIN if(istype(O, /obj/item/organ/brain)) if (C.getOrganLoss(ORGAN_SLOT_BRAIN) >= 200) - temp_message += "\tSubject's brain function is non-existent. Neurine injection recomended." + damage_message += " Subject's brain function is non-existent. Neurine injection recomended." else if (C.getOrganLoss(ORGAN_SLOT_BRAIN) >= 120) - temp_message += "\tSevere brain damage detected. Subject likely to have mental traumas." + damage_message += " Severe brain damage detected. Subject likely to have mental traumas." else if (C.getOrganLoss(ORGAN_SLOT_BRAIN) >= 45) - temp_message += "\tBrain damage detected." - else - temp_message += "\tFunctional Brain detected." + damage_message += " Brain damage detected." + else if(!advanced) + damage_message += " Functional Brain detected." if(advanced) - temp_message += "\tBrain Activity Level: [(200 - M.getOrganLoss(ORGAN_SLOT_BRAIN))/2]%." + temp_message += " Brain Activity Level: [(200 - M.getOrganLoss(ORGAN_SLOT_BRAIN))/2]%." //TRAUMAS if(LAZYLEN(C.get_traumas())) @@ -250,40 +250,42 @@ SLIME SCANNER trauma_desc += "permanent " trauma_desc += B.scan_desc trauma_text += trauma_desc - temp_message += "\tCerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)]." + temp_message += " Cerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)]." if(C.roundstart_quirks.len) - temp_message += "\tSubject has the following physiological traits: [C.get_trait_string()]." + temp_message += " Subject has the following physiological traits: [C.get_trait_string()]." if(ishuman(C) && advanced) var/mob/living/carbon/human/H = M //MON PETIT CHAUFFEUR if(H.hallucinating()) - temp_message += "\tSubject is hallucinating." + temp_message += " Subject is hallucinating." //MKUltra if(H.has_status_effect(/datum/status_effect/chem/enthrall)) - temp_message += "\tSubject has abnormal brain fuctions." + temp_message += " Subject has abnormal brain fuctions." //Astrogen shenanigans if(H.reagents.has_reagent("astral")) if(H.mind) - temp_message += "\tWarning: subject may be possesed." + temp_message += " Warning: subject may be possesed." else - temp_message += "\tSubject appears to be astrally projecting." + temp_message += " Subject appears to be astrally projecting." //LIVER if(istype(O, /obj/item/organ/liver)) var/obj/item/organ/liver/L = O + if(H.undergoing_liver_failure() && H.stat != DEAD) //might be depreciated + msg += "Subject is suffering from liver failure: Apply Corazone and begin a liver transplant immediately!" if(L.swelling > 20) - msg += "\tSubject is suffering from an enlarged liver." //i.e. shrink their liver or give them a transplant. + msg += " Subject is suffering from an enlarged liver." //i.e. shrink their liver or give them a transplant. //HEART if(ishuman(M) && (istype(O, /obj/item/organ/heart))) var/obj/item/organ/heart/He = O var/mob/living/carbon/human/H = M if(H.undergoing_cardiac_arrest() && H.stat != DEAD) - msg += "\tSubject suffering from heart attack: Apply defibrillation or other electric shock immediately!" + msg += " Subject suffering from heart attack: Apply defibrillation or other electric shock immediately!" if(He.organ_flags & ORGAN_FAILING) heart_ded = TRUE @@ -291,30 +293,32 @@ SLIME SCANNER if(istype(O, /obj/item/organ/tongue)) var/obj/item/organ/tongue/T = O if(T.name == "fluffy tongue") - msg += "\tSubject is suffering from a fluffified tongue. Suggested cure: Yamerol or a tongue transplant." + msg += " Subject is suffering from a fluffified tongue. Suggested cure: Yamerol or a tongue transplant." //HECK if(istype(O, /obj/item/organ/genital/penis)) var/obj/item/organ/genital/penis/P = O if(P.length>20) - msg += "\tSubject has a sizeable gentleman's organ at [P.length] inches." + msg += " Subject has a sizeable gentleman's organ at [P.length] inches." if(istype(O, /obj/item/organ/genital/breasts)) var/obj/item/organ/genital/breasts/Br = O if(Br.cached_size>5) - msg += "\tSubject has a sizeable bosom with a [Br.size] cup." + msg += " Subject has a sizeable bosom with a [Br.size] cup." + + //GENERAL HANDLER - var/damage_message - if(O.organ_flags & ORGAN_FAILING) - damage_message += "\tEnd Stage [O.name] failure detected." - else if(O.damage > O.high_threshold) - damage_message += "\tChronic [O.name] failure detected." - else if(O.damage > O.low_threshold && advanced) - damage_message += "\tAcute [O.name] failure detected." + if(!damage_message) + if(O.organ_flags & ORGAN_FAILING) + damage_message += " End Stage [uppertext(O.name)] failure detected." + else if(O.damage > O.high_threshold) + damage_message += " Chronic [uppertext(O.name)] failure detected." + else if(O.damage > O.low_threshold && advanced) + damage_message += " Acute [uppertext(O.name)] failure detected." if(temp_message || damage_message) - msg += "[O.name]: [damage_message] [temp_message]\n" + msg += "[uppertext(O.name)]: [damage_message] [temp_message]\n" @@ -418,7 +422,7 @@ SLIME SCANNER if(cyberimp_detect) msg += "Detected cybernetic modifications:\n" msg += "[cyberimp_detect]\n" - msg += "*---------*" + msg += "*---------*" to_chat(user, msg) SEND_SIGNAL(M, COMSIG_NANITE_SCAN, user, FALSE) diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 88176f4f26..01e0001226 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -426,7 +426,7 @@ if(istype(AM)) AM.organ_flags &= ~ORGAN_FROZEN -/obj/machinery/smartfridge/chemistry/preloaded +/obj/machinery/smartfridge/organ/preloaded initial_contents = list( /obj/item/organ/random = 1, /obj/item/reagent_containers/medspray/synthtissue = 1, diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index ad0b7f46fe..73a15b2226 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -235,6 +235,7 @@ if(delta > 0) if(damage >= maxHealth) organ_flags |= ORGAN_FAILING + owner.med_hud_set_status() return now_failing if(damage > high_threshold && prev_damage <= high_threshold) return high_threshold_passed @@ -242,6 +243,7 @@ return low_threshold_passed else organ_flags &= ~ORGAN_FAILING + owner.med_hud_set_status() if(!owner)//Processing is stopped when the organ is dead and outside of someone. This hopefully should restart it if a removed organ is repaired outside of a body. START_PROCESSING(SSobj, src) if(prev_damage > low_threshold && damage <= low_threshold) @@ -368,12 +370,11 @@ /obj/item/organ/random name = "Illegal organ" - desc = "Something fucked up" + desc = "Something hecked up" /obj/item/organ/random/Initialize() ..() - var/list = subtypesof(/obj/item/organ) - list -= /obj/item/organ/random + var/list = (/obj/item/organ/tongue, /obj/item/organ/brain, /obj/item/organ/heart, /obj/item/organ/liver, /obj/item/organ/ears, /obj/item/organ/eyes, /obj/item/organ/tail, /obj/item/organ/stomach) var/newtype = pick(list) new newtype(loc) return INITIALIZE_HINT_QDEL diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 17b5e9fd99514ff6ae39c85e2390e04296d48d7e..5659e0208ff342e29e63face7571a4c5c543c7d2 100644 GIT binary patch delta 14243 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 Q5by_6*Lzg_@a4Pz3)R|&I{*Lx delta 14217 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 From 01f465dc8c7822b3aa5480e8217c24b999e5935a Mon Sep 17 00:00:00 2001 From: Fermi <> Date: Thu, 21 Nov 2019 03:52:00 +0000 Subject: [PATCH 007/135] Scanner formatting --- code/game/objects/items/devices/scanners.dm | 20 +++++++++---------- .../reagents/chemistry/reagents/healing.dm | 3 +++ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index b98cbc5495..694aedfe13 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -131,25 +131,25 @@ SLIME SCANNER mob_status = "Deceased" oxy_loss = max(rand(1, 40), oxy_loss, (300 - (tox_loss + fire_loss + brute_loss))) // Random oxygen loss - var/msg = "*---------*\nAnalyzing results for [M]:\n\tOverall status: [mob_status]\n" + var/msg = "*---------*\nAnalyzing results for [M]:\n\tOverall status: [mob_status]" // Damage descriptions if(brute_loss > 10) - msg += "\t[brute_loss > 50 ? "Severe" : "Minor"] tissue damage detected.\n" + msg += "\n\t[brute_loss > 50 ? "Severe" : "Minor"] tissue damage detected." if(fire_loss > 10) - msg += "\t[fire_loss > 50 ? "Severe" : "Minor"] burn damage detected.\n" + msg += "\n\t[fire_loss > 50 ? "Severe" : "Minor"] burn damage detected." if(oxy_loss > 10) - msg += "\t[oxy_loss > 50 ? "Severe" : "Minor"] oxygen deprivation detected.\n" + msg += "\n\t[oxy_loss > 50 ? "Severe" : "Minor"] oxygen deprivation detected." if(tox_loss > 10) - msg += "\t[tox_loss > 50 ? "Severe" : "Minor"] amount of toxin damage detected.\n" + msg += "\n\t[tox_loss > 50 ? "Severe" : "Minor"] amount of toxin damage detected." if(M.getStaminaLoss()) - msg += "\tSubject appears to be suffering from fatigue.\n" + msg += "\n\tSubject appears to be suffering from fatigue." if(advanced) - msg += "\tFatigue Level: [M.getStaminaLoss()]%.\n" + msg += "\n\tFatigue Level: [M.getStaminaLoss()]%." if (M.getCloneLoss()) - msg += "\tSubject appears to have [M.getCloneLoss() > 30 ? "Severe" : "Minor"] cellular damage.\n" + msg += "\n\tSubject appears to have [M.getCloneLoss() > 30 ? "Severe" : "Minor"] cellular damage." if(advanced) - msg += "\tCellular Damage Level: [M.getCloneLoss()].\n" + msg += "\n\tCellular Damage Level: [M.getCloneLoss()]." to_chat(user, msg) @@ -178,7 +178,7 @@ SLIME SCANNER dmgreport += "[capitalize(org.name)]:\ [(org.brute_dam > 0) ? "[org.brute_dam]" : "0"]\ [(org.burn_dam > 0) ? "[org.burn_dam]" : "0"]" - dmgreport += "\n" + dmgreport += "" to_chat(user, dmgreport.Join()) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm index 5f89a7e4ed..310403effc 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm @@ -120,6 +120,9 @@ if(data["grown_volume"] > 135 && ((C.health + C.oxyloss)>=80)) if(M.revive()) M.emote("gasp") + borrowed_health *= 2 + if(borrowed_health < 100) + borrowed_health = 100 log_combat(M, M, "revived", src) else M.adjustBruteLoss(-healing_factor) From b90213882e4ebc0f926f6bbb2efbde21639738b5 Mon Sep 17 00:00:00 2001 From: Fermi <> Date: Thu, 21 Nov 2019 03:58:16 +0000 Subject: [PATCH 008/135] Again with the rouge --- code/game/objects/items/devices/scanners.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 694aedfe13..f843f6786e 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -276,16 +276,16 @@ SLIME SCANNER if(istype(O, /obj/item/organ/liver)) var/obj/item/organ/liver/L = O if(H.undergoing_liver_failure() && H.stat != DEAD) //might be depreciated - msg += "Subject is suffering from liver failure: Apply Corazone and begin a liver transplant immediately!" + temp_message += "Subject is suffering from liver failure: Apply Corazone and begin a liver transplant immediately!" if(L.swelling > 20) - msg += " Subject is suffering from an enlarged liver." //i.e. shrink their liver or give them a transplant. + temp_message += " Subject is suffering from an enlarged liver." //i.e. shrink their liver or give them a transplant. //HEART if(ishuman(M) && (istype(O, /obj/item/organ/heart))) var/obj/item/organ/heart/He = O var/mob/living/carbon/human/H = M if(H.undergoing_cardiac_arrest() && H.stat != DEAD) - msg += " Subject suffering from heart attack: Apply defibrillation or other electric shock immediately!" + temp_message += " Subject suffering from heart attack: Apply defibrillation or other electric shock immediately!" if(He.organ_flags & ORGAN_FAILING) heart_ded = TRUE @@ -293,18 +293,18 @@ SLIME SCANNER if(istype(O, /obj/item/organ/tongue)) var/obj/item/organ/tongue/T = O if(T.name == "fluffy tongue") - msg += " Subject is suffering from a fluffified tongue. Suggested cure: Yamerol or a tongue transplant." + temp_message += " Subject is suffering from a fluffified tongue. Suggested cure: Yamerol or a tongue transplant." //HECK if(istype(O, /obj/item/organ/genital/penis)) var/obj/item/organ/genital/penis/P = O if(P.length>20) - msg += " Subject has a sizeable gentleman's organ at [P.length] inches." + temp_message += " Subject has a sizeable gentleman's organ at [P.length] inches." if(istype(O, /obj/item/organ/genital/breasts)) var/obj/item/organ/genital/breasts/Br = O if(Br.cached_size>5) - msg += " Subject has a sizeable bosom with a [Br.size] cup." + temp_message += " Subject has a sizeable bosom with a [Br.size] cup." From b911fabb37f4f0da8ae1198a6a4510b320a3df2e Mon Sep 17 00:00:00 2001 From: Fermi <> Date: Thu, 21 Nov 2019 04:25:25 +0000 Subject: [PATCH 009/135] Okay bedtime --- code/game/objects/items/devices/scanners.dm | 16 ++++++---------- code/modules/surgery/organs/organ_internal.dm | 2 +- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index f843f6786e..33ecfa9e37 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -184,9 +184,9 @@ SLIME SCANNER //Organ damages report var/heart_ded = FALSE - if(ishuman(M)) + if(iscarbon(M)) var/mob/living/carbon/C = M - + var/mob/living/carbon/human/H = M for(var/organ in C.internal_organs) var/temp_message var/damage_message @@ -231,8 +231,6 @@ SLIME SCANNER damage_message += " Severe brain damage detected. Subject likely to have mental traumas." else if (C.getOrganLoss(ORGAN_SLOT_BRAIN) >= 45) damage_message += " Brain damage detected." - else if(!advanced) - damage_message += " Functional Brain detected." if(advanced) temp_message += " Brain Activity Level: [(200 - M.getOrganLoss(ORGAN_SLOT_BRAIN))/2]%." @@ -255,7 +253,6 @@ SLIME SCANNER temp_message += " Subject has the following physiological traits: [C.get_trait_string()]." if(ishuman(C) && advanced) - var/mob/living/carbon/human/H = M //MON PETIT CHAUFFEUR if(H.hallucinating()) temp_message += " Subject is hallucinating." @@ -283,7 +280,6 @@ SLIME SCANNER //HEART if(ishuman(M) && (istype(O, /obj/item/organ/heart))) var/obj/item/organ/heart/He = O - var/mob/living/carbon/human/H = M if(H.undergoing_cardiac_arrest() && H.stat != DEAD) temp_message += " Subject suffering from heart attack: Apply defibrillation or other electric shock immediately!" if(He.organ_flags & ORGAN_FAILING) @@ -311,14 +307,14 @@ SLIME SCANNER //GENERAL HANDLER if(!damage_message) if(O.organ_flags & ORGAN_FAILING) - damage_message += " End Stage [uppertext(O.name)] failure detected." + damage_message += " End Stage [O.name] failure detected." else if(O.damage > O.high_threshold) - damage_message += " Chronic [uppertext(O.name)] failure detected." + damage_message += " Chronic [O.name] failure detected." else if(O.damage > O.low_threshold && advanced) - damage_message += " Acute [uppertext(O.name)] failure detected." + damage_message += " Acute [O.name] failure detected." if(temp_message || damage_message) - msg += "[uppertext(O.name)]: [damage_message] [temp_message]\n" + msg += "[uppertext(O.name)]: [damage_message] [temp_message]\n" diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 73a15b2226..036ef87428 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -374,7 +374,7 @@ /obj/item/organ/random/Initialize() ..() - var/list = (/obj/item/organ/tongue, /obj/item/organ/brain, /obj/item/organ/heart, /obj/item/organ/liver, /obj/item/organ/ears, /obj/item/organ/eyes, /obj/item/organ/tail, /obj/item/organ/stomach) + var/list = list(/obj/item/organ/tongue, /obj/item/organ/brain, /obj/item/organ/heart, /obj/item/organ/liver, /obj/item/organ/ears, /obj/item/organ/eyes, /obj/item/organ/tail, /obj/item/organ/stomach) var/newtype = pick(list) new newtype(loc) return INITIALIZE_HINT_QDEL From 8256a206cf2854e61fb09cd7b12e54beb9a5b566 Mon Sep 17 00:00:00 2001 From: Thalpy <33956696+Thalpy@users.noreply.github.com> Date: Thu, 21 Nov 2019 13:24:57 +0000 Subject: [PATCH 010/135] Update code/modules/surgery/emergency_cardioversion_recovery.dm Co-Authored-By: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/modules/surgery/emergency_cardioversion_recovery.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/emergency_cardioversion_recovery.dm b/code/modules/surgery/emergency_cardioversion_recovery.dm index 4d3a6ed72c..4f82a0b66d 100644 --- a/code/modules/surgery/emergency_cardioversion_recovery.dm +++ b/code/modules/surgery/emergency_cardioversion_recovery.dm @@ -20,7 +20,7 @@ /datum/surgery_step/incise_heart/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) playsound(src, 'sound/machines/defib_zap.ogg', 75, 1, -1) playsound(src, "bodyfall", 50, 1) - if(H.stat == DEAD) + if(H.stat != DEAD) display_results(user, target, "You can't use this procedure on the living! [H]'s body flops madly like a wild fish on the table from the current, and your crazed surgical methods.", "[user] screws up, causing [H] to flop around violently as they're zapped!", "[user] screws up, causing [H] to flop around violently as they're zapped!") From 46076c95c7cf9712c364dc09c08a7890114373a5 Mon Sep 17 00:00:00 2001 From: Thalpy <48600475+ThalpySci@users.noreply.github.com> Date: Thu, 21 Nov 2019 14:22:04 +0000 Subject: [PATCH 011/135] Ghommie is a good friend --- .../kitchen_machinery/smartfridge.dm | 10 ++++- .../chemistry/reagents/medicine_reagents.dm | 5 +-- .../emergency_cardioversion_recovery.dm | 40 +++++++++---------- code/modules/surgery/organs/organ_internal.dm | 7 +++- .../reagents/chemistry/reagents/healing.dm | 12 +++--- 5 files changed, 40 insertions(+), 34 deletions(-) diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 01e0001226..9af7235815 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -407,7 +407,8 @@ if(!.) //if the item loads, clear can_decompose return var/obj/item/organ/organ = O - organ.organ_flags |= ORGAN_FROZEN + if(organ) + organ.organ_flags |= ORGAN_FROZEN /obj/machinery/smartfridge/organ/RefreshParts() for(var/obj/item/stock_parts/matter_bin/B in component_parts) @@ -428,10 +429,15 @@ /obj/machinery/smartfridge/organ/preloaded initial_contents = list( - /obj/item/organ/random = 1, /obj/item/reagent_containers/medspray/synthtissue = 1, /obj/item/reagent_containers/medspray/sterilizine = 1) +/obj/machinery/smartfridge/organ/preloaded/Initialize() + ..() + var/list = list(/obj/item/organ/tongue, /obj/item/organ/brain, /obj/item/organ/heart, /obj/item/organ/liver, /obj/item/organ/ears, /obj/item/organ/eyes, /obj/item/organ/tail, /obj/item/organ/stomach) + var/newtype = pick(list) + load(new newtype) + // ----------------------------- // Chemistry Medical Smartfridge // ----------------------------- diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index d864616b9f..0bf1339bad 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -941,10 +941,9 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) color = "#EEFF8F" /datum/reagent/neurine/reaction_mob(mob/living/M, method=TOUCH, reac_volume) - var/mob/living/carbon/C = M - if(!C) + var/obj/item/organ/brain/B = M.getorganslot(ORGAN_SLOT_BRAIN) + if(!B) return - var/obj/item/organ/brain/B = C.getorganslot(ORGAN_SLOT_BRAIN) if(method == INJECT) if(B.organ_flags & ORGAN_FAILING) B.applyOrganDamage(-20) diff --git a/code/modules/surgery/emergency_cardioversion_recovery.dm b/code/modules/surgery/emergency_cardioversion_recovery.dm index 4f82a0b66d..fd14c2ea8f 100644 --- a/code/modules/surgery/emergency_cardioversion_recovery.dm +++ b/code/modules/surgery/emergency_cardioversion_recovery.dm @@ -18,6 +18,7 @@ playsound(src, 'sound/machines/defib_charge.ogg', 75, 0) /datum/surgery_step/incise_heart/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/mob/living/carbon/human/H = target playsound(src, 'sound/machines/defib_zap.ogg', 75, 1, -1) playsound(src, "bodyfall", 50, 1) if(H.stat != DEAD) @@ -29,32 +30,29 @@ H.emote("flip") H.Jitter(100) return FALSE - if(ishuman(target)) - var/mob/living/carbon/human/H = target - if (!(NOBLOOD in H.dna.species.species_traits)) - display_results(user, target, "induces a stable rythum in [H]'s heart.", - "[H]'s heart is shocked, attemping to bring them back to a stable rythum!.", - "") - H.bleed_rate += 10 - H.adjustBruteLoss(10) - H.adjustOrganLoss(ORGAN_SLOT_HEART, -10) - H.adjustOrganLoss(ORGAN_SLOT_BRAIN, -5) - H.electrocute_act(0, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE) - if(!do_they_live(H)) - playsound(src, 'sound/machines/defib_failed.ogg', 50, 0) + display_results(user, target, "induces a stable rythum in [H]'s heart.", + "[H]'s heart is shocked, attemping to bring them back to a stable rythum!.", + "") + if (!(NOBLOOD in H.dna.species.species_traits)) + H.bleed_rate += 10 + H.adjustBruteLoss(10) + H.adjustOrganLoss(ORGAN_SLOT_HEART, -10) + H.adjustOrganLoss(ORGAN_SLOT_BRAIN, -5) + H.electrocute_act(0, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE) + if(!do_they_live(H)) + playsound(src, 'sound/machines/defib_failed.ogg', 50, 0) return TRUE /datum/surgery_step/incise_heart/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) playsound(src, 'sound/machines/defib_zap.ogg', 75, 1, -1) playsound(src, "bodyfall", 50, 1) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - display_results(user, target, "You screw up, sending current racing though their body!", - "[user] screws up, causing [H] to flop around violently as they're zapped!", - "[user] screws up, causing [H] to flop around violently as they're zapped!") - H.electrocute_act(25, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE) - H.emote("flip") - H.adjustOrganLoss(ORGAN_SLOT_HEART, 10) + var/mob/living/carbon/human/H = target + display_results(user, target, "You screw up, sending current racing though their body!", + "[user] screws up, causing [H] to flop around violently as they're zapped!", + "[user] screws up, causing [H] to flop around violently as they're zapped!") + H.electrocute_act(25, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE) + H.emote("flip") + H.adjustOrganLoss(ORGAN_SLOT_HEART, 10) /datum/surgery_step/incise_heart/do_they_live(mob/living/carbon/human/H) diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 036ef87428..55f81504d9 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -98,13 +98,16 @@ //Checks to see if the organ is frozen from temperature /obj/item/organ/proc/is_cold() - var/freezing_objects = list(/obj/structure/closet/crate/freezer, /obj/structure/closet/secure_closet/freezer, /obj/structure/bodycontainer, /obj/item/autosurgeon) + var/freezing_objects = list(/obj/structure/closet/crate/freezer, /obj/structure/closet/secure_closet/freezer, /obj/structure/bodycontainer, /obj/item/autosurgeon, /obj/machinery/smartfridge/organ) if(istype(loc, /obj/))//Freezer of some kind, I hope. if(is_type_in_list(loc, freezing_objects)) if(!(organ_flags & ORGAN_FROZEN))//Incase someone puts them in when cold, but they warm up inside of the thing. (i.e. they have the flag, the thing turns it off, this rights it.) organ_flags |= ORGAN_FROZEN return TRUE - return + var/external_check = FALSE + if(organ_flags & ORGAN_FROZEN) + external_check = TRUE + return external_check var/local_temp if(istype(loc, /turf/))//Only concern is adding an organ to a freezer when the area around it is cold. diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm index 310403effc..8ac5e1a192 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm @@ -172,18 +172,18 @@ update_name() ..() -/datum/reagent/synthtissue/proc/update_name() +/datum/reagent/synthtissue/proc/update_name() //They are but babes on creation and have to grow unto godhood switch(data["grown_volume"]) if(-INFINITY to 50) - name = "Young Synthtissue Colony" + name = "Induced Synthtissue Colony" if(50 to 80) - name = "Adolescent Synthtissue Colony" + name = "Oligopotent Synthtissue Colony" if(80 to 135) - name = "Adult Synthtissue Colony" + name = "Pluripotent Synthtissue Colony" if(135 to 175) - name = "Master Synthtissue Colony" + name = "SuperSomatic Synthtissue Colony" if(175 to INFINITY) - name = "Apex Synthtissue Colony" + name = "Omnipotent Synthtissue Colony" /datum/reagent/synthtissue/on_mob_delete(mob/living/M) if(!iscarbon(M)) From 00bffba7ea1cf6855eb3a905dec1581f2cbcbe0d Mon Sep 17 00:00:00 2001 From: Thalpy <48600475+ThalpySci@users.noreply.github.com> Date: Thu, 21 Nov 2019 15:57:21 +0000 Subject: [PATCH 012/135] Why do surgeries always end up with jank --- code/game/objects/items/defib.dm | 2 - .../kitchen_machinery/smartfridge.dm | 6 +- .../emergency_cardioversion_recovery.dm | 52 ++++++++++-------- code/modules/surgery/organs/heart.dm | 2 +- code/modules/surgery/organs/organ_internal.dm | 6 +- icons/mob/hud.dmi | Bin 16277 -> 16325 bytes tgstation.dme | 1 + 7 files changed, 37 insertions(+), 32 deletions(-) diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index f5799e1a22..ee85005c61 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -762,5 +762,3 @@ desc = "An upgrade to the defibrillator capacitors, which let it charge faster" icon_state = "fast_disk" materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_GOLD = 26000, MAT_SILVER = 26000) - -#undef HALFWAYCRITDEATH diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 9af7235815..893a53ede7 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -406,8 +406,8 @@ . = ..() if(!.) //if the item loads, clear can_decompose return - var/obj/item/organ/organ = O - if(organ) + if(istype(O, /obj/item/organ)) + var/obj/item/organ/organ = O organ.organ_flags |= ORGAN_FROZEN /obj/machinery/smartfridge/organ/RefreshParts() @@ -436,7 +436,7 @@ ..() var/list = list(/obj/item/organ/tongue, /obj/item/organ/brain, /obj/item/organ/heart, /obj/item/organ/liver, /obj/item/organ/ears, /obj/item/organ/eyes, /obj/item/organ/tail, /obj/item/organ/stomach) var/newtype = pick(list) - load(new newtype) + load(new newtype(src.loc)) // ----------------------------- // Chemistry Medical Smartfridge diff --git a/code/modules/surgery/emergency_cardioversion_recovery.dm b/code/modules/surgery/emergency_cardioversion_recovery.dm index fd14c2ea8f..f0540e78c0 100644 --- a/code/modules/surgery/emergency_cardioversion_recovery.dm +++ b/code/modules/surgery/emergency_cardioversion_recovery.dm @@ -10,14 +10,14 @@ time = 50 repeatable = TRUE //So you can retry -/datum/surgery_step/incise_heart/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - display_results(user, target, "You begin apply an electrical charge directly to the heart and across the body...", +/datum/surgery_step/ventricular_electrotherapy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + display_results(user, target, "You begin to apply an electrical charge directly to the heart body...", "[user] begins to make an incision in [target]'s heart.", "[user] begins to make an incision in [target]'s heart.") - target.notify_ghost_cloning("Your heart is undergoing Emergency Cardioversion Induction!") + target.notify_ghost_cloning("Your heart is undergoing Emergency Cardioversion Induction Surgery!") playsound(src, 'sound/machines/defib_charge.ogg', 75, 0) -/datum/surgery_step/incise_heart/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) +/datum/surgery_step/ventricular_electrotherapy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) var/mob/living/carbon/human/H = target playsound(src, 'sound/machines/defib_zap.ogg', 75, 1, -1) playsound(src, "bodyfall", 50, 1) @@ -25,51 +25,56 @@ display_results(user, target, "You can't use this procedure on the living! [H]'s body flops madly like a wild fish on the table from the current, and your crazed surgical methods.", "[user] screws up, causing [H] to flop around violently as they're zapped!", "[user] screws up, causing [H] to flop around violently as they're zapped!") - M.emote("scream") - H.electrocute_act(25, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE) + H.emote("scream") + H.electrocute_act(25, (get_turf(H)), 1, FALSE, FALSE, FALSE, TRUE) + H.adjustFireLoss(10) H.emote("flip") H.Jitter(100) return FALSE - display_results(user, target, "induces a stable rythum in [H]'s heart.", - "[H]'s heart is shocked, attemping to bring them back to a stable rythum!.", + display_results(user, target, "You induce a stable cardio in [H]'s heart.", + "[H]'s heart is shocked, attemping to bring them back to a stable rhythm!", "") - if (!(NOBLOOD in H.dna.species.species_traits)) - H.bleed_rate += 10 H.adjustBruteLoss(10) - H.adjustOrganLoss(ORGAN_SLOT_HEART, -10) + H.adjustOrganLoss(ORGAN_SLOT_HEART, -15) H.adjustOrganLoss(ORGAN_SLOT_BRAIN, -5) - H.electrocute_act(0, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE) + H.electrocute_act(0, (get_turf(H)), 1, FALSE, FALSE, FALSE, TRUE) + if(istype(tool, /obj/item/twohanded/shockpaddles)) + display_results(user, target, "You move the paddles to the restart position.", + "[user] moves the paddles to the restart position...", + "") + return TRUE if(!do_they_live(H)) playsound(src, 'sound/machines/defib_failed.ogg', 50, 0) + log_combat(user, H, "revived", "Emergency Cardioversion Induction") return TRUE -/datum/surgery_step/incise_heart/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) +/datum/surgery_step/ventricular_electrotherapy/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) playsound(src, 'sound/machines/defib_zap.ogg', 75, 1, -1) playsound(src, "bodyfall", 50, 1) var/mob/living/carbon/human/H = target - display_results(user, target, "You screw up, sending current racing though their body!", + display_results(user, target, "You screw up, sending a current through their body!", "[user] screws up, causing [H] to flop around violently as they're zapped!", "[user] screws up, causing [H] to flop around violently as they're zapped!") - H.electrocute_act(25, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE) + H.electrocute_act(25, (get_turf(H)), 1, FALSE, FALSE, FALSE, TRUE) + H.adjustFireLoss(5) H.emote("flip") H.adjustOrganLoss(ORGAN_SLOT_HEART, 10) -/datum/surgery_step/incise_heart/do_they_live(mob/living/carbon/human/H) +/datum/surgery_step/ventricular_electrotherapy/proc/do_they_live(mob/living/carbon/human/H) var/obj/item/organ/heart = H.getorgan(/obj/item/organ/heart) H.visible_message("[H]'s body convulses a bit.") - total_brute = H.getBruteLoss() - total_burn = H.getFireLoss() - shock_touching(30, H) + var/total_brute = H.getBruteLoss() + var/total_burn = H.getFireLoss() var/failed - var/tdelta = round(world.time - timeofdeath) + var/tdelta = round(world.time - H.timeofdeath) if (H.suiciding || (HAS_TRAIT(H, TRAIT_NOCLONE))) failed = "The [src] equipment buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile." else if (H.hellbound) failed = "The [src] equipment buzzes: Resuscitation failed - Patient's soul appears to be on another plane of existence. Further attempts futile." - else if(tdelta < (DEFIB_TIME_LIMIT * 10)) + else if(world.time < (DEFIB_TIME_LIMIT * 10)) failed = "The [src] equipment buzzes: Resuscitation failed - Body has decayed for too long. Further attempts futile." else if (!heart) failed = "The [src] equipment buzzes: Resuscitation failed - Patient's heart is missing." @@ -93,7 +98,7 @@ if(failed) - user.visible_message(failed) + H.visible_message(failed) playsound(src, 'sound/machines/defib_failed.ogg', 50, 0) else //If the body has been fixed so that they would not be in crit when defibbed, give them oxyloss to put them back into crit @@ -107,11 +112,10 @@ H.adjustFireLoss((mobhealth - HALFWAYCRITDEATH) * (total_burn / overall_damage), 0) H.adjustBruteLoss((mobhealth - HALFWAYCRITDEATH) * (total_brute / overall_damage), 0) H.updatehealth() // Previous "adjust" procs don't update health, so we do it manually. - user.visible_message("The [src] equipment pings: Resuscitation successful.") + H.visible_message("The [src] equipment pings: Resuscitation successful.") playsound(src, 'sound/machines/defib_success.ogg', 50, 0) H.set_heartattack(FALSE) H.revive() H.emote("gasp") H.Jitter(100) SEND_SIGNAL(H, COMSIG_LIVING_MINOR_SHOCK) - log_combat(user, H, "revived", "Emergency Cardioversion Induction") diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index a9830f36df..963c7ac6f9 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -6,7 +6,7 @@ slot = ORGAN_SLOT_HEART healing_factor = STANDARD_ORGAN_HEALING - decay_factor = 3 * STANDARD_ORGAN_DECAY //designed to fail about 5 minutes after death + decay_factor = 2.5 * STANDARD_ORGAN_DECAY //designed to fail about 5 minutes after death low_threshold_passed = "Prickles of pain appear then die out from within your chest..." high_threshold_passed = "Something inside your chest hurts, and the pain isn't subsiding. You notice yourself breathing far faster than before." diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 55f81504d9..45cbda9898 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -238,7 +238,8 @@ if(delta > 0) if(damage >= maxHealth) organ_flags |= ORGAN_FAILING - owner.med_hud_set_status() + if(owner) + owner.med_hud_set_status() return now_failing if(damage > high_threshold && prev_damage <= high_threshold) return high_threshold_passed @@ -246,7 +247,8 @@ return low_threshold_passed else organ_flags &= ~ORGAN_FAILING - owner.med_hud_set_status() + if(owner) + owner.med_hud_set_status() if(!owner)//Processing is stopped when the organ is dead and outside of someone. This hopefully should restart it if a removed organ is repaired outside of a body. START_PROCESSING(SSobj, src) if(prev_damage > low_threshold && damage <= low_threshold) diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 5659e0208ff342e29e63face7571a4c5c543c7d2..d2b67f4314665ff948ad26bf0e63bb961c405788 100644 GIT binary patch delta 14206 zcmYMb2|U!__dh-=Dc*RON)aks_DGR!+R#{wWZy}$O!jTeOKB65v9FVCN%j!NjAY-J zA_gPdU^XbDMzh=&e*)msWhA49Ibf=eS zfA5Y?2Vij{k64jCF&L*&;@Hvopkh)q94SASk$5sgEW+pB@>Zj9ZbtHA)r;Sqa>rvb zlT3B4&AZAy_#1b-xa zbg)MOYh51>(*C;R2$C?3@+l-19eIw*$%WB7Z>v7=a2afgndbo$NgYj!kMKyZ8os)6n*IZkqeXSdvD@V(O>~*+n)P;# z6A6P_ibwQye>$ImP3Q7b=6quMI{eTX99m69PUuPHe(_+8JZy?JUOpiBQ zrTEzP^z@(#g)u&(Z-Q_`A&ShGSXzbwI73`zF1q{R_;VbOVlso+B*i8Y@M9&6lxYd5 zhh9s=?3SZKfC_CVa_&vPi5?CMQvU=jGOzoBg@yp4#u+9pR~{Pc_7tHAEVe~ zi84_%OjdF-1QLH#57zJKIPqvc%`7z4#EWu5S*7mXiSW%j1@u>!0RIJ$qF!pk2?>4d zH<0@43gU!WAKRsYoUF6d!*D#gZR^GVdMA3>z8T*=^7Zp)Bb1q53+nUQ!PMjJO)k?) zU%)4D!~DSo4p={DHjkZ=CYLg2|B1jNe4Xgm+-Ip%M%u(@CrQY}v&ghvOL zshB#GB+VmAihkUvWTvWwT=6;Bgz2s7C;ux7|F7sD$$dOr$J8hLz!3MX^lveatwY{Od)E0jb`}f0{sO#IRm(e-+z43z^HYz zW)48FiD-&s`AEJ1>%#&@ZxGq~H;5E=B(OKgF2$G-(dPp;3GC=DTthUKt0vxOrE9m| zwx#o}_uefDST7PMx5)BaY}VKgTc@@Hf;@O;`U-(C{dnT5axnR_JHBTybvlWR3-a5D z>s6v}9v=zqEtqS_=!kux#UO8BV+ z1YSpnJSIdV*V82ID*@cYP%c)j&T!0N_k#OqgYWVu1~iaNQCvm^u2keOY%!NL7(3eH zE9Tastbkv5!j+2S5J;e-+~}W#s$;9Lyf`ceq|5W^u_r|bSOJzs`SmZNDQzH6{tlHtMY@kv6+mNAvFtdxr?>`8iL3IC9Qxlv> zds}{YGrV)sqm03E=`ZTc!#!K2l0m;>+0f~)3_mYwc|96nF#5%S-h*cxpQjCcoibpF z%p+0C?2bjkKrA9{5XzZN+=lldS zkZ8t-8piA{oir;8u3giBsmEpL-^e{UzH5K*hs#5Gr~2^o+fv0@51h=w0MOo`mD+?i8Lv+gzpSWKcrHH8uI?}J>D zX5$5ttELxtClH8V%_VCwf4SfrNK)YtB^ob=IF`ERjUy4Ef)wTkZk@q<8JA5CcqA?s z)5`1Mz*wqY5Ia~GCkAye`|zBJzX~jj+^~A$o~*h$#h8XS z7tHAAzT2wO>CE}mvG{vwjM zVYiQu?GopX{0K&dQzr-Z8qRXiN6~5hcG=l)2Gmx}XY1U;vC-zk&Mt?tiFOGsjANVN z06w++BV$L@)ero`Qg-n=v2@p1FUu#&T| zc;z{KJCWxU{K+cSv>15K=q0RGXT)AXGXA<9BTy!hat+5hv-h5fzuT7i`du$qlHD#N zANf}E%KUb|#E$0Thr2a}KaSlE=Q!k;?Xyq}hYf{jjhdY9iwB>sD!xB>n*ctui zIz6Ww<$CXtxv?c4gpoqS+Ca~_guFt-G@IVVi;tFvj(KEkn_rRudGrYL$X&;+udzln znLFTze%fG3>(Wphg!I)#K zge3x_?(-^31lFv-9QAT?7#*INvo1~WLAtwJbTFtCVxlQBVL(af|5!2n$?75ds{vIK zlJErFB8NcmQ5qFlUa%1Us|(J^^$481BeMJR3aWsALtA;Vs?u<1a8G0x_<5x}sPexr z^-1gVj_Hn~VTutL+SG!pbK2%VVGqs5^tHjE{!;I`o}e7Rr%=DXNdF+UW#gntAS}(+ zVm2vqa-~M9LjB}NDM#tLm(rm=lV29dnVCW)DoaD6+FhGKU?FF}R1|&g8I<>qy znl$TT{|pE{v|(vsVQu@$4#h$|mucYt3vTkx?2n@|;?A~=DepZ>BJ@IizY<~g^{?k#$zqq#EZ|)Vm$<@VlxpgJvy@=oWB=1?{Z&K zpA5PJaIS|>TKiL4(J}oeC_-7_hF0s_wS%iDcBTfZeYx}LhYQ>o>U?TEIK-=cl>9&2TqJT;Jz%#>yvP?SqpPIrZ-n6-d{(C5UH`5$^Y<*!Y2A`2xv z+bOQwm^s;8YwyA+fcY@Vgk2Aeu8AomN!Zij9we$5^UgRR;@G9*1X=E`yQ=!}_6Wt{ zX)aumP{zwUMur}vhQ3ODv6$Rg;Z-vi?l&;LJ(peKSu@u?T*=FC7n1Xk{U}2;>(ccE z&IUAlf#OkKvFe>4>iM4lQJ)X*7qi>o>wGuD4%~Ed$DKSy)(*!zw;~8kr6uD8SA>=Y(hr z7oUfjO;}srL5*og;3S%g&!^=0`&B=8tx6wjCeu?#-^t3Asvx762GJhwoc2WA$265C zc9Kbd>^g2e^P}}vM}!9T`BQEOXx+B4997N!s^a`EDA&lCP*!Xwc=_P`sPhlV^gS`) zoiaO`zizReveEed9S+meV;~T(cLkIw$y}iPI1$@^lP&r2^Jf*xQolK9{gifkFMwa` zD{(bVN$rIyLX~AMnS`(WOuMP{yQfFCc#uu(6oX^^{~QI4BkB^pk^0B#<30fc2>&0m zaS2SHpj*q5Yc#5oXh`CU_5#orm#{wlMQZ!_9|90{MkDa!g9?YTd--~WcKoL=o!dUX zi)I^nYq42j)m2vVK_zJj<@e8zWgdW)IUuSPcnpn=<9}l8F7ML|z3#0eCXK#yDUAMM zWpEjMBsMBS=e6ZXvzctW@gF}Vl&%7z^*U6-By9mGo_eK?r0N0r_o%=>r@xn9d#)7r z?*kfmah|6sg=grsK8Q2#{j=$}J0Cq*-%mug3vYP#ZN2h9tStx}Uacw&9uv1>pteJI z8iJo4v|}DqUuJAb8HNr~3AMSn@SWATaq0#9k+Vl^6O+T*7C#(`CjI{WTI30p!KL4_ zQs@zJXpLB$R;2)ZBTng_q3e3v(tgwcIq+wrL&+-Mcdqev0~|dsR%ZW`-k*9*e)&u4 zHP4TvT2IoGSo)n`JV!tK;GhQvR1ef%JCHhc60Ugk?Mr%&ep3|5NtRDS)MaDpQm@Xe-M`u4!79qU@joKJMe%08lrXtPWBi>r z2CvWkRooVTADIm*gm*Gh1B8x;Ys|bp2!U|@h2Qx)y{3oS z-o?X7IUzH{3~DZTojLuQh>g3SLaoX_mBHI9d$S*XDX%r|wDQf)vjK4ihKAq?Rg&2{ zd*@__-ccapjn}vIDk1wO8`OQx@MKKNR+apgiPf0a?%t<@|CEGp1` zLT#HAgsXg4o;>I0KJ@;^r;i_pK*w-G z__{#?ujO<^B6sy*a9$sKfu9o^{LOa1*56u(E_t zR}fiP{Xu4ALauhi2k>zrvnmqK2nHis$9O@KY{-9>8%GPugxA~*!m$lBZfUu)4z7#J1?4x(dy~bJ!})>TJ(iL%o{l(U zorkX6w3*^1>Eb*lsSVJXWnA_gDOfmBNt~Ewu7)3m;(!0JlIZ5E$uM00jpxUCKDK z;E}2U^}w~()+4_{ajaU8nJ{9G+ltiNs9YsseW$me_F!9rd>DG`*6NW^)|SxaponE^ zOn$aN@p&d_Eg6W0UU6wVGVu$U{~E*eD=V`vJ4P3vBbfMLy_Sxqy%M$uE2L?7sCcOt zw=2e@?ErMdb_x{#{zp{n>rdCKWC4B6`bXCMO?bi(Lvu)l*>`McTKB&4Aet4VObg5* zn1`9Mj8@cCy?v19McerQJ-4Ff<&OMou+)hK-fY(%`^}1fK>OIomB6s<=%fK#5ue!4 zQko^AFKy`>s^dojE+_Y6pDXejZyG(t02Yk-D<%T;xv?0k7@6 zH$tutVJIynSyva9&#j|GHP)Gf5Ubg+;bbq+qK|r4n5HQCPYjqFqK*zs{1Jy%@t^K; zB|vp)zw>*ZMBSx$-Z@X)W6$kLFfBV6EJsG}jN`v#ZYwtLG{9qwBTl#Z{ux|wiA2dC+8BQd z;U_{|nVS!=Prf+y9%*cBcH?Wrd&a$uw#%l&yB&J#GY#euS(&O^edgQS0WqDeiY_<= zv9Ce8!JE8LYGG&hd7mKvy|sz_{wy_*NXE{%tE+)+Z82jiu3KL}^y{9*^y@e+a1DCNI0&=1>1sH`23w@1;g*zP zLqmbj^7xNr|Ek~39sM)!Sj<|NpIIvO-4Yhn(tUS*^o<4l@f|j6tmp$sm41@6V-Dum z=A>7JWDTf`I6e~-03NcwA&o3;o?yq#uwLtfm~zL>;A+HRQ?~=vV5H32_ws>1H%u6Q zE!>6e-&IS*;^XF~pi&o8`QZ-=@RB+Al~$g? z;bYNj8!5Z1by+?}!We>(XmyW1gy2;vDE|T6j zVjEr`&~vD?2Xs~zGv%k>e?jp@gXjWUdcJwQI6-Hs*3cOBR(&P(3XJw-Tyein%TPa$ zCT_|`!6nxwl?A2CNn*@)pK=VNQN#GlS30kkOi5} z;`jA}Crb#}$klqd<6rYi95p97_(UMpUP1gf8EE=}&@lU2nz(aux%H+Ty)^{bP7Gd~ zD$#BVA$_-Ry8o-x(!YThWMElEMPG|XXVEB0Nt2y0Hgiw1)+n;L;yZZkc3wfBXQ6c# zwLAvS_GerM_t}*13ZZ@$VXA>Ee2&JNqqMw6he(2$vihH9t)@`s7uH4V?3Y&^v~mFu zOXmK{DUumm)at-iyl=kc*>wopXE8@HMORV{o0m&b?H!Z zC7Cy8Ki!;?d%)KcPFr~~vwsrns(C3|v$y!J-TwZHA8ygeie#(4-=vrqXEEu{M8gt# zq(D11Wfw{F?tRTvn6It|%5;g4F0EoX~U$Q1VpZ7|88O&EX z$lR?z4W9me0;uD4{`Q$VOsN`=!Q2P>!gz!@Um6v2OrL(y2}C$SoHHr!)CoYb>`eO3 z#m{x3B-xp?YBbNtn5(v=7~~xqL}&?U*={SdRNx3k#Q3jAaa2vyo$Y!j?PwP%$ie^1?Vth?5=M^O0}5>;7%F|`LljJHvd-$q;y zaf9Zo8PBg9D~CDtp}3%NLr%xwMh(!Ym#X4d*MFmikF-7g^dQ80OCo6}FrQ!?G1!x3 z;h{O*sdaXj9oHL=fLv$&Mk_-gvyhFXgd;M*^?P)&k&_ttja_GrT@&*f6$C4p59urT zT4quf`YF8@ak(@ItJdy-rK~5o|6+Y?X6(k{7N0&K)dzMg?v4#^ZE!^m?5o-_w=bL# zi|N!J^*uUBHYzer7$nEV3udH$kaBTB3Hn$+a(NSW&o%#f-{+6RwKWBQlT%+LTB`tW zgoGutf3d7lYK1@j^Q5uY zu$5N%TVEe}mlN?3GJDNm+lf7~2FRnJHO0FnW9If?wbpp%gv_m@`R&o>(#s%Rm9tpP zejE5>t9UO}qM6E=DR(I33oHF24jTb|6xj<(ju~BIY8}QbL$5s;%0$E&@KjOhN0UIU z8ZE03h+>Zn+-B!Yj`tHrfJazt3#_p)vZY@3-d8M0h%NstWz^A1gK{%qh%r)YkJSN1 z48`zt*`eOOZzTe%NJeNW^&2@}H|`IqrsuH^xG!ccrnfK1yom6kRKFz`k5y0Cx3<|R zDjw2rDgP?}d&1lds0euH*k+if7=+po+)8OO^+)l~wpeL$Ygm2dGQ*m=v5im0|Ekz-qJ%c>PSX698#*qBk`lSkoY+@v-fI1w#-a+)EM&#} zm8U#$pc6)jFaJHqIn#cO#FoP^{$_I0prkyo?eu-XA=xjv*4g?+nkkj!HIO19qP>2m zlvz}N7>ZStEqjAcCLn$$H( zkvcc3-h~*$_s?aVAlDO?nkUWvKJ@;xW)FId-b-h#!~6;z9@^#}FzKzo!im`a;^8J0 zq2j8Y5!p`~#+b0aSvgZAJiCv}h??4^%ESI}6@jl6^Q2a`lT&~Lbi~0$FE8%NK~slL z^E7K)E}46+Psu6jyfW?N&JGx=$S6kBK>(s2Dx7K&`h5T?HGI`eQ1Vo+&xUF?X#HcH zZQS1G?#8{8N!%dR<-i|nk*I2LUoxXc4*3hSR@dUX541Ve4TSXXAU0IhJk-Ag8Hk$? zK_KeaLHAtJS8l$4uDMZN=TZ7D2O;5Clb-UO<&y9_aTW6GR+2Nf@R7LeZ})yd$VZdj zaSH*tZgv$Q!Vy;7rPl>IKF`>)mimoz`xzT-Bu--Gm7rjt4@&>ifa+lUc3gA7Ks5_WrfK79rq2!p*Z z5CW@m7G81|c!vL{9b9;NAPo<^iNCd!ePf1A`BS-Te zqO7kSMBW(jL=9Y%_PbUVmZ5+gyGHyn^=FP@)%LNjuFea$%;Ba#pZmejG+#djgub>!Wwv27QLFDkM^oHKc^5cE@usRHbl}GOMS zY4Ma1kfULtLJw+${S$1WMwhICR!v>NJ@H9EMk0S7*2kgB4uD&Nk~GuG{VH$m;=@e? zIZ~q9*YSeIOkx+@L7MIKxqQxLd!@9j%=lDQY0#4lpL|A6!kUP2Gi`KW;GsIh(*vM4 z4W9^n2i@_uH8^T3?+E);QDJHEv#=YgRR{P+f{vcFPaw=aCM(e(>*yFxHAsE?%;XP6 zyDV&BWkW!*3MJZ=Rv@X++js$ZvxPCzr%h-WsHU^CvlyY2d({q=jBo?&{CceHl4QaG zzPP9|5zZ+LlU0}H6_1(7Wv;_#c3;QH{LyXdzc<7h9x&@Y5_rxv2*@4nUQoudz zjp5}ISp|jKTw!@fHn#sbpJ-|YKu~htM>+pJK5)=i4!!UGf6BPVEd+@=dlQrwKA>Lq zi-Sq$zce9ApN;krr7k3GJOur zKkTq-GwF?MZ#7ll1Ay>WrmdRgEng8-Gg5qLR(=!~eR`SB< zIeYhFz6RzMfOFY?wv7gSv}-Z57OVHN5bkUEcqX%GOX=pvWx#=mAiCIz4@&ZZAhY7uRe|5FvZY~!J56~ zlBXJsvMVyOF0-yN;|b|GA(vG_E-fD^+h@!#t<6EBQo>-(y~WJx@HY?3Oz>QvWme(N zyycCb>;eGdz@uD$-zv}1f2^q-UB|$cv$$wI!Ns`SyoJ3mXcrn2*jn@>y29ji=4lS- zR&QHp%G;ejrg?!}W^t~US3m@igvwTK@O8 zd$quSN$ORob?Zv6e7iK*I-zIiHJkQ?rUKYPA%piVNmDDM=6~?yZ(MjxrVzdOy!L%K zhR5+v@}{uT9h8S+oJ7xFyr7L<`%ZH;mX(-z(r9t!k`ImA{+obV^tC> z8fV{K-frzt`<%n$y%0%xJ(rKn%tfn1dY=P_9&$Z*Xn~N;X<;qMmAajxvkez1U24iq zBWj(J-@wKxUU{7!8!C-)e3ueXf&jtDD9-7!z(}8zinir?%}ZqL3Spp-oFcz|@bEiA zxCyoHJ)-HAo!s=feGIn%fTeDT!Tp^pKAqVkt6t|yC=Ce5#G zJYRHmiwksj|K2~twfA^U#8on08Puh=B|zlU%uR0WR81|Csc=T@8g2Q^87SIpz;VCt zIGb^1I*7<#MFYxTsMDdxCHrnzLH@nu{cG5e#k$i=a`~1a32^;AS#I1w6sug!kE6VT zl7DU#kl=p>_g^$fGx(0ZY=p0e6E8l39N~WJ6s>zU(5Z0BtSh@Q8F(f>yWf*pu2Q~^ zua5=sT(?9YS&imoO`8skpFWGM-^%J5CvX{Y9K6ouF1z^F$kH5pQBK&Gw!M-h@3;?F zn-~J<@`3v;$x79~wLp(~!M*T35W z8G>c-^?X1K-@^!;f&@Nu#D0sec&ii6(;my`dgvbr*K4w_<-V>jaMAIse9?O_^OpHR zI)>T2tYvcR02lxV*8N{B9Kf-U9&@Q5;aSgGtkt>e^kz#1;dasGO_Y|gx(D4> zfph~e7H^lnbN#&)BW9@n@*ssb%{Ne)!$*Ns-7BAQN8V2v)M33+8+GKqOBTIWX0@j; ztfyaiKxVG*mD$wFRteSBLlp?SyA-CH%(w}b{ghNb$$GSK;PQI_4(l*f^}n%XUl+-%h0V%1ld)={( z-SAWU%IZz(*6L}c%uq#nO8qtFq!5rbTG8~YuIcIva**|_wTrX97p$-oI-q5T_1}Xv zRt(B|07|X-rj2H`rGIKz7tVsjdIu$zR1jQ%5dBimd84FFa{8Jv?JJ$kIjZiP}&ic_%Da3uN5Hm9EZ^ z+cchvodevM&9|x9C*J+2p00YG=s~%*3Dgq^zQAp7*d~2_@UYd%sRzAy#adCS<^*e2 zOvE0;JXkJ<^2aNkPtpI;h|m@fT4!xIA)kn-(pw)aMig@QM?PL1VJz$xRhWkrSWtC} z9F{1wkG*7>*|Q;+@+ZpWox8vBm}>MYVQ$pc*8X8ZJO{*b9NJQ^$q>$Qfv5&x_-kU9 zF6r$|AMNdWkqU*#yI;G>5hB24R=~RW)$m#I>A_yr9k-Q>Lmyon`T{~vct4?|4efo! zb-psUzARoPUuh5BTFQ?y*JEC-CqTK?@9KEt%JN&{(=>LxH6?yW-UzQ$#{OlH)GhEQS=F z=3hc9Rl-k0rmA=K&LWS(C%<$*rgBmM@Lga!yd!deEM{GALg>4THQQAiIFjq|V=T+7 z0Ghh;MPerVAjJRG&yZHx{|PSFW`@5uPP{!+XHxrDLhtrzNQ>yq8x^iEJ5oYE@osoo z{6S_W1k&_5mn&{vd!wh=H`xkQ{T0Yd$nKIxgVC;BWQ%*M{(07xf`fmZtivR>Po6^~$P_ig zi>-RCcZ_IPFut&i{q%+om9_p^{|3CtD=DY8D!W~ylCPnTk6PE<-~@)V3V{JHH4H(q zW?Lnla5ZXJuH(5{2HB^{%bct-OFQ4q?|T<6fcf)y|780CB8Y^Nw4)9oSAdAo@oyo8 z+{T+4aSS7plOb(yx;?h4H|Ws@5$e6pWV|YCMgx%F7g0725S8ZTf;4z^c-FT`{NnfB zIMQ8FPYWzK5_rZ|M-b4OpBl;fHYppRT-qy>sN>;TRYHq654?|^CzF0uVV!s z&>pG94a03m^qcIpX+Ea3NA=*@hD0&$pNNJ2cGu+n2IX|F+zod&)((+iQ)pd0uB#3C z)V-4K|7Dynpb=@*>pF5MjosK&OV(ZW;#B9i2u+mOQrGwnj|g?4sqa;!(Np5#efbr1xJAbgiV+^|coL4|Vw)E6LJ|G5mDK+_Hq%aD1Z zm*mH-1KS(~8MHcHSgp~4a{*$iQa%m_S!2F~{j<01Dj;Y5&04_F(R0_<95m+rNzkVY zP5oRD^|KtfzsuA8^@`F^ehSAqg5L?%q;K4(!N7ZI;PX+Ipp+mO_J@il>dx+feQW`k?C%DU=PnFVa$4bU5Q@bR9kpe5)O8E3H) zEveCOg}gr<7X73aygni)Cgd|s|nnnyZV+Oq8vttqLv0pg>3rw zV@v&NGqvOkh^4B?K41^Jm8cW2fb32>p)E}DI>T`vg25h{oB*IiU^>>t$?kK zNO*V_nI3~~4!&NUau$~u98H3kJ=j6hvv3$Thh*GcWzKla1DkNnnV=Cx z3&L=L0^(yBcz0Ie;hb(_8AD zTQC2qMX{}GOwmlI1R>+3F~Rlm_Kl4(TxbO40xq~vrGE3t=!FD{pYc zeuQQ?0=d|t6CU0REl7X`jA1?%J##Q~^rULqUimcc%amC_EU0mx4lAn~UgkGd^(2aV zZYAlx+D^gxMHkzPU0Er$dGz z(;ikzJJjkaQp@}O)$$c8m6z8R<5?l1lRGnSBc(I>>mtvIdoo|L!q;oBj5#12Kl*H9aUstqsuxAhh%3y56*vI*Bg<+T zxF1(SZC@r_vYm<4FS;JS`cZs`mdWUL#4JTtu<}(X2@1l6QY$ec5!)RaJ%Ya}5`5bS gA!^H1#4ekoXTWLud~V=V2>65Pn%pkG>GbUX0e7=>*8l(j delta 14166 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 Date: Thu, 21 Nov 2019 18:55:43 +0000 Subject: [PATCH 013/135] This should be the one! --- code/game/objects/items/devices/scanners.dm | 2 +- code/modules/surgery/advanced/revival.dm | 3 + .../emergency_cardioversion_recovery.dm | 78 ++++++++++--------- code/modules/surgery/organs/organ_internal.dm | 7 ++ 4 files changed, 52 insertions(+), 38 deletions(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 33ecfa9e37..c07c52b075 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -314,7 +314,7 @@ SLIME SCANNER damage_message += " Acute [O.name] failure detected." if(temp_message || damage_message) - msg += "[uppertext(O.name)]: [damage_message] [temp_message]\n" + msg += "[uppertext(O.name)]: [damage_message] [temp_message]\n" diff --git a/code/modules/surgery/advanced/revival.dm b/code/modules/surgery/advanced/revival.dm index a2d5345ea4..fbfec404b2 100644 --- a/code/modules/surgery/advanced/revival.dm +++ b/code/modules/surgery/advanced/revival.dm @@ -65,6 +65,9 @@ target.visible_message("...[target] wakes up, alive and aware!") target.emote("gasp") target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 50, 199) //MAD SCIENCE + for(var/obj/item/organ/O in target.internal_organs)//zap those buggers back to life! + if(O.organ_flags & ORGAN_FAILING) + O.applyOrganDamage(-5) return TRUE else user.visible_message("...[target.p_they()] convulses, then lies still.") diff --git a/code/modules/surgery/emergency_cardioversion_recovery.dm b/code/modules/surgery/emergency_cardioversion_recovery.dm index f0540e78c0..284722d271 100644 --- a/code/modules/surgery/emergency_cardioversion_recovery.dm +++ b/code/modules/surgery/emergency_cardioversion_recovery.dm @@ -11,13 +11,22 @@ repeatable = TRUE //So you can retry /datum/surgery_step/ventricular_electrotherapy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - display_results(user, target, "You begin to apply an electrical charge directly to the heart body...", - "[user] begins to make an incision in [target]'s heart.", - "[user] begins to make an incision in [target]'s heart.") + if(istype(tool, /obj/item/twohanded/shockpaddles)) + var/obj/item/twohanded/shockpaddles/pads = tool + if(!pads.wielded) + to_chat(user, "You need to wield the paddles in both hands before you can use them!") + return FALSE + display_results(user, target, "You begin to apply the [tool] onto the heart directly...", + "[user] begin to prepare the heart for contact with the [tool].", + "[user] begin to prepare the heart for contact with the [tool]. ") target.notify_ghost_cloning("Your heart is undergoing Emergency Cardioversion Induction Surgery!") playsound(src, 'sound/machines/defib_charge.ogg', 75, 0) /datum/surgery_step/ventricular_electrotherapy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(istype(tool, /obj/item/twohanded/shockpaddles)) + var/obj/item/twohanded/shockpaddles/pads = tool + if(!pads.wielded) + return FALSE var/mob/living/carbon/human/H = target playsound(src, 'sound/machines/defib_zap.ogg', 75, 1, -1) playsound(src, "bodyfall", 50, 1) @@ -26,25 +35,31 @@ "[user] screws up, causing [H] to flop around violently as they're zapped!", "[user] screws up, causing [H] to flop around violently as they're zapped!") H.emote("scream") - H.electrocute_act(25, (get_turf(H)), 1, FALSE, FALSE, FALSE, TRUE) + H.electrocute_act(25, (tool), 1, FALSE, FALSE, FALSE, TRUE) H.adjustFireLoss(10) H.emote("flip") H.Jitter(100) return FALSE - display_results(user, target, "You induce a stable cardio in [H]'s heart.", - "[H]'s heart is shocked, attemping to bring them back to a stable rhythm!", + display_results(user, target, "You attach the [tool] to [target]'s heart and prepare to pulse.", + "[user] attaches the [tool] to [H]'s heart and prepares to pulse.", "") H.adjustBruteLoss(10) - H.adjustOrganLoss(ORGAN_SLOT_HEART, -15) - H.adjustOrganLoss(ORGAN_SLOT_BRAIN, -5) - H.electrocute_act(0, (get_turf(H)), 1, FALSE, FALSE, FALSE, TRUE) + var/obj/item/organ/heart = H.getorgan(/obj/item/organ/heart) + if(heart.organ_flags & ORGAN_FAILING) + H.adjustOrganLoss(ORGAN_SLOT_HEART, -15) + var/obj/item/organ/brain/BR = H.getorgan(/obj/item/organ/brain) + if(BR.organ_flags & ORGAN_FAILING) + H.adjustOrganLoss(ORGAN_SLOT_BRAIN, -5) + H.electrocute_act(0, (tool), 1, FALSE, FALSE, FALSE, TRUE) + //If we're using a defib, let the defib handle the revive. if(istype(tool, /obj/item/twohanded/shockpaddles)) - display_results(user, target, "You move the paddles to the restart position.", - "[user] moves the paddles to the restart position...", - "") - return TRUE - if(!do_they_live(H)) + return + //Otherwise, we're ad hocing it + if(!(do_after(user, 50, target = target))) + return FALSE + if(!ghetto_defib(user, H, tool)) playsound(src, 'sound/machines/defib_failed.ogg', 50, 0) + return FALSE log_combat(user, H, "revived", "Emergency Cardioversion Induction") return TRUE @@ -55,50 +70,39 @@ display_results(user, target, "You screw up, sending a current through their body!", "[user] screws up, causing [H] to flop around violently as they're zapped!", "[user] screws up, causing [H] to flop around violently as they're zapped!") - H.electrocute_act(25, (get_turf(H)), 1, FALSE, FALSE, FALSE, TRUE) + H.electrocute_act(25, (tool), 1, FALSE, FALSE, FALSE, TRUE) H.adjustFireLoss(5) H.emote("flip") H.adjustOrganLoss(ORGAN_SLOT_HEART, 10) -/datum/surgery_step/ventricular_electrotherapy/proc/do_they_live(mob/living/carbon/human/H) - - var/obj/item/organ/heart = H.getorgan(/obj/item/organ/heart) +/datum/surgery_step/ventricular_electrotherapy/proc/ghetto_defib(mob/user, mob/living/carbon/human/H, obj/item/tool) H.visible_message("[H]'s body convulses a bit.") var/total_brute = H.getBruteLoss() var/total_burn = H.getFireLoss() var/failed var/tdelta = round(world.time - H.timeofdeath) - if (H.suiciding || (HAS_TRAIT(H, TRAIT_NOCLONE))) - failed = "The [src] equipment buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile." + failed = "The heart is zapped by the [tool], but nothing happens. You feel like the spark of life has fully left [H]." else if (H.hellbound) - failed = "The [src] equipment buzzes: Resuscitation failed - Patient's soul appears to be on another plane of existence. Further attempts futile." - else if(world.time < (DEFIB_TIME_LIMIT * 10)) - failed = "The [src] equipment buzzes: Resuscitation failed - Body has decayed for too long. Further attempts futile." - else if (!heart) - failed = "The [src] equipment buzzes: Resuscitation failed - Patient's heart is missing." - else if (heart.organ_flags & ORGAN_FAILING) - failed = "The [src] equipment buzzes: Resuscitation failed - Patient's heart too damaged." + failed = "The heart is zapped by the [tool], but nothing happens. You notice a small tatoo with the words \"Property of Satan\" branded just above the right ventricle." + else if(tdelta > (DEFIB_TIME_LIMIT * 10)) + failed = "The heart is zapped by the [tool], but nothing happens. It appears their body has become too decomposed." else if(total_burn >= 180 || total_brute >= 180) - failed = "The [src] equipment buzzes: Resuscitation failed - Severe tissue damage makes recovery of patient impossible via surgery. Further attempts futile." + failed = "The [tool] zaps the heart, inducing a sudden contraction, but it appears [H]'s body is too damaged to revive presently." else if(H.get_ghost()) - failed = "The [src] equipment buzzes: Resuscitation failed - No activity in patient's brain. Further attempts may be successful." + failed = "The [tool] zaps the heart, inducing several contractions before dying down, but there's no spark of life in [H]'s eyes. It may be worth it to try again, however." else var/obj/item/organ/brain/BR = H.getorgan(/obj/item/organ/brain) if(BR) - if(BR.organ_flags & ORGAN_FAILING) - failed = "The [src] equipment buzzes: Resuscitation failed - Patient's brain tissue is damaged making recovery of patient impossible via surgery. Further attempts futile." - if(BR.brain_death) - failed = "The [src] equipment buzzes: Resuscitation failed - Patient's brain damaged beyond point of no return. Further attempts futile." if(H.suiciding || BR.brainmob?.suiciding) - failed = "The [src] equipment buzzes: Resuscitation failed - No intelligence pattern can be detected in patient's brain. Further attempts futile." + failed = "The heart is zapped by the [tool], but nothing happens. You feel like the spark of life has fully left [H]." else - failed = "The [src] equipment buzzes: Resuscitation failed - Patient's brain is missing. Further attempts futile." + failed = "The [tool] zaps the heart, restarting the heart, but without a brain the contractions quickly die out." if(failed) - H.visible_message(failed) + to_chat(user, failed) playsound(src, 'sound/machines/defib_failed.ogg', 50, 0) else //If the body has been fixed so that they would not be in crit when defibbed, give them oxyloss to put them back into crit @@ -112,7 +116,7 @@ H.adjustFireLoss((mobhealth - HALFWAYCRITDEATH) * (total_burn / overall_damage), 0) H.adjustBruteLoss((mobhealth - HALFWAYCRITDEATH) * (total_brute / overall_damage), 0) H.updatehealth() // Previous "adjust" procs don't update health, so we do it manually. - H.visible_message("The [src] equipment pings: Resuscitation successful.") + H.visible_message("The [tool] zaps the heart, inducing several contractions before speeding up into a regular rhythm, [H]'s eyes snapping open with a loud gasp!") playsound(src, 'sound/machines/defib_success.ogg', 50, 0) H.set_heartattack(FALSE) H.revive() diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 45cbda9898..ddd7378008 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -283,6 +283,12 @@ var/has_liver = (!(NOLIVER in dna.species.species_traits)) var/has_stomach = (!(NOSTOMACH in dna.species.species_traits)) + for(var/obj/item/organ/O in internal_organs) + if(O.organ_flags & ORGAN_FAILING) + O.setOrganDamage(0) + if(only_one) + return TRUE + if(has_liver && !getorganslot(ORGAN_SLOT_LIVER)) var/obj/item/organ/liver/LI @@ -373,6 +379,7 @@ if(only_one) return TRUE + /obj/item/organ/random name = "Illegal organ" desc = "Something hecked up" From da1da717d295e16ddbbd2480c208adb8951668f5 Mon Sep 17 00:00:00 2001 From: Thalpy <33956696+Thalpy@users.noreply.github.com> Date: Thu, 21 Nov 2019 19:03:48 +0000 Subject: [PATCH 014/135] Update code/game/objects/items/devices/scanners.dm Co-Authored-By: Ghom <42542238+Ghommie@users.noreply.github.com> --- 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 c07c52b075..70359cd160 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -209,7 +209,7 @@ SLIME SCANNER //EARS - if(istype(O, /obj/item/organ/ears)) + else if(istype(O, /obj/item/organ/ears)) var/obj/item/organ/ears/ears = O if(advanced) if(HAS_TRAIT_FROM(C, TRAIT_DEAF, GENETIC_MUTATION)) From a0a52018f39ceb0d3d0b90f874003f3bba1e51af Mon Sep 17 00:00:00 2001 From: Thalpy <33956696+Thalpy@users.noreply.github.com> Date: Thu, 21 Nov 2019 19:06:34 +0000 Subject: [PATCH 015/135] Apply suggestions from code review Co-Authored-By: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/game/objects/items/devices/scanners.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 70359cd160..8cb2f51e9c 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -224,7 +224,7 @@ SLIME SCANNER //BRAIN - if(istype(O, /obj/item/organ/brain)) + else if(istype(O, /obj/item/organ/brain)) if (C.getOrganLoss(ORGAN_SLOT_BRAIN) >= 200) damage_message += " Subject's brain function is non-existent. Neurine injection recomended." else if (C.getOrganLoss(ORGAN_SLOT_BRAIN) >= 120) @@ -270,7 +270,7 @@ SLIME SCANNER //LIVER - if(istype(O, /obj/item/organ/liver)) + else if(istype(O, /obj/item/organ/liver)) var/obj/item/organ/liver/L = O if(H.undergoing_liver_failure() && H.stat != DEAD) //might be depreciated temp_message += "Subject is suffering from liver failure: Apply Corazone and begin a liver transplant immediately!" @@ -278,7 +278,7 @@ SLIME SCANNER temp_message += " Subject is suffering from an enlarged liver." //i.e. shrink their liver or give them a transplant. //HEART - if(ishuman(M) && (istype(O, /obj/item/organ/heart))) + else if(ishuman(M) && (istype(O, /obj/item/organ/heart))) var/obj/item/organ/heart/He = O if(H.undergoing_cardiac_arrest() && H.stat != DEAD) temp_message += " Subject suffering from heart attack: Apply defibrillation or other electric shock immediately!" @@ -286,18 +286,18 @@ SLIME SCANNER heart_ded = TRUE //TONGUE - if(istype(O, /obj/item/organ/tongue)) + else if(istype(O, /obj/item/organ/tongue)) var/obj/item/organ/tongue/T = O if(T.name == "fluffy tongue") temp_message += " Subject is suffering from a fluffified tongue. Suggested cure: Yamerol or a tongue transplant." //HECK - if(istype(O, /obj/item/organ/genital/penis)) + else if(istype(O, /obj/item/organ/genital/penis)) var/obj/item/organ/genital/penis/P = O if(P.length>20) temp_message += " Subject has a sizeable gentleman's organ at [P.length] inches." - if(istype(O, /obj/item/organ/genital/breasts)) + else if(istype(O, /obj/item/organ/genital/breasts)) var/obj/item/organ/genital/breasts/Br = O if(Br.cached_size>5) temp_message += " Subject has a sizeable bosom with a [Br.size] cup." From 0cce3a01f4724a87aec71bfe260ad74d3d044362 Mon Sep 17 00:00:00 2001 From: Thalpy <48600475+ThalpySci@users.noreply.github.com> Date: Thu, 21 Nov 2019 19:39:55 +0000 Subject: [PATCH 016/135] Ghommie's requiem --- code/_globalvars/lists/objects.dm | 2 ++ code/game/objects/items/devices/scanners.dm | 30 +++++++++++------ .../chemistry/reagents/medicine_reagents.dm | 22 ++++++------- .../emergency_cardioversion_recovery.dm | 32 ++++++++----------- code/modules/surgery/organs/organ_internal.dm | 12 +++---- 5 files changed, 52 insertions(+), 46 deletions(-) diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 14c752613b..6fa9fa0daf 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -32,6 +32,8 @@ GLOBAL_LIST_EMPTY(active_jammers) // List of active radio jammers GLOBAL_LIST_EMPTY(ladders) GLOBAL_LIST_EMPTY(trophy_cases) +GLOBAL_LIST_INIT(freezing_objects, list(/obj/structure/closet/crate/freezer, /obj/structure/closet/secure_closet/freezer, /obj/structure/bodycontainer, /obj/item/autosurgeon, /obj/machinery/smartfridge/organ)) //list of all cold objects, that freeze organs when inside + GLOBAL_LIST_EMPTY(wire_color_directory) GLOBAL_LIST_EMPTY(wire_name_directory) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index c07c52b075..19a82ab818 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -319,18 +319,30 @@ SLIME SCANNER //END; LOOK FOR MISSING ORGANS? - if(!M.getorgan(/obj/item/organ/eyes)) + var/breathes = TRUE + var/blooded = TRUE + if(C.dna && C.dna.species) + if(HAS_TRAIT_FROM(C, TRAIT_NOBREATH, SPECIES_TRAIT)) + breathes = FALSE + if(NOBLOOD in C.dna.species.species_traits) + blooded = FALSE + var/has_liver = (!(NOLIVER in C.dna.species.species_traits)) + var/has_stomach = (!(NOSTOMACH in C.dna.species.species_traits)) + if(!M.getorganslot(ORGAN_SLOT_EYES)) msg += "\tSubject does not have eyes.\n" - if(!M.getorgan(/obj/item/organ/ears)) + if(!M.getorganslot(ORGAN_SLOT_EARS)) msg += "\tSubject does not have ears.\n" - if(!M.getorgan(/obj/item/organ/brain)) - msg += "\tSubject's brain function is non-existent.\n" - if(!M.getorgan(/obj/item/organ/liver)) - msg += "\tSubject's liver is missing.\n" - if(!M.getorgan(/obj/item/organ/lungs)) - msg += "\tSubject's lungs have collapsed from trauma!\n" - if(!M.getorgan(/obj/item/organ/heart)) + if(!M.getorganslot(ORGAN_SLOT_BRAIN)) + msg += "\tSubject's brain function is non-existent!\n" + if(has_liver && !M.getorganslot(ORGAN_SLOT_LIVER)) + msg += "\tSubject's liver is missing!/span>\n" + if(blooded && !M.getorganslot(ORGAN_SLOT_HEART)) msg += "\tSubject's heart is missing!\n" + if(breathes && !M.getorganslot(ORGAN_SLOT_LUNGS)) + msg += "\tSubject's lungs have collapsed from trauma!\n" + if(has_stomach && !M.getorganslot(ORGAN_SLOT_STOMACH)) + msg += "\tSubject's stomach is missing!\n" + if(M.radiation) msg += "\tSubject is irradiated.\n" diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 0bf1339bad..e380d96921 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -941,18 +941,18 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) color = "#EEFF8F" /datum/reagent/neurine/reaction_mob(mob/living/M, method=TOUCH, reac_volume) - var/obj/item/organ/brain/B = M.getorganslot(ORGAN_SLOT_BRAIN) - if(!B) + if(method != INJECT) return - if(method == INJECT) - if(B.organ_flags & ORGAN_FAILING) - B.applyOrganDamage(-20) - if(prob(80)) - B.gain_trauma_type(BRAIN_TRAUMA_MILD) - else if(prob(50)) - B.gain_trauma_type(BRAIN_TRAUMA_SEVERE) - else - B.gain_trauma_type(BRAIN_TRAUMA_SPECIAL) + var/obj/item/organ/brain/B = M.getorganslot(ORGAN_SLOT_BRAIN) + if(!B || !(B.organ_flags & ORGAN_FAILING)) + return + B.applyOrganDamage(-20) + if(prob(80)) + B.gain_trauma_type(BRAIN_TRAUMA_MILD) + else if(prob(50)) + B.gain_trauma_type(BRAIN_TRAUMA_SEVERE) + else + B.gain_trauma_type(BRAIN_TRAUMA_SPECIAL) /datum/reagent/medicine/neurine/on_mob_life(mob/living/carbon/C) if(holder.has_reagent("neurotoxin")) diff --git a/code/modules/surgery/emergency_cardioversion_recovery.dm b/code/modules/surgery/emergency_cardioversion_recovery.dm index 284722d271..ae451fbbd1 100644 --- a/code/modules/surgery/emergency_cardioversion_recovery.dm +++ b/code/modules/surgery/emergency_cardioversion_recovery.dm @@ -16,17 +16,13 @@ if(!pads.wielded) to_chat(user, "You need to wield the paddles in both hands before you can use them!") return FALSE - display_results(user, target, "You begin to apply the [tool] onto the heart directly...", - "[user] begin to prepare the heart for contact with the [tool].", - "[user] begin to prepare the heart for contact with the [tool]. ") + display_results(user, target, "You begin to apply an electrical charge directly to the heart body...", + "[user] begins to make an incision in [target]'s heart.", + "[user] begins to make an incision in [target]'s heart.") target.notify_ghost_cloning("Your heart is undergoing Emergency Cardioversion Induction Surgery!") playsound(src, 'sound/machines/defib_charge.ogg', 75, 0) /datum/surgery_step/ventricular_electrotherapy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - if(istype(tool, /obj/item/twohanded/shockpaddles)) - var/obj/item/twohanded/shockpaddles/pads = tool - if(!pads.wielded) - return FALSE var/mob/living/carbon/human/H = target playsound(src, 'sound/machines/defib_zap.ogg', 75, 1, -1) playsound(src, "bodyfall", 50, 1) @@ -35,12 +31,12 @@ "[user] screws up, causing [H] to flop around violently as they're zapped!", "[user] screws up, causing [H] to flop around violently as they're zapped!") H.emote("scream") - H.electrocute_act(25, (tool), 1, FALSE, FALSE, FALSE, TRUE) + H.electrocute_act(25, (get_turf(H)), 1, FALSE, FALSE, FALSE, TRUE) H.adjustFireLoss(10) H.emote("flip") H.Jitter(100) return FALSE - display_results(user, target, "You attach the [tool] to [target]'s heart and prepare to pulse.", + display_results(user, target, "You attach the [tool] to [target]'s heart and prepares to pulse.", "[user] attaches the [tool] to [H]'s heart and prepares to pulse.", "") H.adjustBruteLoss(10) @@ -50,10 +46,10 @@ var/obj/item/organ/brain/BR = H.getorgan(/obj/item/organ/brain) if(BR.organ_flags & ORGAN_FAILING) H.adjustOrganLoss(ORGAN_SLOT_BRAIN, -5) - H.electrocute_act(0, (tool), 1, FALSE, FALSE, FALSE, TRUE) + H.electrocute_act(0, (get_turf(H)), 1, FALSE, FALSE, FALSE, TRUE) //If we're using a defib, let the defib handle the revive. if(istype(tool, /obj/item/twohanded/shockpaddles)) - return + return TRUE //Otherwise, we're ad hocing it if(!(do_after(user, 50, target = target))) return FALSE @@ -70,8 +66,8 @@ display_results(user, target, "You screw up, sending a current through their body!", "[user] screws up, causing [H] to flop around violently as they're zapped!", "[user] screws up, causing [H] to flop around violently as they're zapped!") - H.electrocute_act(25, (tool), 1, FALSE, FALSE, FALSE, TRUE) - H.adjustFireLoss(5) + H.electrocute_act(25, (get_turf(H)), 1, FALSE, FALSE, FALSE, TRUE) + H.adjustFireLoss(10) H.emote("flip") H.adjustOrganLoss(ORGAN_SLOT_HEART, 10) @@ -87,18 +83,18 @@ else if (H.hellbound) failed = "The heart is zapped by the [tool], but nothing happens. You notice a small tatoo with the words \"Property of Satan\" branded just above the right ventricle." else if(tdelta > (DEFIB_TIME_LIMIT * 10)) - failed = "The heart is zapped by the [tool], but nothing happens. It appears their body has become too decomposed." + failed = "The heart is zapped by the [tool], but nothing happens. It appears their body has beomce too decomposed." else if(total_burn >= 180 || total_brute >= 180) - failed = "The [tool] zaps the heart, inducing a sudden contraction, but it appears [H]'s body is too damaged to revive presently." + failed = "The [tool] zaps the heart, incuding a sudden contraction, but it appears [H]'s body is too damaged to revive presently." else if(H.get_ghost()) - failed = "The [tool] zaps the heart, inducing several contractions before dying down, but there's no spark of life in [H]'s eyes. It may be worth it to try again, however." + failed = "The [tool] zaps the heart, incuding several contractions before dying down, but there's no spark of life in [H]'s eyes. It may be worth it to try again, however." else var/obj/item/organ/brain/BR = H.getorgan(/obj/item/organ/brain) if(BR) if(H.suiciding || BR.brainmob?.suiciding) failed = "The heart is zapped by the [tool], but nothing happens. You feel like the spark of life has fully left [H]." else - failed = "The [tool] zaps the heart, restarting the heart, but without a brain the contractions quickly die out." + failed = "The [tool] zaps the heart, incuding several contractions before dying down, but without a brain the contractions quickly die out." if(failed) @@ -116,7 +112,7 @@ H.adjustFireLoss((mobhealth - HALFWAYCRITDEATH) * (total_burn / overall_damage), 0) H.adjustBruteLoss((mobhealth - HALFWAYCRITDEATH) * (total_brute / overall_damage), 0) H.updatehealth() // Previous "adjust" procs don't update health, so we do it manually. - H.visible_message("The [tool] zaps the heart, inducing several contractions before speeding up into a regular rhythm, [H]'s eyes snapping open with a loud gasp!") + H.visible_message("The [tool] zaps the heart, incuding several contractions before speeding up into a regular rhythm, [H]'s eyes snapping open with a loud gasp!") playsound(src, 'sound/machines/defib_success.ogg', 50, 0) H.set_heartattack(FALSE) H.revive() diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index ddd7378008..c44a2cae4d 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -98,16 +98,12 @@ //Checks to see if the organ is frozen from temperature /obj/item/organ/proc/is_cold() - var/freezing_objects = list(/obj/structure/closet/crate/freezer, /obj/structure/closet/secure_closet/freezer, /obj/structure/bodycontainer, /obj/item/autosurgeon, /obj/machinery/smartfridge/organ) if(istype(loc, /obj/))//Freezer of some kind, I hope. - if(is_type_in_list(loc, freezing_objects)) + if(is_type_in_list(loc, GLOB.freezing_objects)) if(!(organ_flags & ORGAN_FROZEN))//Incase someone puts them in when cold, but they warm up inside of the thing. (i.e. they have the flag, the thing turns it off, this rights it.) organ_flags |= ORGAN_FROZEN return TRUE - var/external_check = FALSE - if(organ_flags & ORGAN_FROZEN) - external_check = TRUE - return external_check + return (organ_flags & ORGAN_FROZEN) //Incase something else toggles it var/local_temp if(istype(loc, /turf/))//Only concern is adding an organ to a freezer when the area around it is cold. @@ -117,7 +113,7 @@ else if(istype(loc, /mob/) && !owner) var/mob/M = loc - if(is_type_in_list(M.loc, freezing_objects)) + if(is_type_in_list(M.loc, GLOB.freezing_objects)) if(!(organ_flags & ORGAN_FROZEN)) organ_flags |= ORGAN_FROZEN return TRUE @@ -127,7 +123,7 @@ if(owner) //Don't interfere with bodies frozen by structures. - if(is_type_in_list(owner.loc, freezing_objects)) + if(is_type_in_list(owner.loc, GLOB.freezing_objects)) if(!(organ_flags & ORGAN_FROZEN)) organ_flags |= ORGAN_FROZEN return TRUE From db74091dd4822fe83f6bf886552a283dbde15b97 Mon Sep 17 00:00:00 2001 From: Thalpy <48600475+ThalpySci@users.noreply.github.com> Date: Thu, 21 Nov 2019 19:47:00 +0000 Subject: [PATCH 017/135] Strange revert --- .../emergency_cardioversion_recovery.dm | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/code/modules/surgery/emergency_cardioversion_recovery.dm b/code/modules/surgery/emergency_cardioversion_recovery.dm index ae451fbbd1..25f499fa76 100644 --- a/code/modules/surgery/emergency_cardioversion_recovery.dm +++ b/code/modules/surgery/emergency_cardioversion_recovery.dm @@ -16,13 +16,17 @@ if(!pads.wielded) to_chat(user, "You need to wield the paddles in both hands before you can use them!") return FALSE - display_results(user, target, "You begin to apply an electrical charge directly to the heart body...", - "[user] begins to make an incision in [target]'s heart.", - "[user] begins to make an incision in [target]'s heart.") + display_results(user, target, "You begin to apply the [tool] onto the heart directly...", + "[user] begin to prepare the heart for contact with the [tool].", + "[user] begin to prepare the heart for contact with the [tool]. ") target.notify_ghost_cloning("Your heart is undergoing Emergency Cardioversion Induction Surgery!") playsound(src, 'sound/machines/defib_charge.ogg', 75, 0) /datum/surgery_step/ventricular_electrotherapy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(istype(tool, /obj/item/twohanded/shockpaddles)) + var/obj/item/twohanded/shockpaddles/pads = tool + if(!pads.wielded) + return FALSE var/mob/living/carbon/human/H = target playsound(src, 'sound/machines/defib_zap.ogg', 75, 1, -1) playsound(src, "bodyfall", 50, 1) @@ -31,12 +35,12 @@ "[user] screws up, causing [H] to flop around violently as they're zapped!", "[user] screws up, causing [H] to flop around violently as they're zapped!") H.emote("scream") - H.electrocute_act(25, (get_turf(H)), 1, FALSE, FALSE, FALSE, TRUE) + H.electrocute_act(25, (tool), 1, FALSE, FALSE, FALSE, TRUE) H.adjustFireLoss(10) H.emote("flip") H.Jitter(100) return FALSE - display_results(user, target, "You attach the [tool] to [target]'s heart and prepares to pulse.", + display_results(user, target, "You attach the [tool] to [target]'s heart and prepare to pulse.", "[user] attaches the [tool] to [H]'s heart and prepares to pulse.", "") H.adjustBruteLoss(10) @@ -46,10 +50,10 @@ var/obj/item/organ/brain/BR = H.getorgan(/obj/item/organ/brain) if(BR.organ_flags & ORGAN_FAILING) H.adjustOrganLoss(ORGAN_SLOT_BRAIN, -5) - H.electrocute_act(0, (get_turf(H)), 1, FALSE, FALSE, FALSE, TRUE) + H.electrocute_act(0, (tool), 1, FALSE, FALSE, FALSE, TRUE) //If we're using a defib, let the defib handle the revive. if(istype(tool, /obj/item/twohanded/shockpaddles)) - return TRUE + return //Otherwise, we're ad hocing it if(!(do_after(user, 50, target = target))) return FALSE @@ -66,7 +70,7 @@ display_results(user, target, "You screw up, sending a current through their body!", "[user] screws up, causing [H] to flop around violently as they're zapped!", "[user] screws up, causing [H] to flop around violently as they're zapped!") - H.electrocute_act(25, (get_turf(H)), 1, FALSE, FALSE, FALSE, TRUE) + H.electrocute_act(25, (tool), 1, FALSE, FALSE, FALSE, TRUE) H.adjustFireLoss(10) H.emote("flip") H.adjustOrganLoss(ORGAN_SLOT_HEART, 10) @@ -83,18 +87,18 @@ else if (H.hellbound) failed = "The heart is zapped by the [tool], but nothing happens. You notice a small tatoo with the words \"Property of Satan\" branded just above the right ventricle." else if(tdelta > (DEFIB_TIME_LIMIT * 10)) - failed = "The heart is zapped by the [tool], but nothing happens. It appears their body has beomce too decomposed." + failed = "The heart is zapped by the [tool], but nothing happens. It appears their body decomposed beyond repair." else if(total_burn >= 180 || total_brute >= 180) - failed = "The [tool] zaps the heart, incuding a sudden contraction, but it appears [H]'s body is too damaged to revive presently." + failed = "The [tool] zaps the heart, inducing a sudden contraction, but it appears [H]'s body is too damaged to revive presently." else if(H.get_ghost()) - failed = "The [tool] zaps the heart, incuding several contractions before dying down, but there's no spark of life in [H]'s eyes. It may be worth it to try again, however." + failed = "The [tool] zaps the heart, inducing several contractions before dying down, but there's no spark of life in [H]'s eyes. It may be worth it to try again, however." else var/obj/item/organ/brain/BR = H.getorgan(/obj/item/organ/brain) if(BR) if(H.suiciding || BR.brainmob?.suiciding) failed = "The heart is zapped by the [tool], but nothing happens. You feel like the spark of life has fully left [H]." else - failed = "The [tool] zaps the heart, incuding several contractions before dying down, but without a brain the contractions quickly die out." + failed = "The [tool] zaps the heart, restarting the heart, but without a brain the contractions quickly die out." if(failed) @@ -112,7 +116,7 @@ H.adjustFireLoss((mobhealth - HALFWAYCRITDEATH) * (total_burn / overall_damage), 0) H.adjustBruteLoss((mobhealth - HALFWAYCRITDEATH) * (total_brute / overall_damage), 0) H.updatehealth() // Previous "adjust" procs don't update health, so we do it manually. - H.visible_message("The [tool] zaps the heart, incuding several contractions before speeding up into a regular rhythm, [H]'s eyes snapping open with a loud gasp!") + H.visible_message("The [tool] zaps the heart, inducing several contractions before speeding up into a regular rhythm, [H]'s eyes snapping open with a loud gasp!") playsound(src, 'sound/machines/defib_success.ogg', 50, 0) H.set_heartattack(FALSE) H.revive() From 7b17bf2acdc7ade5a182fcbce1d5083c2ef77822 Mon Sep 17 00:00:00 2001 From: Thalpy <48600475+ThalpySci@users.noreply.github.com> Date: Thu, 21 Nov 2019 20:30:49 +0000 Subject: [PATCH 018/135] god damn bitflags ARGH --- code/game/objects/items/devices/scanners.dm | 18 +++++++++--------- .../chemistry/reagents/medicine_reagents.dm | 7 ++++--- .../reagents/chemistry/reagents/healing.dm | 1 + 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index e6636ad92c..ed2ee333ab 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -226,7 +226,7 @@ SLIME SCANNER //BRAIN else if(istype(O, /obj/item/organ/brain)) if (C.getOrganLoss(ORGAN_SLOT_BRAIN) >= 200) - damage_message += " Subject's brain function is non-existent. Neurine injection recomended." + damage_message += " Subject's brain non-functional. Neurine injection recomended." else if (C.getOrganLoss(ORGAN_SLOT_BRAIN) >= 120) damage_message += " Severe brain damage detected. Subject likely to have mental traumas." else if (C.getOrganLoss(ORGAN_SLOT_BRAIN) >= 45) @@ -314,7 +314,7 @@ SLIME SCANNER damage_message += " Acute [O.name] failure detected." if(temp_message || damage_message) - msg += "[uppertext(O.name)]: [damage_message] [temp_message]\n" + msg += "\t[uppertext(O.name)]: [damage_message] [temp_message]\n" @@ -329,19 +329,19 @@ SLIME SCANNER var/has_liver = (!(NOLIVER in C.dna.species.species_traits)) var/has_stomach = (!(NOSTOMACH in C.dna.species.species_traits)) if(!M.getorganslot(ORGAN_SLOT_EYES)) - msg += "\tSubject does not have eyes.\n" + msg += "\tSubject does not have eyes.\n" if(!M.getorganslot(ORGAN_SLOT_EARS)) - msg += "\tSubject does not have ears.\n" + msg += "\tSubject does not have ears.\n" if(!M.getorganslot(ORGAN_SLOT_BRAIN)) - msg += "\tSubject's brain function is non-existent!\n" + msg += "\tSubject's brain function is non-existent!\n" if(has_liver && !M.getorganslot(ORGAN_SLOT_LIVER)) - msg += "\tSubject's liver is missing!/span>\n" + msg += "\tSubject's liver is missing!\n" if(blooded && !M.getorganslot(ORGAN_SLOT_HEART)) - msg += "\tSubject's heart is missing!\n" + msg += "\tSubject's heart is missing!\n" if(breathes && !M.getorganslot(ORGAN_SLOT_LUNGS)) - msg += "\tSubject's lungs have collapsed from trauma!\n" + msg += "\tSubject's lungs have collapsed from trauma!\n" if(has_stomach && !M.getorganslot(ORGAN_SLOT_STOMACH)) - msg += "\tSubject's stomach is missing!\n" + msg += "\tSubject's stomach is missing!\n" if(M.radiation) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index e380d96921..de3e46355c 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -940,11 +940,11 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) description = "Reacts with neural tissue, helping reform damaged connections. Can cure minor traumas." color = "#EEFF8F" -/datum/reagent/neurine/reaction_mob(mob/living/M, method=TOUCH, reac_volume) - if(method != INJECT) +/datum/reagent/medicine/neurine/reaction_mob(mob/living/M, method=TOUCH, reac_volume) + if(!(method == INJECT)) return var/obj/item/organ/brain/B = M.getorganslot(ORGAN_SLOT_BRAIN) - if(!B || !(B.organ_flags & ORGAN_FAILING)) + if(!B || (B.organ_flags & ORGAN_FAILING)) return B.applyOrganDamage(-20) if(prob(80)) @@ -953,6 +953,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) B.gain_trauma_type(BRAIN_TRAUMA_SEVERE) else B.gain_trauma_type(BRAIN_TRAUMA_SPECIAL) + message_admins("Trauma'd") /datum/reagent/medicine/neurine/on_mob_life(mob/living/carbon/C) if(holder.has_reagent("neurotoxin")) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm index 8ac5e1a192..363ee58649 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm @@ -103,6 +103,7 @@ metabolization_rate = 0.05 //Give them time to graft data = list("grown_volume" = 0, "injected_vol" = 0) var/borrowed_health + color = "#FFDADA" /datum/reagent/synthtissue/reaction_mob(mob/living/M, method=TOUCH, reac_volume,show_message = 1) if(iscarbon(M)) From 9af48caa62f63fd9fd38bfa8b564f28dcf2cdea3 Mon Sep 17 00:00:00 2001 From: Thalpy <48600475+ThalpySci@users.noreply.github.com> Date: Thu, 21 Nov 2019 20:46:00 +0000 Subject: [PATCH 019/135] OKAY DONE ARGH --- code/modules/reagents/chemistry/reagents/medicine_reagents.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index de3e46355c..73a72a3f09 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -944,7 +944,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) if(!(method == INJECT)) return var/obj/item/organ/brain/B = M.getorganslot(ORGAN_SLOT_BRAIN) - if(!B || (B.organ_flags & ORGAN_FAILING)) + if(!B || (!(B.organ_flags & ORGAN_FAILING))) return B.applyOrganDamage(-20) if(prob(80)) @@ -953,7 +953,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) B.gain_trauma_type(BRAIN_TRAUMA_SEVERE) else B.gain_trauma_type(BRAIN_TRAUMA_SPECIAL) - message_admins("Trauma'd") + /datum/reagent/medicine/neurine/on_mob_life(mob/living/carbon/C) if(holder.has_reagent("neurotoxin")) From 6062ab0c9ba63139302f011463c5efebc9d06626 Mon Sep 17 00:00:00 2001 From: Putnam Date: Thu, 21 Nov 2019 16:39:16 -0800 Subject: [PATCH 020/135] Also make it log ALL threat changes. --- code/game/gamemodes/dynamic/dynamic.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index 9b97b6a623..344e466fde 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -815,16 +815,19 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) /// Refund threat, but no more than threat_level. /datum/game_mode/dynamic/proc/refund_threat(regain) threat = min(threat_level,threat+regain) + log_threat("[regain] refunded. Threat is now [threat].", verbose = TRUE) /// Generate threat and increase the threat_level if it goes beyond, capped at 100 /datum/game_mode/dynamic/proc/create_threat(gain) threat = min(100, threat+gain) if(threat > threat_level) threat_level = threat + log_threat("[gain] created. Threat is now [threat] and threat level is now [threat_level].", verbose = TRUE) /// Expend threat, can't fall under 0. /datum/game_mode/dynamic/proc/spend_threat(cost) threat = max(threat-cost,0) + log_threat("[cost] spent. Threat is now [threat].", verbose = TRUE) /// Turns the value generated by lorentz distribution to threat value between 0 and 100. /datum/game_mode/dynamic/proc/lorentz_to_threat(x) From 03dae580a9c51d4be822035cf308ad8bc7bf65da Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Fri, 22 Nov 2019 14:08:12 -0500 Subject: [PATCH 021/135] Minor QoL and Wardrobe Updates --- code/game/objects/items/storage/belt.dm | 4 +++- code/modules/cargo/bounties/assistant.dm | 6 +++--- code/modules/vending/clothesmate.dm | 5 +++++ code/modules/vending/wardrobes.dm | 4 +++- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 713dbe4133..6cba9c77b8 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -575,7 +575,9 @@ /obj/item/clothing/gloves, /obj/item/melee/flyswatter, /obj/item/paint/paint_remover, - /obj/item/assembly/mousetrap + /obj/item/assembly/mousetrap, + /obj/item/screwdriver, + /obj/item/stack/cable_coil )) /obj/item/storage/belt/bandolier diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index d65c595b8f..b8f026d890 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -201,10 +201,10 @@ wanted_types = list(/obj/item/restraints/legcuffs/bola) /datum/bounty/item/assistant/metalshields - name = "Metal Shields" + name = "Metal Shields" //I didnt realise how much work it was to make these, you need 6 Cloth, 9 Leather, Tools, 30 Metal, and 3 Cable Coil Stacks for this. description = "NT is testing the effects of electricity on clowns wielding metal shields. We have clowns, and we have electricity. Send us the shields." - reward = 1400 - required_count = 4 + reward = 2300 + required_count = 3 wanted_types = list(/obj/item/shield/makeshift) /datum/bounty/item/assistant/toolbelts diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index c66e350af6..7ca5f74492 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -12,6 +12,7 @@ /obj/item/clothing/suit/jacket = 4, /obj/item/clothing/suit/jacket/puffer/vest = 4, /obj/item/clothing/suit/jacket/puffer = 4, + /obj/item/clothing/suit/hooded/cloak/david = 4, /obj/item/clothing/under/suit_jacket/navy = 3, /obj/item/clothing/under/suit_jacket/really_black = 3, /obj/item/clothing/under/suit_jacket/burgundy = 3, @@ -74,6 +75,10 @@ /obj/item/clothing/suit/ianshirt = 3, /obj/item/clothing/shoes/laceup = 5, /obj/item/clothing/shoes/sneakers/black = 6, + /obj/item/clothing/shoes/wraps = 3, + /obj/item/clothing/shoes/wraps/silver = 3, + /obj/item/clothing/shoes/wraps/red = 3, + /obj/item/clothing/shoes/wraps/blue = 3, /obj/item/clothing/shoes/sandal = 3, /obj/item/clothing/gloves/fingerless = 3, /obj/item/clothing/glasses/orange = 5, diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index adaa56fc6d..159887cf49 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -273,7 +273,9 @@ /obj/item/storage/bag/trash = 1, /obj/item/clothing/shoes/galoshes = 1, /obj/item/watertank/janitor = 1, - /obj/item/storage/belt/janitor = 2) + /obj/item/storage/belt/janitor = 2, + /obj/item/screwdriver = 2, + /obj/item/stack/cable_coil/random = 4) refill_canister = /obj/item/vending_refill/wardrobe/jani_wardrobe /obj/item/vending_refill/wardrobe/jani_wardrobe From 7bbc90d74790257ce1d92c8a2d715ecbd91615af Mon Sep 17 00:00:00 2001 From: Fermi <> Date: Fri, 22 Nov 2019 23:56:05 +0000 Subject: [PATCH 022/135] makes the freezing list a typecache --- code/_globalvars/lists/objects.dm | 2 -- code/_globalvars/lists/typecache.dm | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 6fa9fa0daf..14c752613b 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -32,8 +32,6 @@ GLOBAL_LIST_EMPTY(active_jammers) // List of active radio jammers GLOBAL_LIST_EMPTY(ladders) GLOBAL_LIST_EMPTY(trophy_cases) -GLOBAL_LIST_INIT(freezing_objects, list(/obj/structure/closet/crate/freezer, /obj/structure/closet/secure_closet/freezer, /obj/structure/bodycontainer, /obj/item/autosurgeon, /obj/machinery/smartfridge/organ)) //list of all cold objects, that freeze organs when inside - GLOBAL_LIST_EMPTY(wire_color_directory) GLOBAL_LIST_EMPTY(wire_name_directory) diff --git a/code/_globalvars/lists/typecache.dm b/code/_globalvars/lists/typecache.dm index 96807214f2..1ec3de0bc5 100644 --- a/code/_globalvars/lists/typecache.dm +++ b/code/_globalvars/lists/typecache.dm @@ -10,3 +10,5 @@ GLOBAL_LIST_INIT(typecache_living, typecacheof(/mob/living)) GLOBAL_LIST_INIT(typecache_stack, typecacheof(/obj/item/stack)) GLOBAL_LIST_INIT(typecache_machine_or_structure, typecacheof(list(/obj/machinery, /obj/structure))) + +GLOBAL_LIST_INIT(freezing_objects, typecacheof(list(/obj/structure/closet/crate/freezer, /obj/structure/closet/secure_closet/freezer, /obj/structure/bodycontainer, /obj/item/autosurgeon, /obj/machinery/smartfridge/organ))) //list of all cold objects, that freeze organs when inside From 399986f3f7f66c728387cd6dae90b9e1a5e4ea1a Mon Sep 17 00:00:00 2001 From: Fermi <> Date: Fri, 22 Nov 2019 23:57:09 +0000 Subject: [PATCH 023/135] Forgot to update the procs --- code/modules/surgery/organs/organ_internal.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index c44a2cae4d..6ff752705c 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -99,7 +99,7 @@ //Checks to see if the organ is frozen from temperature /obj/item/organ/proc/is_cold() if(istype(loc, /obj/))//Freezer of some kind, I hope. - if(is_type_in_list(loc, GLOB.freezing_objects)) + if(is_type_in_typecache(loc, GLOB.freezing_objects)) if(!(organ_flags & ORGAN_FROZEN))//Incase someone puts them in when cold, but they warm up inside of the thing. (i.e. they have the flag, the thing turns it off, this rights it.) organ_flags |= ORGAN_FROZEN return TRUE @@ -113,7 +113,7 @@ else if(istype(loc, /mob/) && !owner) var/mob/M = loc - if(is_type_in_list(M.loc, GLOB.freezing_objects)) + if(is_type_in_typecache(M.loc, GLOB.freezing_objects)) if(!(organ_flags & ORGAN_FROZEN)) organ_flags |= ORGAN_FROZEN return TRUE @@ -123,7 +123,7 @@ if(owner) //Don't interfere with bodies frozen by structures. - if(is_type_in_list(owner.loc, GLOB.freezing_objects)) + if(is_type_in_typecache(owner.loc, GLOB.freezing_objects)) if(!(organ_flags & ORGAN_FROZEN)) organ_flags |= ORGAN_FROZEN return TRUE From eee8c8c108389ecd12a2d7516d9f478adceb14fe Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Sat, 23 Nov 2019 03:11:00 -0500 Subject: [PATCH 024/135] Shields Bounty is now 2 for 3000 --- code/modules/cargo/bounties/assistant.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index b8f026d890..9e26cd25fc 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -201,10 +201,10 @@ wanted_types = list(/obj/item/restraints/legcuffs/bola) /datum/bounty/item/assistant/metalshields - name = "Metal Shields" //I didnt realise how much work it was to make these, you need 6 Cloth, 9 Leather, Tools, 30 Metal, and 3 Cable Coil Stacks for this. + name = "Metal Shields" //I didnt realise how much work it was to make these, you need 2 Cloth, 3 Leather, Tools, 10 Metal, and a Cable Coil Stack for each one. description = "NT is testing the effects of electricity on clowns wielding metal shields. We have clowns, and we have electricity. Send us the shields." - reward = 2300 - required_count = 3 + reward = 3000 + required_count = 2 wanted_types = list(/obj/item/shield/makeshift) /datum/bounty/item/assistant/toolbelts From fb4a47d310014c6de9c6e94c11fd380be007d931 Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Sat, 23 Nov 2019 15:58:04 -0500 Subject: [PATCH 025/135] Added more items to vendors. -Added stuff to the following: clothing vendor chef utensil vendor snack vendors kinkmate --- code/modules/reagents/reagent_containers/bottle.dm | 5 +++++ code/modules/vending/clothesmate.dm | 9 ++++++++- code/modules/vending/drinnerware.dm | 12 +++++++++--- code/modules/vending/snack.dm | 13 ++++++++++--- modular_citadel/code/game/machinery/vending.dm | 4 +++- 5 files changed, 35 insertions(+), 8 deletions(-) diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index afe48ab3fb..0ee131bc14 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -77,6 +77,11 @@ desc = "A small bottle of charcoal, which removes toxins and other chemicals from the bloodstream." list_reagents = list("charcoal" = 30) +/obj/item/reagent_containers/glass/bottle/cryoxadone + name = "cryoxadone bottle" + desc = "A small bottle of cryoxadone, heals most types of damage when used in extremely cold enviornments." + list_reagents = list("cryoxadone" = 30) + /obj/item/reagent_containers/glass/bottle/mutagen name = "unstable mutagen bottle" desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact." diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index 7ca5f74492..f2307cad3e 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -21,6 +21,12 @@ /obj/item/clothing/under/kilt = 3, /obj/item/clothing/under/overalls = 3, /obj/item/clothing/under/sl_suit = 3, + /obj/item/clothing/under/bb_sweater = 3, + /obj/item/clothing/under/bb_sweater/black = 3, + /obj/item/clothing/under/bb_sweater/purple = 3, + /obj/item/clothing/under/bb_sweater/green = 3, + /obj/item/clothing/under/bb_sweater/red = 3, + /obj/item/clothing/under/bb_sweater/blue = 3, /obj/item/clothing/under/pants/jeans = 5, /obj/item/clothing/under/pants/classicjeans = 5, /obj/item/clothing/under/pants/camo = 3, @@ -117,7 +123,8 @@ /obj/item/clothing/under/jabroni = 2, /obj/item/clothing/suit/vapeshirt = 2, /obj/item/clothing/under/geisha = 4, - /obj/item/clothing/accessory/syndi_pokadots = 4) + /obj/item/clothing/accessory/syndi_pokadots = 4, + /obj/item/clothing/under/keyholesweater = 3) premium = list(/obj/item/clothing/under/suit_jacket/checkered = 4, /obj/item/clothing/head/mailman = 2, /obj/item/clothing/under/rank/mailman = 2, diff --git a/code/modules/vending/drinnerware.dm b/code/modules/vending/drinnerware.dm index 0cd68e818a..1c29fff137 100644 --- a/code/modules/vending/drinnerware.dm +++ b/code/modules/vending/drinnerware.dm @@ -6,7 +6,7 @@ products = list(/obj/item/storage/bag/tray = 8, /obj/item/kitchen/fork = 6, /obj/item/kitchen/knife = 6, - /obj/item/kitchen/rollingpin = 2, + /obj/item/kitchen/rollingpin = 4, /obj/item/reagent_containers/food/drinks/drinkingglass = 8, /obj/item/clothing/suit/apron/chef = 2, /obj/item/storage/box/cups = 2, @@ -17,7 +17,13 @@ /obj/item/reagent_containers/food/condiment/saltshaker = 5, /obj/item/reagent_containers/food/condiment/peppermill = 5, /obj/item/reagent_containers/glass/bowl = 30) - contraband = list(/obj/item/kitchen/rollingpin = 2, - /obj/item/kitchen/knife/butcher = 2) + contraband = list( + /obj/item/reagent_containers/food/snacks/monkeycube = 1, + /obj/item/kitchen/knife/butcher = 2, + /obj/item/reagent_containers/syringe = 3) + premium = list( + /obj/item/reagent_containers/food/condiment/enzyme = 1, + /obj/item/reagent_containers/food/condiment/soysauce = 1, + /obj/item/reagent_containers/glass/bottle/cryoxadone = 2) // Bartender can literally make this with upgraded parts, or it gets stolen from medical. armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF diff --git a/code/modules/vending/snack.dm b/code/modules/vending/snack.dm index c8d9035998..efb0905f6b 100644 --- a/code/modules/vending/snack.dm +++ b/code/modules/vending/snack.dm @@ -11,9 +11,16 @@ /obj/item/reagent_containers/food/snacks/no_raisin = 6, /obj/item/reagent_containers/food/snacks/spacetwinkie = 6, /obj/item/reagent_containers/food/snacks/cheesiehonkers = 6) - contraband = list(/obj/item/reagent_containers/food/snacks/syndicake = 6) - premium = list(/obj/item/storage/box/donkpockets = 1, - /obj/item/reagent_containers/food/snacks/poppypretzel = 3) + contraband = list( + /obj/item/reagent_containers/food/snacks/cracker = 12, + /obj/item/reagent_containers/food/snacks/beans = 2, + /obj/item/reagent_containers/food/snacks/honeybar = 6, + /obj/item/reagent_containers/food/snacks/syndicake = 6) + premium = list( + /obj/item/reagent_containers/food/snacks/lollipop = 2, + /obj/item/reagent_containers/food/snacks/spiderlollipop = 2, + /obj/item/reagent_containers/food/snacks/chococoin = 1, + /obj/item/storage/box/donkpockets = 2) refill_canister = /obj/item/vending_refill/snack var/chef_compartment_access = "28" //ACCESS_KITCHEN diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm index a71175c345..53fe6a8f56 100755 --- a/modular_citadel/code/game/machinery/vending.dm +++ b/modular_citadel/code/game/machinery/vending.dm @@ -43,6 +43,7 @@ vend_reply = "Have fun, you shameless pervert!" products = list( /obj/item/clothing/under/maid = 5, + /obj/item/clothing/under/janimaid = 5, /obj/item/clothing/neck/petcollar = 5, /obj/item/clothing/neck/petcollar/choker = 5, /obj/item/clothing/neck/petcollar/leather = 5, @@ -51,6 +52,7 @@ /obj/item/clothing/mask/muzzle = 4, /obj/item/clothing/under/stripper_pink = 3, /obj/item/clothing/under/stripper_green = 3, + /obj/item/clothing/under/gear_harness = 10, /obj/item/dildo/custom = 5, /obj/item/electropack/shockcollar = 3, /obj/item/assembly/signaler = 3 @@ -60,6 +62,7 @@ /obj/item/key/collar = 2, /obj/item/clothing/head/kitty = 3, /obj/item/clothing/head/rabbitears = 3, + /obj/item/clothing/under/keyholesweater = 2, /obj/item/clothing/under/mankini = 2, /obj/item/clothing/under/jabroni = 2, /obj/item/dildo/flared/huge = 3, @@ -68,7 +71,6 @@ ) premium = list( /obj/item/clothing/accessory/skullcodpiece/fake = 3, - /obj/item/clothing/under/gear_harness = 10, /obj/item/reagent_containers/glass/bottle/hexacrocin = 10 ) refill_canister = /obj/item/vending_refill/kink From 79a64d9c6340b00fdd4be3d661949e706f907df7 Mon Sep 17 00:00:00 2001 From: Fermi <33956696+Thalpy@users.noreply.github.com> Date: Mon, 25 Nov 2019 03:36:39 +0000 Subject: [PATCH 026/135] Makes synthtissue a lil easier. --- code/modules/reagents/chemistry/recipes/medicine.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 374f7715bb..607e0b5a4e 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -73,7 +73,7 @@ id = "synthtissue" results = list("synthtissue" = 5) required_reagents = list("synthflesh" = 1) - required_catalysts = list("nutriment" = 0.1) + required_catalysts = list("sugar" = 0.1) //FermiChem vars: OptimalTempMin = 305 // Lower area of bell curve for determining heat based rate reactions OptimalTempMax = 315 // Upper end for above @@ -86,13 +86,13 @@ CurveSharppH = 2.5 // How sharp the pH exponential curve is (to the power of value) ThermicConstant = 0.01 // Temperature change per 1u produced HIonRelease = 0.015 // pH change per 1u reaction (inverse for some reason) - RateUpLim = 0.05 // Optimal/max rate possible if all conditions are perfect + RateUpLim = 0.1 // Optimal/max rate possible if all conditions are perfect FermiChem = TRUE // If the chemical uses the Fermichem reaction mechanics PurityMin = 0 /datum/chemical_reaction/synthtissue/FermiCreate(datum/reagents/holder, added_volume, added_purity) var/datum/reagent/synthtissue/St = holder.has_reagent("synthtissue") - var/datum/reagent/N = holder.has_reagent("nutriment") + var/datum/reagent/N = holder.has_reagent("sugar") if(!St) return if(holder.chem_temp > 320) From 639c07665d62dfb3aa768efa2077fee03fb64bd4 Mon Sep 17 00:00:00 2001 From: Putnam Date: Mon, 25 Nov 2019 02:00:03 -0800 Subject: [PATCH 027/135] Personal closets can use PDAs/tablets now --- .../crates_lockers/closets/secure/personal.dm | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index e44d3c9079..0af98c22a0 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -9,11 +9,22 @@ if(registered_name) to_chat(user, "The display reads, \"Owned by [registered_name]\".") -/obj/structure/closet/secure_closet/personal/check_access(obj/item/card/id/I) +/obj/structure/closet/secure_closet/personal/check_access(obj/item/I) . = ..() if(!I || !istype(I)) return - if(registered_name == I.registered_name) + if(istype(I,/obj/item/modular_computer/tablet)) + var/obj/item/modular_computer/tablet/ourTablet = I + var/obj/item/computer_hardware/card_slot/card_slot = ourTablet.all_components[MC_CARD] + if(card_slot) + return registered_name == card_slot.stored_card.registered_name || registered_name == card_slot.stored_card2.registered_name + var/obj/item/card/id/ID + if(istype(I,/obj/item/pda)) + var/obj/item/pda/ourPDA = I + ID = ourPDA.id + else if(istype(I,/obj/item/card/id)) + ID = I + if(registered_name == ID.registered_name) return TRUE /obj/structure/closet/secure_closet/personal/PopulateContents() From e7523862ebbe19ced56cd60402eb7ea287923bce Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Mon, 25 Nov 2019 06:02:50 -0500 Subject: [PATCH 028/135] Added Newspaperr to Loadout --- modular_citadel/code/modules/client/loadout/backpack.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modular_citadel/code/modules/client/loadout/backpack.dm b/modular_citadel/code/modules/client/loadout/backpack.dm index c2713b49be..66ed4f00c6 100644 --- a/modular_citadel/code/modules/client/loadout/backpack.dm +++ b/modular_citadel/code/modules/client/loadout/backpack.dm @@ -99,4 +99,9 @@ /datum/gear/tape name = "Spare cassette tape" category = SLOT_IN_BACKPACK - path = /obj/item/tape/random \ No newline at end of file + path = /obj/item/tape/random + +/datum/gear/newspaper + name = "Newspaper" + category = SLOT_IN_BACKPACK + path = /obj/item/newspaper \ No newline at end of file From 281ddf73ba833068a3c73c678805039c9d032b43 Mon Sep 17 00:00:00 2001 From: Dap Date: Mon, 25 Nov 2019 14:48:26 -0700 Subject: [PATCH 029/135] Ports AI console focus loss fix and fixes an error in my trimline code Port of https://github.com/tgstation/tgstation/pull/44207 and I copy pasted code and missed renaming one thing. --- code/game/machinery/computer/communications.dm | 8 -------- .../game/objects/effects/decals/turfdecal/tilecoloring.dm | 2 +- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index f3612078d6..0128ade1f3 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -42,12 +42,6 @@ . = ..() GLOB.shuttle_caller_list += src -/obj/machinery/computer/communications/process() - if(..()) - var/ai_autoupdate = aistate != STATE_STATUSDISPLAY && aistate != STATE_CALLSHUTTLE && aistate != STATE_PURCHASE && aistate != STATE_VIEWMESSAGE - var/machine_user_autoupdate = state != STATE_STATUSDISPLAY && state != STATE_CALLSHUTTLE && state != STATE_PURCHASE && state != STATE_VIEWMESSAGE - updateDialog(machine_user_autoupdate,ai_autoupdate) - /obj/machinery/computer/communications/Topic(href, href_list) if(..()) return @@ -588,8 +582,6 @@ popup.set_content(dat) popup.open() - popup.set_content(dat) - popup.open() /obj/machinery/computer/communications/proc/get_javascript_header(form_id) var/dat = {"