From 122ff5fc70b3b7033ec625950a28a38a6cfd3cfa Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 4 Dec 2023 01:12:14 +0000 Subject: [PATCH 01/38] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4942.yml | 6 ------ html/changelogs/AutoChangeLog-pr-5022.yml | 4 ---- html/changelogs/AutoChangeLog-pr-5049.yml | 4 ---- html/changelogs/AutoChangeLog-pr-5062.yml | 4 ---- html/changelogs/AutoChangeLog-pr-5066.yml | 6 ------ html/changelogs/AutoChangeLog-pr-5084.yml | 4 ---- html/changelogs/AutoChangeLog-pr-5095.yml | 4 ---- html/changelogs/AutoChangeLog-pr-5096.yml | 4 ---- html/changelogs/archive/2023-12.yml | 23 +++++++++++++++++++++++ 9 files changed, 23 insertions(+), 36 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4942.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-5022.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-5049.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-5062.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-5066.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-5084.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-5095.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-5096.yml diff --git a/html/changelogs/AutoChangeLog-pr-4942.yml b/html/changelogs/AutoChangeLog-pr-4942.yml deleted file mode 100644 index 910b59085760..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4942.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "IowaPotatoFarmer" -delete-after: True -changes: - - rscadd: "Added a Corporate Liaison survivor to Sorokyne." - - rscadd: "Added a modified version of the liaison's winter coat that allows it to holster guns and a few other things. Only available to the Sorokyne Strata Corporate Liaison for now." - - spellcheck: "Fixed a typo in the Sorokyne Strata Political Prisoner's ID tag." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5022.yml b/html/changelogs/AutoChangeLog-pr-5022.yml deleted file mode 100644 index 389b3f533380..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5022.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - rscadd: "Radial Menu for xeno Evolve" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5049.yml b/html/changelogs/AutoChangeLog-pr-5049.yml deleted file mode 100644 index 456b7f3992bf..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5049.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SabreML" -delete-after: True -changes: - - ui: "Removed the scrollbar from the 'Player setup' menu." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5062.yml b/html/changelogs/AutoChangeLog-pr-5062.yml deleted file mode 100644 index f733828f0911..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5062.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ihatethisengine" -delete-after: True -changes: - - rscadd: "Whiskey outpost is voteable less often and requires 140 players." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5066.yml b/html/changelogs/AutoChangeLog-pr-5066.yml deleted file mode 100644 index 96ab60a4bbf4..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5066.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - bugfix: "Fixes /spec_kit/asrs (now /spec_kit/rifleman) not allowing use." - - code_imp: "Adds back-end functionality for token redeeming on cm_vending vendors, and moves synth experimental tools token to use it." - - rscadd: "Spec tokens are real." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5084.yml b/html/changelogs/AutoChangeLog-pr-5084.yml deleted file mode 100644 index 2ace834670e5..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5084.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "cuberound" -delete-after: True -changes: - - bugfix: "fixed a runtime in /datum/component/healing_reduction/process(delta_time)" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5095.yml b/html/changelogs/AutoChangeLog-pr-5095.yml deleted file mode 100644 index 8ed12b90778d..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5095.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MrDas" -delete-after: True -changes: - - bugfix: "Observer minimap should no longer occasionally show wrong / no map." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5096.yml b/html/changelogs/AutoChangeLog-pr-5096.yml deleted file mode 100644 index 7384ce62d666..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5096.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - bugfix: "Upgraded resin walls can now nest hosts.\n/🆑" \ No newline at end of file diff --git a/html/changelogs/archive/2023-12.yml b/html/changelogs/archive/2023-12.yml index a481ce6987cd..8767c1ca1bf0 100644 --- a/html/changelogs/archive/2023-12.yml +++ b/html/changelogs/archive/2023-12.yml @@ -38,3 +38,26 @@ - maptweak: Standardized the names of LZs to include the name of the LZ. stalkerino: - bugfix: fixes the skull facepaint, black mask, blue mask +2023-12-04: + Birdtalon: + - bugfix: "Upgraded resin walls can now nest hosts.\n/\U0001F191" + - rscadd: Radial Menu for xeno Evolve + IowaPotatoFarmer: + - rscadd: Added a Corporate Liaison survivor to Sorokyne. + - rscadd: Added a modified version of the liaison's winter coat that allows it to + holster guns and a few other things. Only available to the Sorokyne Strata Corporate + Liaison for now. + - spellcheck: Fixed a typo in the Sorokyne Strata Political Prisoner's ID tag. + MrDas: + - bugfix: Observer minimap should no longer occasionally show wrong / no map. + SabreML: + - ui: Removed the scrollbar from the 'Player setup' menu. + cuberound: + - bugfix: fixed a runtime in /datum/component/healing_reduction/process(delta_time) + ihatethisengine: + - rscadd: Whiskey outpost is voteable less often and requires 140 players. + realforest2001: + - bugfix: Fixes /spec_kit/asrs (now /spec_kit/rifleman) not allowing use. + - code_imp: Adds back-end functionality for token redeeming on cm_vending vendors, + and moves synth experimental tools token to use it. + - rscadd: Spec tokens are real. From 9a8dbb6280a44187365cafc5d113e9939aa25218 Mon Sep 17 00:00:00 2001 From: ItsVyzo <46250991+ItsVyzo@users.noreply.github.com> Date: Mon, 4 Dec 2023 00:42:13 -0800 Subject: [PATCH 02/38] Legacy food sprite redux revive (#4975) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # About the pull request revives #3008 # Explain why it's good for the game soul # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog 🆑 triiodine imageadd: resprites a whole bunch of legacy food sprites including but not limited: all burgers, all soups, all salads, etc /🆑 --------- Co-authored-by: Chadwick B. Dunlop --- icons/obj/items/food.dmi | Bin 102807 -> 101648 bytes icons/obj/items/food_ingredients.dmi | Bin 5051 -> 5209 bytes icons/rebase_icons.dmi | Bin 83737 -> 91513 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/items/food.dmi b/icons/obj/items/food.dmi index 3c2e963e3804a6842d25695d1e6212de3449cd74..54de858ffc9ce74e75fedff8ce5db6743758ae06 100644 GIT binary patch literal 101648 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

(1$S; z5#P$cLE438_|g=M)0F<4`3eXR58s9b?BKAouQEx>!0;n7Dh`c^&GZl@Y;WTP_OiT_ z)avwEepEa4o>T~p2AW%-r`5=~p+}Qr;ltthoK58#^n-nF*C&JLb73rCTPV44w_9U# z$%E@$o7&uuzC`Zd9EyT%_eF=1!}ZTxSb?v$>D6BXVggZhkON?oG?s$#6 zH%Kh|W>pE|15R`$LGs)%Ud$*bgzL{m(G`2icN_jRL9j$B)u-eSZ%YJXx|%&_u#BdU zuQ12GYVw1x5Vm?u0JuFsCw(0OrZ*)Bt9J?+GvdIQ(2x+seB*XE*gE}^YbfXECwg-@ z1+qdMnTOx}24(3}U8tVfP~9bmnzqwRZh)cQy94y6qAC)F=b-9BoobV? z2nYm!eJwloN$Y>B7e^nuHr zZkeYc*zs8@eeKw~L`|r($uGd20aTmCaf-(KnBhl6Ic4R+r6t0^OAyr9kb{qpKv!3{ zVW*YnbUzN0fIJYn@eewH>=y~HI)`!lY_qsw&6a@yohf-?Nm3GtqO#SvK+4kMo|>O2 zhiqJH0F43l)rLDFyEl;u#JT9HiaF7DBJmH z1v}rmOnP86z#5{INXN>9(8=4N$HZL{pV6+G3!53n?(!89nm5ilB&P8WSDuaL%P5EK zNse6Xnci+4w8LG?%@P;ngBXgH30Y{-fvd`I<2ZZ_ukS8;%fGap^IOj%>)|~-J?RXp zs#f;(aV5j(gJ6%E{9ZyeHV>5RcXzUYKABUfTWkDYN$DRsT;0d%wj2cHJ{!470AmVM zjICe2a$L+e-n^rrz#f^vkO0r$3gpjxZMwslc=>Mb?J;%97683Oj07+tO&Fhb+iCeJjsLy_zS=V9bX3hmPmt_^meAoj<#!vtuAbA$t@t} z@6&$)1{8xS`1|TsTDP}N8}S%ah( z8U}$lm-*YCz3XWiqCDM)i5)48&=eIW+V+;7qw?RqVV#DH><)PU@FGqf#v->o_&FAO z3EZO%Y$m)VN2C=nYOdDvX^RJ+LhEjiz8_3xF>Tgo-2lNq>{Nm5I$EPU&AO>@s*1j| z%uy)rvu?Ih2Ks%2ynH9sVhP6D(vXU2$*(DcQCB?nR!qIo#mN?&0y#P)F=-VPgj zs=29!g>1X=zrQA$5Hn8c0HW;vkKb)w*2sl1o@bWd>0lWMw z0boVjad%YtS}Pbx>Cxw5x*K9EbnG0#5fEwRs=$2{ggjfR%TaC5^pW3jg85^YFZUEB z&YjKUQ{xSAHTHq>0Y{O-GwFi_(8y{kb$3gkCJ-hcWr88d0o^HHhS*k9xop+?=53F) zVtj@M+b8`m*xe{xT-%q}H8t^R$fKh%shC~Re>XF)A0S#5m;Ll!sQeT2m4a97Z%vaQ z^KZb=l%bu$C?StCBA87$ISh_y-@NH^YhF1Jt;7~Shu3n99+39|PV2o&NogY?dyC5I z-J5;sY>wXpR`C)~hZ^ay7A4h&EkwNNRv_8b%9oP{6U+{?!0b1TTjp;PLZdM_E{une zK&tU$hdu zJ5lb|*3Q~&b`;iKmE4X^FKWa)4HUeOSBj>yCh$BX&Jy>HA`973qm3(BdrnNf9D z*k0!ym6s@K8M!J>*o2YTd40|(wB0WfqK+LARH~B)rQRGjpjTd>wJ|7$!XnGOyp+9q z=m(KMmkK?Gld6%&nEeF$iKHdUTZr4P?GxT%b7wVJ@T zQsCJELR^DDP_gvgVU}O#{7-tCdx|*RKZK&jQCHj^>8th<5#jdk{{}#_bzQ#E;dWZ_*}k|?QBjHQ-34m;g+_33y~Ux5 zO6A7(x#nZDA~k&kZ$0d)o4(}{%bcnOGf?H%rLaZRX>;EP5Y6-H6N+$U%9|c#myvSX> z+oGkvQDfQaxbyt*j&7QaarNd+wAb4>^|_~~^WjlJj8rkptLr1GDBUj+W_zbF0WQ-4 zCZHGK#E(>AfClKQ>H`s(}p%?>lYM%}=ur9m9ae7*LztR-$^8m?~& zs_$M|s#oa4%SwG+>=n7!crb2g%5Jv|?#_Z|Vf+CfI52<@kFY-@?f&C8QMUK1G-}UA zLjY93el+4VL=EJe|{vBpnrW+G>uyh7Eui%yYLBiGRhreC{llZHD+Uu47G>|ZgOJT4Dhs)i z3Pr;lA)anQDJ$T~=UW)m(-Ve|PfYC79XCd#bIEI5&JPu zYolxezZc4wY5|8`&>t%m))dLhiAwWxkXv*oKZbR-m&((C*9i>q_o28Z;;2tILyMZq zi!TrfRHTW3yQeZowfYsAUsHJje_919d~KmPxxNCL9bLMlhJ>0xh*S4d z$%-OJ7cJZ;X=y%hhCQ~{^`9xV0$aRiZ{|85K%8s$2U)lg5nfYmRSp3w_j_FQ@a7Wl zN6Nvn(E+dZbQ$WJug9LAyCO65kree+6fk$ldZX!gkFM*Sfhs-~KTWp}(}VNM`B~kc zfm34Gzt;x<;mG8f$QnxZ#(8zAoKdl{j@pAU zks)v@Mt;lgjIoWfr#vQ#0;D>fBn{s8xW^uG-OIjh>JI)9H>ii<9Fsl6s}W6O)PWvR zX$uT_^4f9YUrLnLo}a~mXN&ifBCaDcn|t!Xfy7&9^Fk1bZ7uQpKhF;>*OiwLUAAT3T<7W03at^$3P zx*yGG8hgnmH1@5;#%z}R>7vcBxn>Er#4G3K!m&(5t%a$J?S%gJi4-)7(C{qC^k^$T zZ!?>NiR`!X9qWiMdHOH;(Gb1?z3bw9-!ncwd|2cKAU}Y$Zht&Yz)&`U!yI!!cuuPO zrCtbYc!cbF4HvWkk93FYamD>Ue2U?rNOUu;pwW1u9yW%k+ps~@ThVi^;hdtJhzZ5# z{BiK9iml!_%Oj0kqv&gY_{%5AFm%eqB`-VdV0?n( z*Zx7<$|CpW9d4>)=X1f^eB(Y62p%)kZz!4L$3OEM-@@r=E?5<#f78RlLqG69 zPaKa+PgWd&Qy$Kt(LPMqa~T=uo1Cf?dNp$h(&kOiZ)N4XtA-{|&P+e1^k;a<2jXbu zjW?+0Kzeh--KlvStN979X1;(dL<|d51pRjW`FIW^e4OBW>n=AN`N&M%s>SK#kY?>3 z*7xs;FXoj+nnEs6_8eQ9Z^^pi&-Q|oOQ6LLj-t&b-6AedGt#ySk(l(RYFqE8@rP1t zPh&!_7w}iD6uwK+B{SeLcESuxGHE87R;I~Yoo{NyJ3Xatl=BrB+}b>V=*s?Z`S~nT zL&@ys!%jDa;WbtkzETAq6t&UsauLc=?O*dRq6g-_rA!5VZofiqTq@b1J0HY3VSfy@ z9x=&CLsBtQaeNAMZ=Ud`W2QhymOVekWHb484ykja#lNy;Mkqq{S+lN1E8U08G(T^wl{w|Boo!cU^s=1V@kqIAFGxb4( zK~Dh*BG~yTCtw_r7*<-w#I)#JP1W)tA4{RJu*Q_>2D4a6F1<&KQ9v34hAKG%U%08$ zp4|X*oSG&#*4wTvPgIVA?C_{ekt7AAtQfCmrFDzkES3JGl$D&K2@~ojR+JPeQMPSz zN+S);d%~gD7=;891I*=gT~T^*Q4nF9eP4{f%^e#!mMFHwZCma>3uCuWRR6Pa{yRYo0) zv@&*Mj|%phgG(Dongb@B4xPzc6A|QuQQ@m?UHzYDP!Mg+PPQce^{7dqXVordsAWaJ z(JF`U;Kg(Av1HRTkY{C1i3A#RNWK@`s+&&hv1cbs8=2I@6?jw}Jcz1h8T&~_L0%HT zDJX1kHzi@eo2H?mAPg6<`9AwTP`(>F_++hwqeH2d5_>`sn!i8{vt@4achz4YRJnuj=}p1^p~|mrMu9xrwaV|5T3Z||FVF*o(C-h)lR^#)5(S4QyMnhQz!6{P?1N6CH|x~C zxTCwjV^4;80&4g!(z(@7W-5_0DY3b68;EauVqTy2yJa*j{UN{n0#+NU2cf|#Lb%-OKmLEU84;Lx0@?t}95|}u|4n)Qv5(kLRV^?Q^;fd_n)5>xE zRDwbANI>{rzDW9!;O>HeuR)^UPWM;$wDe)tj1;&z#Cz$JtrmVgOv?6fG>nO#!&Zu$ z5ADuRmkWZ3?P?i%;R24VKK3n5XXfq{Sbk?1oJten+zR)n_G3amFLxSZ=&3Ib7(z9s z(o8~!lS#1hZ%ubR3ys(e%A>pSn&a__n)Em5>ZPdH5e&KUfKEOVhm{>VMXi@D0r%I_ znAmL!35OLckKyD9TuGUa{Jw(I|9X~rM%bj$!+*Bid&KWyyOxsLhba(eKW7J5lQyAO6v;@t3|M=;_7%*oquT8(SI>25@}+cy?4$e~CXeHPSG>w(pdiSaN7O__CIGn({39HS@HG~F>0JQW&Qr7@zzSCK03 zX%}C6bD9d=sxYu`TyU0i{kTUz(ysDoS`%QT z?dbic{IKH493EADXq$VG^DPTCO>zJ35YD%ul%maDy^02aBbi7A8mve15`LvtUjh7OjK%;`en;Lc zafeJqwfMYRHqYak;GkE(=p27;cR!|P2DP05C26_s}SIDDn2ww{P($&Nmd0PcNnP|M-?F zLG#-cS!63cfN-k-7EnXwvWTV)40Ir5>wEr1SZ~xM*PO1*2Sj@G=9wRq&U&NaOR7Zt z@&kEYdke|vqmF<7#}2`gsc;Q8D+`MvUIxT2IK31cM(UVOSRO9rq!Oj{o(u2`F){h% z$lq@PYb`M!f|0l^`w$Bi<8e*Q=9Wwp30atn1`1{A_;yY;jEodt3knA)gcaP~s}0OV zl>9VZq;}qgs>WD6&dc2gP$(;CV8FgvTd8Co53jE+!ZRCnNjbkPsy){ew8Z5P*y)|g6Vi8+S>IQoz>>ZCl|~_- zTSgdUX=nLr7l1*+E7#1bw=+|ihzr~fgv*v!(c$a<_=g4<3a!A74hC2lYb z{WasV} z-N76t_>Nqet&nj%`kiO+gO6p+7I5kpDjpSkO@=OUZ1kT4zZ*s7_zGR|U5_o9xMD6| zvG22OfA==&ZPvvKS7Q=fJ&M@D~t;)H3IK#(*pvLyX-b%2Vt>%yuk>U9x zKqBU)K7iH_u)2h_Ne)qP`Z5hnA(`us1b#WZl+0A=F$TWXX~+pitZ2aGp9;O1nJN|) z@6DY8w(MS^-me}~lO*wwe|t{T;x*2VS@ef}xsetT_F1XAl-Z$5dvqDci#fJE1z&Ox zC>kg=u=L=QpwD0usMFV-OBz~@247Wo2O?fg_zM@HOJ$`w5r;-4>^@JFRzoA7&Q!OQ zK<-O}9xs{K;Cr#NS3=PQ?!iJ-`O||P5tzVj$~JQtx3SuC$s-VVrq;sT)>7wsIlAer z-3EhGi%wX2Q!e^%{9(Ckp{jah=zcmjwptemcIt+N5cDvO-9T4J!Ajvi%kRWez-*=?U>VM5HgdFa^1uP6lFvLyqITsTc} z45}~i=4z>~iXpf_@ zjimvRJKdRw=cmAz*rit&Pf>KxQJDqV#SlMC0H%{TiZKW>DLY;}V>-QWZlAyJE9WQ> zrU?JBwy-L=x}HaydX>7{x82ZiP=M>aTvOr)38%`()qL39A1%sjMDcQG^{kPzh_W>- z5ZAR0&{FFl*7)W>o$y*H{mXWj$Jvn1l$cF4OdfApkRUU`i)5gY^34(vGT9KGPD59M zADJ5wHr>fO@*mg?y5_|1@-_FpXJs`EHQ4Q)YTIb7!3)^Ej@cpwp}M@9ge{BPex-qX z4_%^~Z%5z1ki!|K$+h)xR298)mtcx`@Hh(hN1mbXW$nj zIlaOtqADkcf;<%+<_avlBomUvzkQC07grgO&U3nA!;tpu4Y}WjE zY_C_wp@_c>yiKO~sGxI|a%yZI{jxUUWp_dmmYnOXzaWbXqe^66Z7n}SYGP)^iJ&Ro zDY;ZpeDaqms(I4TKL^gce|3kT@a%@Al@Pg~MagcP5ZoluC|t@xJ}gk@+w;!)h}c+u zO(cVy!W&w8qr;fFa=WT?&gMPX9-q%u@)ujm>@A$8Zz&Bm^{e@pFNyA9#xU>n*Vn)v zJI(;j`h{rhw_OfZ`g;Rg#i5qA11+wXsJ!If`s@PiGj@4gNyz4J#?kK(65d(lQnCA> z50Qu5WgLBNBuGe@wc7%!3gt)tIz#irCk(4crqbTQ!|f{wf`5Lr6-;8L2s6}*HLKU=Iw z1K0Sx$D>VAI%7PK9~=8_YyJi61XWjaz;T=gU-z?9r(|#U1*{@9x1pG_92vs*Td0f+ zUVH?%t|T(UsJc)?<|MX_HFc|LX-&I8T6dZW^|0>h@+#h@X*H}viCH=p*zmK87;r&;^ zRwJe|{qM67nQ0LJUj?_sxaM^HE}7464a%(*aB;hQ(TOZYfc@eF!%uB^ewYdu@s<+H zAoC)#dwrWBNIL4BJnYOISjx58SvMFCc;^#sn^lC-Q{A4ub?^CHDEECt;Vb0w1K{=g z&ab?#Ds=kkbl?h@^OlT^4epbSOyuR~{6VHu!t#+D4`(GecmqHDnIlZ}eU@{fYOmIX z>w$P&7|x0MIDg`Ucnp?J{l)r-U>|c|G_#rAWkfQ(Shf7`ilRSmizP>P&-o^;JNr5k zwWoiqH#r}z>#w)et79dg5pR&56+K- ztZ#iJICKL*wz!GM6!Q&hz*CM&zq$MNx;kGrhM-#tt@*T88`ZFN$MP6_=r}Yxsa*T2 z_WB_d3w@5Il6`!C1=!6>tnpC?BBI~}*+-vz&|)*z0JrgBorjv(oD1PGbI0&B}19E^7`J zqLQ>Xs+v{PvM*du3(?vrzXsE%7KQRhm>3au-=!Tf4WrJLfXU5}%rCm0z7;qtF%-V$>1h8JBc# zf?{*kfq6;J@PRPaaTVp3OF^@U+L!^)Rxm+J@#Cs=kY78_dsCIT{4iScsO6*Y(8OyXS{L_#R}wt7XH$yq%Rqhv~-Y4dgKP(d5tf$XUH=@8YVnunX-3_k5YHlbR?xF8yUM^s|k*#KpytlIjjVjl&|ZmDo_x z(a;hBxVX3jSHIYtZSKN_1fwN;YX}=k37o>?)`}(!Zo++a)bYJGv z@yo*aQp$3_cSxwz*&i35r}mGw%!}PM@n|24k6F{*^YEMRPbxf z@xtx+o{kjbS<0g0n^|S1;8+?d#Ol4~^h|>Zz|vBc_lB&~_OBi$Dr}TL8yPjITZOK8*G9vMjjq=f3!vNv0 z{bXj^t5(A>BCVFsQb`o_adN?SasbiFKznq5IpAyPW1_Plfij*(NvAkB_bla_rdB}0 zS<#UH8P?!wnzxrN25v1?BCYe|-#`Cm{qx?Gt*yh}Mggl`7{6OP{T>=)4qu-o33fmpxn9tK)$=Bs zrL$L3fOAr`yY9U(*k-(+-zHMKfab2l?5r`T?YrN1#cTT_o8zwE#P+e~(nwjfDo5A& zmC;@%vI{oHdogU$6n}XYq_P`z1Z5C|y5~wY6~AnW?|wgjztI)*freqH=>>Dt`_|z6 znapWpG8)+$;qQt_9`3tjMZI`dGyhQDn-aEs77Ew|`n9jZ0zgC0zXaG_Q0({Un&gDl z?y)YHq4@g2zkdWx=wo1b_AgF^ZE(r934IY0@t|y$?F$MHrVAuDvg)t%Zt!E$uVqF4 zTb0DIp_EQ-VXez$a8s6i*%k%E;WP=gX}1i0L3#At5@W3s)hC!GqaP_rM8pzdw#oRRP>#9kLy+J1kK13MZ}=MbOgNScu>R`eM;b>Z!56Bq|)wO{QmL zWNfofP3dpTdFx}6F5jTkv`bS3!IU$yF7c*;a#GenzoUuE5>qKf2VPM zCz#ko7oo(|IB^vm99#@b;LQ!p=^Zf~-#%k*;O^KK>eEPNeW2LB-g~aneXS6dugvmP zvVOo4>2zeF5){<4tqeK706sy0@kWbeaev>$L%TkIyok!gVU>Zv8=NzvrfSodZHwZM|0hq8+C6 zT2K*cvgKGCdbE3T!hCMTQ}BfL@axFP-yTJu(I_V5>E%fdK(KG=lJsSos!s-E|LDSD zIVSx_X&BjCeQ1!P^tO#``XDhDecRRE-skMoO&TG(YS<|YDJg?X>wUq7i>@;hQILLz z^u`{XvM=shT4;o&1Gh0X7O4zsZ?OAp?V(S4Zu8MGlo`?B3ZdU27(11=jza=EJy^#qZ0 zcWY~=dRhL=-?RT2kd*4$N9n_`Pp?zwdff*x2B&-1%Lm{cq_gbHyel(1 z1h(PU^jfX2p|fYTK0ER;jBvd?gYg>*jxSf4A`K*M>4ZBOBJ2jt%GN#HI&3GxM=aOh z>aBc%+dknUt7ApRJ*=1vrcaTYm0dwR$Cwl0wG0v z#;ud**FV@?iGh^G_(FE7`L5LLoF8&){(!(ZpXFsz?EV~DH?#Lm@vb^>{}qB%9II<+ zD5pQ47wbP+2DK^%-bO|74A#F zhUazOKs^bMt;-?1-)yX_GrB)t*VNQ(q<>4k>v?w|EPc)$R}hY^S~s&f+uGasxGYd7 z|GasJtT}Mc;gJSvl^YAFxwN1^|Ig>6TE3aDOGUw-s- zXgj88N?r_OHu)bc0GEyL>`A%FKd$YaGOS*hP7&Hvi^DP6ew8v>fb&7{;dOOUfClo=xIOC5g@ux4UwU|JEn zmUT3t&EB8Z-oO$uN8h%Gv!{AG0b66~b$|F*N!_v4f|Nw@+oTMmo`EbUq(B;l>KIi; zHKBx*lvD@*wvMJ|+Sx{zPJLq|6%$i*WaP)WxjD96bXi@*Zy-U?$d7C`q40HqQ(lc1 zduaPa)@bZ2eveDCg@uKGi^}I0_1xp0um5^??!Wp$PNNwcLshzak>sbvVw_Qy5OVkL zs8o9dT>_5irm$TUAvl{vI!w6U5S7~dP^8dQ)&OeRl(axWWbvsYk`?gE0BvTafk&Bt zVhs-*%D(mCAyTW^u?gtoQn+#^VQz4AHk7PxcY=XBi*?<`;$u|rbkC5NtK`k*p5$IZeU&}X;U!8IPPCr4LW9Sd4k|Y(;gN5?^<&!5ftBwPlM4W zE!v`)%?fPsWPCp2v4Uo+GGBK6uZ)S-4}#hF?eZGOMPIX5f4+^YZfa&`nYp^csNW7*gf!`d;OcNo#HYma z_CGUWxBh-ELluzP9(uo*-ax=KRz=V3kCHmCBsjx==wpHeo4nJe@*F|-8!;7mHK#TYRwo_rlaTgls*%8 zY-q(!nm+;=&Z5^p?gXl9;>Z>yQma^BTTA6}sZ`Fu*hsTj4N2^-4bRu=Jx##RRX z^qGu_3Q>$_?G+B;0}=gdOHOBoAkoWcjhN+JPlDEb%u0vRLw@U>a=RGqr#|ihzKYFS zG}`JNKJ&XY7=k5?E}1m0o8biSQkK%3OSUt<3>< zEE2~Ke*lnjQYrEAKG>lxDC zzZwOT6b3O#sQ0;OpM;>N3V7B4y)qriVm)5A!f>SpYeO1cCg==+l zl)CJq8swhl7mT{G3{Xp!bV#n0kk=zLo71K8ukJ_Z_w;z;b6(t$ z|4EBx2fH%rr;xNY>`(3I+A19UCkZI>I+n~>ByeG)6~Jx3F#$=DqmcNoN2XG@c&9dM zvfi({$JD9-Rkk+%s(D- ze0;3Xb`hGNdgdk#gao(bM#K;V)(`GFyP=`TMJ6_FAJvN<`tJ(8 zqA6@4yqpN}#t}#;IMC)Fu%YIYYeFd&(_w86r?OQPV?xXbjlfIORHG=$3W@KJ^S(L*^_@~3k3GN2?@$Bv7~{Naw8hU;{VdZ ztrYTzY1JO|gXvJ@OH)Cu0u->Yuo|6!zm?!3Svk4r!mAt8<(WK>mp7_ZfHfZD*myag zzzs8tL3eap8=tzm`rt4qAv@DLsT%^+s{2p+xjMW$;3)qFRyCY62>hMg0D1r&3yV@q zN5{n88mYHPHnp_06!7b*9~SZ@OoOsBW&ataE#`@TpNtOvm+`KW{687%{|6@Q|1EtT z9Dw-Wq<3lb|G%7gHH<_@R+5B_w~kL%+`nY`@4U=19tZ%e(%&>PI0#9%G_?GqxnHyR z!r@gq|C{$oiPS->LxdHJYTr)!G3Ww0+KrE1kN=4wK7GYaxYN6IG;mUx)slGI8f>CPj)pm(M3 zMJ0s+8$x<@jqzU#aj{{PwCwD@0UK&!*{moTA-#}px2K5yOrskT`4`mvAG-&1v>T*^W- z#+VeO2>DODKWZO5ytK_xiD*;?`IZUBk1Zw%p7E2L6mMszCsGF-F1>$GnBM$-h1X3v zZ1Cpuyz8zFb)qV$Gsf6ms^{i<3IYyu!97zDHM7PE61UGc$q1L-JGfGn5Utr7oy2<~ z!h{RwtX2j?Wj(BxS8TB89U*>nDQN#f(a|o}v9UB1fBaEeF_ht&1z+xm9I=5$``VAS zzuL_4DSD)vt4s0K3kf;Vt~H%Ac8JbXS+t&QZUdu3NCB16$hxN;%1U1Ge<^Xa5n&#- zDzGMH@O#ha@V-3;;-5LGv}YNJrIIL|GW@lNLvOq$me%M_I(qN4HyRAbAO;U|wI9kz zL!w6rmiEMIw)noHv|Vl~>M%IiRfS+I^~d$*u<}E0wl)xpqL}1jB8$m(6-)=fD)E6X zW&Be7v*$8x>G6Z|32D67&3QhpE0eZ<)m8{&nX#Iyxk)*iN8; zgLr-QX?RratFnHm`XVZ+;=t-c)=j6jLQchY3c8MhHjoFa_!DP_XNc0Je}@BVbJ3+( z8~3i-_5Sq-0iAkVgHL|16l@*$O{kvrR#XNgEy_8sjARxKq8MzPg|Z9GW18X%W;T`W z2#6=t(L_}36alf|}yjX8EcmP9%mB(Z9_udBz$S;rdA%0*av2f?} zb2UThFi6>L5g+7_3Am-tfgC!$r46c96NGxSv)xV?KyIDH0zdSAg%qa|;`_CZsSe&3 zw4B@Wy5i4r3?$DuU!fntg!`UJ86(#dY4?L8Fb^$ zywVRrrhS+%qhe4R)Srugk~Zo8G%(UDo^*oJzOte-5+-r-p~ix1leC%m`qLB%(+Gaf7io)M?%d*x6EtGaTBb#p8_>?!){C>HuO~Qh=sR_tyvxpxrua~-OHAM zx#c*T-IHcAWW}=ik|)^4ud{^oKVLv`pEA1)%&mN3G_FdnXn(X%HI1+w(fuMR87UGZ{ubI*>g%5?O=O;UWEbHoYHoGY>eGEX@{qWd~t%lD;#S4EaaK-`UHy zYt{7E%VIy@%vJ2BxuIHgRJSg>@Ah=ajxd)FO%7$fbusaJR)<0)!s)>y!_9B^Zhplz zbS#)&KBi+bG?Rtgv2lTjVFUT<^_^^adaM4 zT71^bW`rb(a2rNJ)AC4kim&JmkQEcoPvdL!Q@N zZu{JNc`r6}@MHs%+>%P%x0^+G|fL%6;*i zK(KXvbw;U|z`PG4Fesvo#)c1aX`3U{g*j1350@uryl#Oz;||rh8~)z~4>z5mZm4B3 zYW{uZG~fox>Ul4xns96EF&$P`7gOw=A|7)hd;iqQb!agbhlSRjP!yg@EUD$~1pWTk ze}fEjQK=hH6+kcexG(lk)Es6}gJhMyKJxqeU@b1LmsWO4Z9?5UJU!4@smee_WA;Fh zW!g}xbhim7@%g@Oa!Jc3yRUM>(xwED{m83gP|%`-WqrC#Yjp@$yMbqnpBCZs+g#e&zB% zqeA$`W3%p)mU~agsJGN$0gRrmIJyiZuZ9|-FV}x@b^TB6Q>(#VC-i33Gwmc`Ko%k zo*6x4m;rlTPdg8*S6R*Q)df0R`0D}q%_lN-imX09wztQHvq*DOQ0RQiq4NIN*02>2MqaLSqhVhXVy)rKYXoZ^XhKJ||#dC0#T^iH%W6bsZnFS|;5f-9WekV|VRfaQLcm8Sgo&qnHZ$L)`U zWKwFX@urpIwqqvWR62>PEZh6q_ig!KWpRA}lq9qLn#DGK?Dvuq$o~{eVUTuK!aTqB zBNritmk#))KLdwZq$kCo!zifH`sv2a_N$8<%l$Nw?5Kg0wdA(Hn^l9M7qGV7^Tg2L z9OZ6*_0gI7tJHtQQ^eb^D7kuY+;AP%D}5jpa)IrIOVD%E!=px6pg24goWZVvu?dmP zoAuEg?W3`97$kwevv`X+S)y8~f>@87(Ika2HIRM;PX?2;Wb;zpU~sP*u8AI^KyuOq z*nPKJcnfC-ev>`wra|QU{`g9JraDNbm+mSvffW|g$(bQNc)u#vUmQx6iq0^N3y}~h z+~W$0< z(>i`Vn+QY4T4A(9TJqqd(7Pst^b5}+5}iw- z;wYL>AD*NSgLu89?+QOO@b}v+m)jqeax&opsxG<^7-Px zvkRPY+Ia6{?&hB3*(1VfO<@E;?L%Eg!xvQ=0ZhHnfmjt8QX5PGuRkh19VeN#tu&}r zJlTiZMEu_FG}FHN!f1v^@Vva7Ne|;4CfLY~5dusf6U2}*Wa9z^CntyM1>{pLJtcSZ zYVJ7q1A&@4k`A!=F9QsIytqTzyOa-}7k&U}jZ=-H$_#S+aSe;{*x4sKHC_zpN(!G^ zO`QtXh(4hmz@zfK;}PqW#VnQCA%~H6Fr9()vDnO^TLn|PS_SA?40!YcFk~>+_5zvyl>B8%=wRKl3*_`#lg_K00Q~Gx zQaA6dL;A{7MF=YnyB@hJ(@Hh_@#7E1NglCZ^MQ$~&jXwmhL>9;(wef`W2s)XBGffi zY@f$IilZ zkQgM?{2tgj$pD)_GFY`wG0OaKx15TG;%yx$A|3KfWuDk;D7|Ra;HvEC2;_3MK(z1S z3K|?A#V;SsR^B;|bT%?_z8hai2G$_&ocV(=4lETE99stTxct<|Sdihau5Fo&o}#FI zG2e%{8iFnDr?+H`ITk_*YAsV(c2Ad%tVnk@e-6-3WSuH7NOnNejHXr;0IBJP<-EHC zPm{X7?RjzB4e8J^jSr9A``H2R<1&1ldo;W^%OS*_pf#k>N0el&qZ`>)HDYON zYs-#ZO?riv+mj_w$1XJ4G)`Z^RDFc5L#8+DFSKl;UVr8YKH%w0LP?~e^Y{frW}bED z>jo0@ihedx)A*>H_k7i$;s&)v>=hdktXJ_sphJ42mhQwYm%tWg$nGcZ#1VF%%^uIP z`(}8s09~X}O=2+S2So#>Mxn;wEdJG6z0k^uH@E*z&CWW(zT>t>D-%oK=Vo)5Y)*t-<&U-v>v9L?7{UY4{A#=s#N zl*`oI-9pOLIFT>^|HMe0?%CBd%RR@fZ2ci|2W{Q8x;q8%Tw8OuceIK(5vU4Vqc0UD~J6V?{Ajm!M9y3P_;fxo1>WBLuf7h(8@3I&kCs=N|*%_F%%FM zV3>lG#Kc6(DEv=mgBctuI78^@O0d0QZTj^dXJ;+=I*K|@yF2(?R^L*0Wz$yiYu&FC z!&KHPjF|LIccSPG zuKcC@sa&p5ct3pY4?J*8aFLeEzKRjpcZW4#_2zJ5*fY|BUc?2>Eo4umI&N0eqlKd> z+R_`SG&3%h#%fsYI3_xoxQBN?v@JJ2X% z-#dNz>Bw^?w`7zh=*`MhnUWDsQBjecho{9F$VTaCReKh;9-#uBj>zqji53a!{x*jY z?t5#K;kQ=M*G#&Rbf?+9vQivB_~*CU>dJ=1wxHEB4tKWnW<0GhelD*4@j|&bxKC z5?{f*(x6YO+7_hDtB}j9li?6z6}9olfO#!lj@NRtXaPn99^EDO7cDH zaQs}4?xDS<%j}-m%O&)sn}pUu`F14U#xRLlG@;pPH8y0VHlODyNRcR1CfTONKz$n^ zD#_W_ct5iHdBVdCJ+xfZ^9fcK2Es7!OCe%Av}C|Ue*fDG@Vj~O>|msgM)jrvh;~aZahnF{8=ND`Am-*kcr`kjI z^!h5eHp4rUR77+y3dq?JtrdV8%j9le)hO6ED#Fl_NVZB zB^MG7F8p-q91V35p$T}6=<5eSBvZ<7V!jnEJKSL2$#2RyodZ0KUySmVN!%?y1;TBo zCKF`a(`=z$Ci?wZ^S(H^X^qBSrcXbnL}DVPfCMU(vrGF26C>x=fj0GqW*I+JxyzN} zB}_y1j#2^(fFQuQHwI$!xL2^`=W8|;D{$D^*&L0Z!3!xipKGKvWK9th*%H_zQh*$j zNk(GCtK`)5?c#IxZlWC1ID%sYXNNRkGr^=mIZW275KS+^e-ehX-b1LKnlnxEv);yt zrefnRPli<{jml&WLQy8YvoNj0By=t=xMQdr=4la8|h^sQ;Ga5dK(M z%xHNBO8zPUVh?pPLtyi5&$ii-895!Ha=l?>f}uL`srq84$NuaGHI$e4 zBvU2+uRQn6w^V+T>^SyeyKEa!Q9p=KJyz;Ym`c`bx{Piqh$e4B;z7+#;8 z7?hZZ#s68-&aRrtTMvUZqJVF!f{U0|TGQWNl3}8<&b~5U0Gu;gJv2RE|8ufiAc@`r8SBq`816?2?CkG+^o3p#SJEceuAV!(8THME1jRxXh6PGYS?w{SL z^s+JPiA8AGnPxzySyV;|KFNP8_AIIQQCizHUFftxz}g=>Pi}|S5owPZvs4E1?p)kL z3KX@{^?n;2q&4>i-vUL)%7H(Uu8zxmpt1x#6T-t07=$n}%ICucd4jg;@n8A}JESP4 z`#u>vkgm9BNT<+!j~4-{QRBq&ue}6(kDYFhbu+u-;Wyh_qLWFH}E~tabKn1ZLPheYPsnyT~cA*JpS(B%$S%HUG8(3PcMu?Ir zb5@S^Z3!8!Jq0St?=QL9!`&G)JNxB|_2qE|n+Kb2C&I=?as2|Qwqz6F9Wz5--BmC_svjO3^hapLS2iur*m+G*aLlVN$gFE7z6*9szV>8< zPT9&?YprnlF-IuNXi@SFi3@oJ$$%j=2ojKBRM4T_{EGUK1D7=-rAT~tDIpD~=u<+r zs>{M}htH10A6CM%Ph#AfQ#+PVYQzje8bG+(YqCrF>9gOuwePX4V|PZr0~9nR*_O2? zf{SQKEGXi}F z%eGKFOo;(3TItm#tpIEAb;w~^b+viIG-V;8a(1ME>8!ch1U%9QX^-j*s1v|0vZlHv z%2!<5^F?7R`^YCM!TFT>xt>pwSU*X~>O z8ompfv%-?BHJmO}A~UR1E+0XQu_bZaZ=C!6Ftre7?TDdrCnFzS0bCY zItTe3S@&O!owqF$tUrjOc*fnoK+}kbo9Z(=+(|jVO#R+hyztXRAhnDw3W*GSt>UxX zp4#dw)^NsSJqD`gPVd_&2lxqVZOGK~CsY%f`#LV1)z;Tz{(6Ke4>WiuZCPUvdN>+a z1Ep8zn78o<^)P(lO=v@r9;AB0^GZC+Far}@M3^r5i2FJ@H&^t)5AM173XHdiPI;R4olRWnV?PX-3X@UpUqr6bYa zzxv|6>(e*9X9A2p!EcYoB0XFy)6(VQDGfO(Bmz4cn?6v3;Jvl*4k*prX0&wL`29*A z*;r!7F8`=2NHsH-9@sxBpy)?RnN;@vRL0=^&g&1b&oH0vFTMv-834uMSPUl4YthmM zN5|FHxIJxB{h`g5viQE_%dnQX*U%Vtkqa?vak{5mE^J%Sv9k8{^`*bOKtnU@)=0n9 zxJ_ahW8HRk3Qw5&ctbC$9dQ(2fsME2e8^j(F)k{JmV3?)&7{GuEJYbe(rUzaP>H3L zR;D|2?h|m`O9$N2bFjrbYG*bvu4csL86ay4U1A8#j~Y_V)ZrrFnOAA1eNa_jpT(l{ z$vZszc0Tyr{yGF#tE4)iqK3Mnu~-Mq;B10h8pw9vhS8Ptm=H%*DMU5;5s^M6Oa)Hv zOMFdt-o%^zkGgQ*E^4&DU8hS64+}g7Y`AsP`Q0#2G|xpdJTFFmk$<(xrPJ7t+KP$K z=A8u$6reA!8^uo88+Cem@a|6=phesDV-0MXIp4Tozp9~7hK1BUluddpe}58d*RD4| zXEK_PMa%Eebdul2^I*jTpuRC?X1=ZD&MydmBecTj;E0CE;O=4GQM^l&SOQz3?f2Q) zZbsiW$Wk-mV;p#?J(gEhsS)!ziKTtAOkg-{L&)P1Sh(kUD@P!g4_A4tp!o1N9l}nY z1g#8K9Ufc^1(tiB6^>cwvz3c=2=hZtwWWay=K)UIg zU_+@Y{kOG(=%9;#{kJ*9D1VUq{NJ`s@PB`m1O^-A#QR?hv5uxNgxmu9Pg}wl@5TP# zt(yJ+;{&$QMkQqr5SP3O|2wjMoK(BFlThJfP!X!WKU}dq~&Y)&4B~`xio@5Fn6iS4*C%Ty~Qv z@AaFZbh85zz8MD->)0=bYc|T9juF-lp7*6}qK|H&h{}ZO90FE%uJ)@JpM8Y2ITTw> z>QiQeI`lQcIi0@kMaup95@;_Kky`Xe*N0EJ9XrG(!*}rit+w#2s;M5~9 zHY|X8qYXMOpuP@<+Hehq^MGb!G^QhqMC&aJCb}bGIp#!6+@ZD58e{*rKFbed@~1!f zrz^wre4CkBXmfFX3~Lp9)D-)Z!=}}$OT$#~@KLguGV5`2k_{&jgZO<8#zp|>NK=(MTz-`Xx~X|s_}WJgA7pPp4cP_ty0 z6}&*e8$+|BKPfF5($EhS_Wsz&3`fVO`riGq@NRlVw8s4iFrpN!CHQO2QFZ48cVz(v z;5YgdQ2g-ieSdn>Sb6VRf9u{tqcrr_zSJ%eSn=<9ToCq#fvmp6q&m5_h$IeV?#SLY z&&IUemw|PvY1eOFb}j)}`#Zd=yB&`n!%#UM4*aASyrP5ij8K;-j%IJe)3qGN)c3J& zMKj%TNxB-%!uN8q)Rjd(F(iB9{_d&5c)86xExP{RT5TK4DQ{dcUvAqD5lAd1Q%s)Q zHidzy^!7?Vf6cVIA>k@W(KE>M-rnQ_G)hHW(`UZ?Y^sxaJNEV;QM##9eYkO_LZg{K zAbW~m-cA*iq}Tr3W867P_USaDRutqVo<`8*(|Hl0Aj#j+z=VY;$XH2%S2Ij?|HgoL zucwwzp^-r{VAUkRoj6s+S-#omhODOe?1Tgab{*~?@OeD-WN@d2&NubF*iUVh%!@(_*KF3z+|SaRh;OsuY^?w9cBML}Zr zY)>rJfuCyJzOcnt52y`Rzr%^R9^UD-LxF^yNw*U-m#(~1>zeQUXX}sw)zM(XWj23d z1FRw2ZuP8%g@(WKb!$1#Q@FamuWhN2BB-zQd^%D=c?tH{a|N&+l1VBjrx3zYr%{V9U-wn%BsC5PSJw9v0?1_$vZDFBF+3UY>C^eaPV=Yj7X zZzJFxcG0MY=mSvwn0@y#-*q#R4#arv8@Xy;k$ei zgCOM>0KyWP65N%b;&PRLU@j==!sp8MkJWNp$itsQMC*i_X!5eS^o@dg(>)TNG%e9z zhlWl)&+rf<)BD7HVn$BLZHsFliGwMQecDS!hyW^o(s=?mBHr){)X3F+lqmt7h-w-bU1P( z;~XqcYSUV@-o0OQT0^Ne|3kxPuLRffkf6S8Wg z5_~6egGE1agW);!)qA%0R>NfL#k%|(?Pf1+F~=enVukz~ty~8sJc~uYfbz~rwl{#S zusiT64)^XnG}{|pA?a%=R(a1Fs=$3*r#t1QB#85=kJ%Q)v+;g_=cFXU{d4zl4*i>3 z);ROQMyp`t)ZyjcveM5sb%KV@fX7in+EYLFRJQEytkE03Fy9or z9`nHN+)SvKV|8=NuU5f+(6d|XyMWbu@pA$GcZ<)CRlSfd0Qc!ExeQ+@Em$>V!h>nn z3!?s8T!SAwVBX@2eFb-G1r#OM^4D(8exUcRsj(ta3heQGl>o03M?{Od(7^6=wedD3 z52wQxnG3aeaEM0%Bfarr_I&T3QL&LNwyOxOVEHtJUaVXps$t!CtHV`)t6`r$_D^wm z2I(Uaycgzm9fg$Y{(%pJOh2>ajOWq}`@eJoD}c~>3gBiZ0iwsN3b&=r#Y0v;@i5T* z&)TL~P7yGbtP|sG+(6OL&){y2(8my>PdRQ`9-=n^;jH!h)0@Sb-s<-46fC=zl1_GJ zsSu)Ca^m-6$?hQuYnTGrW$>*~;ep@u@pQ_MRq;35E7CX2dZNYZK-DQ5=@>&lQL1Q` z!?WMLZn6Fr_z)HUU17}jAtMh&(zy7GJM7x)7aX8#CZOn6RxhEpB880er!eChpF(Fs zSryLo3m-LiX^@V^&e~XIX%+ME*cep6z!A?)M)<2`pY@l&wO2RuUQL-$jLc)(b8RL< zET2QIo5y0t9ehF}>pu!|qYim)`^*Dh?SmS9ca(N!UI(9Z;K`UOf1D>#6A}`Jh(~n? zKG2b5X(Nc9v)+$`ljAi<#!xVH*PN77>K><2%*UVcpjv04;HF6@f>e?ITtzWrh&gQ5 z+#8uMb}`BAd7~kXYNb?a@*<1kvIW?RfS}Mx78P-G)d;6=t$_7a4@erMHfoVXTYB)K zPASwg4Vlo@L=S40*S7<#u0SqrG)RmFlOHF5%x|E(oD)Qt=2?@-8`OV-mVICy9 zbi$qF3(mp3Nqb4~f1bC86n>R*=PouiO>omX)lrT^Yl#g|m0!Y#ecZVWRd&-{=2tRM zQ&3MyL%F_dPJDk~($GtMhp?C;o-9`F{;|j{+FoY&v9;wtg~9cFk*N?i8t}>HP0^J) zN@JHgv0_B}7k;qqywy>4);?MMwd~6U&mMaa`5Podi6_*9d3|L&t2wh#yw=5rlJ|`KkGQnzgdJ-CG26 z$!}4VCxlmR7%W9AQ9*u>bm?s^@hV3PMZ4R2jq3PpQ_@p|F|I#e2poEbrQiaWEji7U z1+N~QKvtn~Dvi74U@piH+_Mpa4ydRR2>}{&pA;<1Iu%#EWg7f(=8i}o7{WA>j(_O- zrf=}GeGxfGjS>b|h^0njEZP^_JHjZ3<)($n!a#yq@h8eYWTarnO^W*SyVaSIy{AVi_b?+&QcKe26$MkchwVKNf5&aV?((89ZyzcOfCZF7Ub zw-A4rKlABT>ri)7K%@`bMAFzxSCjZm_Pf-##ry;Y5zmYX5 zt=}k(XX#aA!Fv>1J)c&*uu(1eH?Ov_mag3y9U*&lsB#_Nks@mobJ8#}Jci;k^> zU;zO^NOfz7<3+ECgzDv)iH7QCm>~Z4yO2jElUYfF>A2srcl1TjE+uUCo9}FylW7>R zcJoe{a-vI~IZC5UT@bOX37TA3;?~icv9t_wl@P5K6!$GG)tM{tRUs%BMTE##{qLmB za>YP5h|dRwdUkw&Tb7;E%lcOA|XYY_kPV71fN#7i>Co-?(E5VzYob|`lc+f zEynV}3zf#Wxm6D0)N?%gllvOt_mK==Q*Md&3|sCcA*u<}dBU3almHZ1c?i z^Y4R70@}@_3E4{2yE0*V?M5Ui3CU*{7wk74e{p>XJ%LC#1-CR#V0IVRZG&w9`UG@N zk@^yud*|W9fF|DlESno=xzSyrq$CDpm>cb`U(Xda`FYDc;N>YwQ-Q)(vtdUvK-C`v_kXA%Y9GPrcnR z@afzv;T(F@cX#SUe3{gcYH&}@M?CSqM{*@g2Ht!yXd3JbNgChd_8H085Q;a)cFlJh zn@IJ{rSk$Ki}&xug(d&$Ok<+s2OsYP|LHnY$fwa|>Oqx=dq+-g`CMZP=O(u%&BDXc z)h&olULqz?(UxmDMVm1Ij9bpkZ4$ppJK=WN@|cLMMtj*cIFzM_1o9~HjAm?BuRFAU z%pH9$6{^OnZXEXOutdc+E%hT|;I};HBc?X{M90Pb^I+UzT za_J1mqR#O1h`_^X2nCRB_r51EbeaS?Nl`xm?|*1p!}s1{BW!tPkWH?uJbNQoVNvAg zv-Y%J;MDETGOYg>2180M?11-!S(-%d2DfPa1ljgD`G6dn$;LGARt3Th>LVnVc-e~1vBTin(4X{y9xL&$cc@=7 z>vdlZeBx}TiL-R|r{XaJ*RJIdVNV#_8kgg}Kk;n4+rguJ?PTkT3leUrUpTCxjE)s4 zA=={RJjh)cN}0W%sa2ac(Eok;=p_W4?+$}FVAfbN!P1mWEPnSF0pouPEp&~Z1&=3y zv-sM(_BlkK)`40_RAVhGyc`Ta?j>Mz+*Ny%H8qk{VbQsfp4NF?(KyknAhJ@3)1EWS` z#Lj{dDAL}qI8Psjl9MZ(BPb$cMR03GDa{AQ7TVBp`x?_>!4Jf3_gJ4l;3X3B{oV9^ zw2DZ2Odxp&L>lF+m`LH)r)hHUf6U&CC$M7SoLr@j!kJ6hJNDkckF2zfK`*M3NmF_;s5 zc$fu16x4W*oSt1jXLxm0A*BYA1-rUyrsPpGY^1ICF*8%kc-d6r;23=4&vQONH&C74 z&ZXdcQKhFP16r2F zDV*9Mscb*^F2S#F9XE6Qck9nY?aX0yx!mZvgoAz@bBIM0V2;FGUDJ9J%MA9N)J`eJ zQNBWIw-q_|0qi#T0Ya?(Xgp^;w!3((T6dnhd2?eA6N);1!wb9Lti$2y^<5o~Ep`Ix z7U9AbhuPw}1ExA_@0%t&BV8T)4}QnRm`4_w%J7|X;Efp5l9DT5Q^EdHH2&KS!V6Pz z1$oNN12t8ZZ&H1d2JtU_G|hfsR)!LM2p!o?F83hyuTbQ z+5RBAgfKR==&dc3oXRu%+WHStu=PLH)w2@`2V>@@nI%jT@G6}uy+NFCbeAJX=3-Tx znT&>t>6|2_KAy(*UM2P2pix#<(;%%m)YcwT%DujJoqkIFRKmVnfvzwz(iO=m^~_H)h|Seb_c6LihhN>mgMv9d9<=@KvBG{N_t9@-Dq3r|7Yz|=koC`?zPr0t z_sY|YYw*jPyKGp|eFWu&yWv|3|HR?iK+oplb?STXF`^qJY$o&Zv~Bt6FKaySBJbvk z8pFNa?$wtm{`9hX3Nmxu``~2$7B+n)S5-yWy$-FYQ zGb;vpPU}yrLbj>s(m`GI?w!#V){MkBjnQd?wXv~m<;pB#@;lhC*v;V!0LU`8^t4p!;ZeCq(_V5(@kc;`#0J^@V|&(2Z|~=WZ{K)!jw(UTr3nnS&SlDD9_c(? z3r?!A5YmtJc0#B1cGrGL@rA+rO@FlBqAHzzOQS_x?8V=^E1y2pHZ}Ei*X3YPzVcn` z5a5{OntoGjuvuc+@H(k-y9kc$d25don*H2J6==`UKG;t?F@*Ji&-D;I83sK+!&U~0TJv~KwB-+jGP z$Ky)eCh(3MR6HI{=Fd23JkPTsy6MO#V<@7W6>S7~q!)Aau5R`SL-%VMS3RtWtWd@9##qeq=uj4hnPs zawTwBsY;!m{Yrs4x*uE{NCniwq2VCJD!v5ydw;E!PTL_dCUsczyVS zbad}%0I9{=*QZM%-@&chbt$;YN~M?P9z45{|L3!F|6fOhwO+|k^ca)lcT((3Mv0IV zS@0Q+Oy_xHvo(6A8S@EKfa5*V4m41wIAP)xYAn%O#;BA*yzydYafW5Pr9(l$pU*wB_Yu#})vYh2wisiGTT;)siJAAun_xtO)d;Qz=5*ug2FGDV1PuxBy- zZe!Tl`HMQ|jAL`#OseMZ6(+3_g=}h45|@Mnfp}7PfaB8f{#Uc3;C&afgx~$iVUGGT z?JSvKQG0uZlwG;)3`a0F2?fKw}mEvCZ?o3dyD(d3nl$cZhzV) z6>rH)hq7Sl6cM4pB0LRFK;jLRZi7bV>U9E{27j^Ux6Wgp{%t$QnXl04g(ioZL-9w+ z>?o%6d$Tfua}-2j=@rFCGOsf%YP@JXeJ;yMThp{`l{qQR<$am9~GhXfa9 zAq$x@q9<<~S@+~?2?L%$sjGQ#X~(o*QhAKbKcCWxg}o6JsFh%cF5}wkO*&Rlfa1g6 zGCM3l#n=~1G1pIHLpmd2L;D8ubP@lQPXe%) z65@dJ34=W7G7YEG3>N@BH~iK;PvqGy;)&qvQ24sk;i_D=ss+XVwa)li?Ysdk5g`x4 zcCTtN(Vgry*8E#jgga~mXjZI($O^C?(^h0~CM^qpWh(|2XAk=+Ll(7ue?A8m{%ik} zIz0MqwD|o)SE%D>JsIsbSWOKLYW-*TFeYUdMT=FwaVZv=#{bq`NQ!#HBOgzQTHN1x zb`K69Tk!Hd+I>{|rfc*h8IIRP8&4m-D~{rRH1uirwTe52r?9KGDB)0st&j8HQN1_# zp-BO2-JOGDE!RDg8F@6i#yY$Vt@ShRoagzvL~u)5yEt5)qmXUw-&Ru* zxNVN#fb&=7#HQVPCJa0LmxYGAJyw~;B5KTrX6x5uIWl>}ogGDeqsreUJh&x8nOaUd~9bN#o_j&o7ehB{oR?!xlNS zoGx~aOXh5JdPt<1^DF#s1ZiP@g@3jy|8`aT7u%;$Hm0b7Zmjzc(Xh+-@HN63RyDLp z-#v&^?Gt_1x4{BqxyTpL7{~=vMn-0FdHG(ut3DfUvbELN{6y4V!>im_#TW*kH*#J%;orX$VX5EbC=;~7pq8PN@!wiw?U%1x&B2q(#QAjHKFg@-F`@fjr z+`9@`3ZvnTR(%gU%$)?R$({HJcIF2WiWFM(91^6>)W7rJ2C44NXNM==VR!BD-RvR2 zDBCqZnZbgJR4T22RX!ktn(R)mc>7ZGnb!MPiPNS<=w1fZDAe0a;9Wy zsAfuS0Ul+HP)M%B%8``UiGFB&85*;@qW5cxj>J#%DJRYJ_oI^2*=&yEdI zDIOtHWinKKD23=Ha`zbTbtwWcy?h+g@QWWlk^#Ry633Rqm`_F zGZbqkXU9efoEy=JKp&Rc;J(tKWNTwnQeNIWJ&l8k8X1F@FSn+ zUFf##Sl6-CR8`DB+nx>KyInO=6h>-FNJy+O)>U`){LvF(E&acskju6%?MxHg1o!|( z_$GQ|t#FFp7FSTPSmY5D_w&DC5&yVyA?=2`ZR)&&^8X(oL|hBu#HRj5?c0BFhyVHc z2K|4;j{NWQ{@;O9_KJT)U&ikt_}8ztIRwOgPmA^Z9ME*R2>zcwt!?1N;|ECA|Dazk z+a&p~=3tWP=`YXQt`6_qtvHjfFP{#27u)&5PEWmwh)-w)?^6SKJAK^T+ zm1AbM9FJ_0m&vOmM5PAfKpu#ITb;xj>guz1>xlosYc%D5oU(Vj^aR(rOUGa!RgaEF z?j-AV_4mV8&g0P1qH0zkTU>4b2oFD=v|)ZaZ)@dub#;C(GH=tvQQc;|s-_soL)tW>B{Ev(Knufzz-eQ&6-w@x|2nJgdIEI z0ujyzsutUy%C3@d3IYRrF7PYor(NbN>O_6l&e!t4%X4PEFIfVNuWemjnJmY`C5nSy z4Zn-hT_r(Faeys{Hi9)EvIjq98tvAFGY~M(%=*FUAFhfc2!v-*$Cxvo<$HQ) z*C{5Ihx*AoX<3df#Y53(!3F7E&NDvLMKx~F4j6AO3RZ&Am`M7K`^~G#=`h4zMIPe+ z{!3#sJ-T*th5I(dFghWvp&IBhNfC~N1K5Q$1R<)V<|sLciTz5eX0hy&I!| zZ;-Rx2o=AoJ_vajP+fh&?YbPUYh*|02UuDM z`9DG9?|)!=%BXe<<$!jw+AUj1?!cOUoC&6DXf7*7i}o7YZTU1${3t$@)U>7Q?NY39 zU@NR>Yz{{o2KQwb73+Va1SiOH+ZY_8L`JWiU%b27MDlVZ5{!nN+Zlwe#bRJK-yXt? zNl5dJoPQxdRf}xlgKF|f4|X8UkF6W|k7*}gnq4@H4W3|Cz=9H4-iau6z-rOh0@T=$ zh%5o;ETN1)@i@3oCI^c3&;d@24fwz=;o;C7=)qxZfKwg!To{;dLnuEPC@JD>W4{eWzErN*+(%$;suVz9))N@?_{&MA zM$~lWW2bEHB1HgzMc9(i>+lF1MUEAu)$#!;ir|kvYcAubtZ!=&!7p{$rz<;-pP)f* zy!~jC-=SZBLZ1n(v_V*UvGRCl!Oq*37?@wkTU&t6#$i3 zxr3JLp%lxj`%g2%5)yav>F47E{t9ARsWCd%h%u16SSDa;nm0g|~9~fzRA9+lIWsSNyuWVX@J4a*Qot( znIoY1C>Z-ptq+Pg%)n5o5ao5Ph*6Fv@xcPE_L z28WLkO39?*%@jUUDzwIPr8KS|iYYdmCl>L=rh-qYl_`Kl1AppM@y?X=RlcR4D8+dI zzV4`U{e(_jwV*BWe5Qbu zQJ2Z|f7>cEb&t4YKJwLQC}D6EoU>4lak=A@eq3E2!r#e>DWH{A>N9wD(dJGu1hZX~`r0VCZ zJoo#CYLQ~v@4^NIX{8+FeTf@oOkzo0Rqmr!-2~n(9z>L*7x2!nGhnsTxxSyUJItNJ zgJ(0d{ZI;(;iTU@YWiMzyO`xyFeB`|D!9PUaA4Y;$=tqUytE3R!{}fl0SHurroEM- zEq;Gf%`?Q4Krsp;wAoO0st&%DHNv7Wgh}CSHJ!@s8NS~#919-0MhXy0E$te>o}Qr~ zrc2(>L_|+0*!9i)K>Q)D(O3SCA)pV#st#^1lr?q-G55F6MH>OBL^G+JV8RfPNI_h=va%; zm8Z50rMC}Eo7jwx(0g9muK+}VVAhy(wPu{k^!F$vbw189-oC8bX@Kmr(Co_)-cU7!_TSum&bLEnJW^)xo9%H&(uLAfcm94S;An2Fyigq#UveIb$ z)Q!~f35ZkmknJ6g{Y47EX1~m7QRz<*ur>h_Gc%(CSdM2J*YHA0Xs}OQURV2EK8-u= zyLkT$1O5E*V7hfL9YVbShEUf&tC?2SmO`oy6X|8vbiCWB6KG(M*hyl&`BO%0Z5d&b z%1~6nMUcGX-c#IHP^bA2TCeX~ZeSI}=3eAF7l}SPWY3j`z+I)o4U_@1MVJFNQ(t#weCzC28Ow(3!nq z-GUkf@d}1eVt^bzp5{G61?i}$7V6TyG6}RugL0t2zBqMq6u-?Zhqq)P)l)FYsRq$U zueut}0ENno+Y$mGKov*iEUQrwxYY$o&#~~5qO#~7UIe5KVB5%5GfecAEz`YQca45v z;^Zy+;>`~I`Z~5^X8;>%BD(G{c@nGWi&XSkZLvy3#=Fb)2oc#t5!8C^%>cZ{L;Ac_ zIdzp;^~ezRfR+%v{YE0Y_E3(m#h%+URQ`%qN77#~N+wmrxOH6aF+~+Vefs2WV?U;X zgkfnWd(kJt<;v%TfluPxMTlgp<;EF*wklfVnm@IAP*OKoIIY>m;`FVmUxd?DXfgoR zf|tVR7a@O;s8o<>O%R|Kz^$xhEMZ=X#C^ZxO)VT1<=+0{0J2dr)Ryq_Dj(9cVFcl` zQ0?SEVwR`(A54_Hx_)H)8=gkYfTE_Uk1qD5N>ys`4_sX zS*^@SZ+N3}y0>;7(6}<(xvS&Nv+q5T>-o-$|9ZX#5E`Jc;tD&Lh+4yBiVXj9Y*!3$ z^#8=1*&8xaYL={ZRlKmVbNcl0Z{{!?Ue#4MtWGJYeN!p;`K8w8j7a#cGljmi%=j#i z;1Z3Re;-ubNNE*_ALq%{$vy7vt_jZeb^T)9zI5bqu&}VBq59df8tSR(y4O0=n?nuX zE*epAN(hu9i0|%hcVU6!(cKfuE;^SN&|h>E9H-bdiCD%aZI5K5g|~DRwQG*bYo%`X zk>_Ek^1r>slJZ~2ek>&seeRKWp2zbk)gL>D$rX!#;$rQV1l~&7)Qzz(@TwWCf?)Zh zey}*fR-86y6MNIXTW=z+)_e=8%qRSGloY#$oNlbFPdNdEinqE+7+ingC-e^7PI%8u zLR9Ub{KTgbcm9?aYS=JOfC(b99o0^*%8bD?ULQq_E~e}>u>YJnY`ZF z1H5K(Bz-UX$vhJKC>T-plRfFuH5xk1}hdswqiGF?eV;a%!&_J6K3b zrjilfLJ_EEV} zVSoHaACA!9lZVsiO?zMWht`|yAPc=a@Upijt1FD|&!6BwF!5N(F!8a$x9dDZMdKGS zOKGDH+(IxTAj2v)fxDaPx|>lS@Wg}Hz;TGB)%Y0c%&PXk!OhL)BSuZ+EH1dT$B8hb z!TCyDMm^n0W`kvBNW4G9Cvrs3F^+>aa6dA#I{R6`7lPZ@$F{r3&IF?@6ni@^pKx|1kq@@^wjTSR}_nUAh zq$0_RD?vgkESp_xl(wTj{BS3YsHQRD9tD?f$mAsFBBWLj%At{Q zLpyP~c-B;BGG{Zu)JdFP5hfhJxaH~8$c;Fz&~KSYd;rGFAQ{Uy+^;Uo%&v@rZUXH2 zRyp6pE_%i{TK>gFgwrzc&}mcos}>fP``ax|Ld!VeakSXLx_1e6@9bG`6h^=!PamMY z*N9PbgkS^@xfiCUt~jni~de&tb?f5Oy; zK{x=`X`boYGSP!h8FT)C&8oa+zDR9F4l-Y4X$p@;LBN(c*eRfck|g>?`yg;0qkc(! zuJ3*tBI9gKX9BMb*8mrH^PcDeRz_itQcgkjO3Gy}ETd`heBaszYk*ClcOcwt7b&D! z(D-BR&{y^uzb#(2gf*|M+VhFscWPqbN7S*h=`?dZr4x=v$ z*V5We4%j3l_Gmwt1;o(k=hrN9gJ#a!DevpS4dtEG*3ohIK#pL5JW)uDlneMO0e#*T z$$ibR14gM~l;;{2?ps7AjR|)TaZBDiRs3ZXYW%S)h%>&AG4+h}%8*HY&h@I?JQ7MA zEs!^f&Zh1xiF}Pmq>+F4Vx)P}RbG?B{PELxHhfnEaeNrEHO*t|MB6JxV)K!gv1%^4 z+P>jXSOFCg=Y1qvmSRU8W@*b_5q8z(7OZ>Hskb@v(7%|Q#kcaBS{&_%Djp|7_V5>O zKjiuGZxENpk$3lBS|3E(U*PK`4w_(CvhrO=?`w)3-QG%JpyXagO# z11zAm6$Cgfp!zZGG!-$TfBe;XHs#Nl;(*O~450m`{~=4WXa8LmkeEcL+0$wf7kw6t zb4AAX2La!=wZ^UzuqXi01SFdIi)Hd#N&4$WJwmF;;aSF{{1E{6!$6pTc=0GT#{ACt z!yH&%oiON)PNO<;0Msp}r@EC~id+N5n5)%apBZ7QdERLNi>*mhozsV`l9bXxNdyjB zuttur3IJtQg6)gS(rI3<=VE}S>aRpiz-dyaW-$I9O35{s?ra#u-@fDULRsAQS7N*D zWU{ixOxuYPNYCH48s@FF`metHIRgJo{vl@n7`g6BEbBb>r+-W0e;nZI zxgF_e?+{*A>&rs5qbsl6YJDLS)r%FgP^D=D^9MGJBQ|wA1V6Q@DStMMp>IJL&EQ85 zXl?x(P4m$W6%6=nHxhj4=gbqBiax?{wE%x zwu&VzQ0O6tT72_S6Hw9n;h@OPPB#*;XwrW4L#CIVO58UI1$4IvxkdYfPgA;$AWtEa96lyJeO&MAu`X&zYRA_T#Lz0ds_$CtCP{Phhl&^}vn5xh|Y5?NHr z1t*)+yR>57OeK-kBYnR&vuYp7nE_@AU`EHaNsg~`VasfM_AlbH6~o#DH1Y6e1^C?Q zuM3@>yYG_qN*3#7z*{iNl=Cv<2nbL~fn;1F^@08Z$v$$QG4A9y9k^_+z{zLxehh%B z5yREkQ6V0r>u&#HFHpLGKcqSJKnp1$E~~q}bjFG3bU1&4g!*$q8nk{{puiP}mRm;~ z&34NjtkJX?0lQbQs04aVhT+}`YoqJltP`2GGZLRO?T^!LX#yhtG)wR@5}a=d{a+ex zno8*-OsFvAQ64yN4Zj$gLbb-a_o`b*{p)FnOJ700W>$x?qKU58iL>`s71SUd8aq(E zH7Gl1GTGUP>#{s&lnK0(a*HwK1jE>gAADKlSIx!m9;qpsH4{0qEm06bF}mJGU2}wG ze_%zqLuxvsg`7_6mDag;OKzClb{aJnBU51Q74oi!C_(Eq8vXA8p*lbWU)L{ek~qEP&~(wGe?egH#Ji1C+0S!0yMdc;B~epwSCK z=qF6rC>3r-4*#QfN4*u1_xZ+{sp;*X`AO_Q)iX?Mfp8|cm3cX@S@stQ-RSkwQSbY{ zVSP16Wj2_%2@oy{-oUD>pT*sy!1e`Yjf_cC$O2ir0^m{A(X_VRW-=G!VWzbu&)HL& zjxoQmy?qSbu_j;J((RM4@|y-k?x-s97UO%45p5`9SQX*(W`xG|B(6Ig5dq#ux|o0* zU9H|?@`KBF0j+rNS1OUjNGiVxR^MlaKaUXb7hZKd=a+_?Nj|=6(-q511qI9FJ=f;z zZjs*HZUTlfzI4@D+X<*PN9Zy!8&WN>1_cm@S?>vj{*~L>aFCz#GQxs1DSfyJ8^bE! zUVt%SX{44>VW2;NGwmlPBKZb#k<}WRE%mp2?tM;y(#B;yF5K63W*lxhhCCOg`R|7U<6_2QM5W_s?K zO``WIN@47lwWPlN=4A@~VAv_-PS{07pA*hpTE*!1KevD^zE4M0mt%*4!B?fwcP+ft zx_i-Rf{{;R&?sXGDIhksJgy?n`9EJxqf?|5P$c_blX|JDdt711EP`_3|2=-rmqB3r zp9bievIr);F6cG?r;(*r9iaBV*R>9+{-3-5*L?h0?*HGP%E;(UhKE_uM@#>EP;vom zDuYHRb{2?BHTIpwU1xb_{huR#LFYTK-#7CDtgTuN;l^7&ll01=>vzq*#3a~a7Utkm zK#A;}qu%lN$1?RdL@Kd`K3YsGMKBS)Jm|Ws>fD{yhrH7uRd`J=8}f7@z7O%$iy0wQ zA*A2*$B)#Jxn;de|2-=I6J;v)4*PL~+A(GCmFZoBHEe{jv5Q&k@{IG3!SlJmGiNQH zH_tpm5518+q96|mO&7z9dcs)>>EXuB7Z?g$is!?Z&en}U=-1;<`CwG$UC8VSq}}|A zMTDlT)q9NzDPBi=)|P#&<%HPA;(!&Y)nV8u`_eo;vkpp`f%jxRR9WFz#eYX6kynh+ z%QH4b$h%84AOD!3s;hT(B={hh;`|7qPnMiR=!qh9!bwF2v1cks0V2v!%@TYWoCoY* z;QGuSRRNoYfoylrT7_i?sxTF#q)YE{m$!_pahagtn_}E*mRSz_X|(KBcY*-Rb8vj% zDJm}~5BrZxtO_XY*984$&P0XjRFc-!$i!48uYdANjyKvxZcV-Ri$|LY&NwNatgCA( zpFgEyQ2USDyC|BI4d1;Xj}fHH$xLIHrD(k6Tb+J7t=6Q%$jh5PMOw0FaccxX!!rzi z;a9^ZPz~Vr7;yuSKI4^z`_^s)Y(S7y^V79gi-W-wF5vZP^>QxjywmMy+K;sg9=OqO z#xXdKAo{NG>eO1ja`3N!-Z_YCG*wJz)MYjQ{Og+2BB;4qD^r&LM*=dCqGvJf!8nL( zY9!gc9BqFSPXqsZ=I3ENP5i-$du;ith~$)CGI2F1gQD}~6rb453ym-W@Nv7|trj{N zG~TH3x|jybj}tc|nTdse#FVEn8x`cR0>ST}bV~7m+-ISKTz3J+3F0;6xqC~rIcEEb z*3CZNIKsk-#pnKsVWtBdw&!*(j3Zd923Hs)6Jd3Hk?A1G6vl7^$dB)Ivb_C$>|$nG z>eu&;ko?x7&=^c}*F83?Do~JS$M7E&q6l+=1ETqza9N$BXu`daJgM9+W%?>|?nyj} zC?i$Eg-<-UderR>PbS6_kaIYrZubk=H#KZvSy3lCF*h=R!(vqQai0>vxzLUha5*M% zeK78}JBSU?tTJ3<-Q$h{;Sn(GZNPSIMgDQfO8K2YYyQX}@K8A?6*7b-FL`@Cdj#M_pI7n90ggMtTjenp% z_?fmBH1s?n{W;d)kw;xqToEIZ6m^m^Smu%%E)}7=XPpp$?uU zO)9k7rvF0%jj~L6K-8yXIX_<*AkL3B>?(haGAchtYs^lRVCS6Ynl{?& zqGx}5mC-hQs!2%otZtzf0B=orKg z$dfu025D#vxy#KjUOkcv)9pL8v<7Anzt)y;^&nIRP>;z`&@hX%d~$Ia^xmd_1?oxP z)|wL)O4rxb_1DtFFroDgY7$qwG`{APl*i|*R<867UCyZi7!8_Zi-iQ011Uv$u^8J@ z6?q)i*yI`|j#&cTWVTL<*Ojn2js@^6=Af7v$+>P~J>fJqE&QJ|11?fnV!`)%ql8vnlUI}Xb6FS8wJLKW0H!g3-b`k5Zc%$;YVpfxCie>ujPdkX z)&2?3)jXd|9&bupwr@N%H*DME!n`?xwp7N_y1LHv^=`qb-+iI>rcP;4QBdypKV`p1 z2a$))>(4;a=eW^KH$i=&62=NM`7U0Mv*nRdY2fiC4c(L8L8j4B6spX~c%QO?RKTw< z_~Ti|gPQ;{2oQ%7&-pCbQ7;SAQ_^CnL!%0{%U~q6eaRetWjec_m60}qH@tzg*y;=9e+@G zVi0&L=lixWKeuDVy6*Eqj=_0)NyWf4_KS(H^IN$pUK$CdT_o%_e+)<_JOb{Ie9VmD zOo6*4LNgPSI`8X9%vU!qtvMre`;ed@Qfbqe$;HX8(Ic(YZ~v$+tC!3q0 z)$o2RYlhEH#SJs|5ibly{viXpd3bmLc(nyotgW_>C3#epwZGf-ppZSD%m{iv*u0)) z<&~yo)}xvg7GU$b5hO@Q7twS?P9J;AmfN)0O@BnhaIp;TBquzmolN1v611ofla_wx z3blx)$?WdekT#m6!|=UBKmtF7mVc>2Ky=dGlrtO z?TK55XipL8=76+Ba8N{-C#-4yJ#M)fH~A*j!UN+op{TpvLrE1C?4eTY3V*J@L0{Yr zRQu#$t46YgkttGn-YPHh1&NPVPd7S&hBT6`=k2ZT0)>#lLb;`S-?ky=KRuh$U1P{Z z&~b-elEde^e|z}KSQrVC;nAi4I*t1XOYtQiuP78_@3gcoSP}h;?LN~7m+Q3GRacW6 zW7T+ivjz?!kChw(&ORg`B&2QA?P^z7tGlw2fKmA=+wDG&2(xQ5+nixERqWHYXYz2h z*Od>z6ajvZJ3s|CJf-;pi-pJoiOBoo7eG~F;${7>U;Qq!o01CXb(RwrkIM~}|61R@ z^JuX?eLVcubqfI8JIHK8of>>uMgs21yLdwgV2%qBchjZ1sjyY5ec^TvY69`P7^wA! zAgO-I`65*_G^2nhbaU!G zZ5=)5v)2>e3>ORucl(^x0+xyI*!3Rwo4bgOjq32|$qOw-_~O2#Qyv&=_si{GbyyaC zOJ$_wIG@;qV13y=E5JdJv!{5Ogd&y9_#q^v&c5B)5duz+kCwI51g=YTfkA;*EVla{ z=;SK%vx8#~tKGk2w+?OZBFVVZ-+<(s9ZlTMcj+mB-w_d}{o#1&_pc34NAO7K#qC9@ z^pyF(A^XJOr`OKJ{r^bcR0r@gZJR(<7jni=SoUq^s0L33lKyh>pN(Vz0)A{tp=>g$ zlB6UAT|9by`h|(JHc#|A(@(F@WKaaU9#~r&@+>H7=R!clw7EwuoW+IAF~WBTcswW+wAQEF_v03@Zo*owP8WvV+iur)KgD+(jRNnJUUO)-2N+VO#k>*L~*|~Yu z*o2M39hpsc{&!Av^t;iOmriaWiZ2*sADysA9J4W#<1?B1{^}wa;n=HkKe%hi0#G-a zv0u1sFIVb{3UFy)MN zW-q}Q#oJ-xL!LdWo09Sk1JFzw-0$ojAC81O-!E%Ou^9h!y&Ix-c>x#upJ-cbfz|Hnw?=pj(Ls92fA&C*{CE zi!w4D8O_Q;`IWM|Y&y{%2qMe&MVLR22Gu>-j%N$Rq%?_8w|L2C^92O~$-9qk2?gO^ z!(s%+5((p|3bKuQ5|vNaR-2tD(K{N`7n^ybNd?1G%2|cK1h$@DoLx+qC(z!U?>AlE zIrnyV!(e)P65Uc0@Y9obt)B_3FzYGhNKkL4nW2HdW6@|#TZokmb$Nw* zAF>F~{q_2ahUBBC_)qIAOZ}ZTbi98&6JOr)+{)~g&)MunC`NPp64SRkUs6EpsRj@P zCa1p_9L}Z>e$T7=V+^=xzlnbJ+MO;0*sX!HN~#;NXk_>x9-A__$R|UAc zO39}pA<74?*)Kn}wWxwpG;pbCx)y7`fu2i^V2y`=r+xm=D1{ZQ@jI?8Ogj3q(PT|Z zKHtP3?koQt_-e~7io%VL2+!^9E&y3w7WoBQOJ(I-yR0>;;jpQjw3h-bMz|F|Ko4yC zevJiH1+i6@0$Ka<`j8OnB$r*eC!G*h4d24SUF4q%XH}S}wg@ab0~Y@@oQu?ClmxGW z^{YDWmu-m-;k#;YT$7PFr5Xf+Ff098w;anN72Z%>q2M#VJ2wl4pxi$hd!fk z6)O(^+ob=2d2Q2V7h=8!5pHj9-vu!ij_>l|enf_@;6_Fg`NSsEBg;W1=V4O3wtGb( zD;I<^&dH?E2>{?->`i!}zM8_E z7Ij0+<4D8KISb#{`o-FRd*|u4Zh}HEGtr>UXeeIsL1C$31U{Pz`K1cGhboCh-wL}u z7Z2QeT$(srVMo+2oAC2QT|DXaNmU<0A=O(zr|tg@tntSFKaK+Y??8preP2mR#hso$ zWPG|tcE4!VZ{Y376{cI?xKt*d;gJ#Z$3R7ZeAPliR!VQfO_k|`mVlLw&A>7;aJcj% zVM5o){CKGC0Z`h*5QF+jXkrL9m3LJRP(sEMx{&o=hgyDx+pQ_xkL<`0_~yjSI^ey} zl#W6EP2e-u*`#ri zt6w9cS|G%y%R9`Cx>F_3>ocu3YrC@k?imzc4>)#qTCd%A>1zAQ>m1UJxa`< zFg~q6rTVKST$? zxD?3Q7`ERW&;L#_V5h1I`4S3?3!lk6<8_`X*gzx~0; zs_KNwccoR(;6mK#^1(J(TmQzDmbw5UBYP-|?9krL_e)4Fy zE(k)xOct{Nfj~_~egB&HJoHsnQ@|-z$xKsBt1W5)jd5%Nsz%(T(j5gfqtLTQS5I+& z?NR!u4jI_gRk75pYsU(~?;4NCK;OITW0tJhkO{lP6jvwqH?67V5q69(^7P4is{_0m z+yaIjw!+ZlE@~Q@B6N@#Ex^K#|07gEXxCpNLe~aM;5XMy0}^urTh(tJ6_x$%x!~cK z_|1{04Dw0Dm_j}l#L5e-;7mJC3F+PTavAQkJccXUq)>RVTP_KEy}P1CU^5%CP=U}s-k;4yNvRI<>-P^(JsRjTQ9Iv|z% z9q}GLb-sSO^dO|RuOHGhfwe!LGvVL)9Ey@Jk=l9tiBnV8>L}g+Hb%sFW?EFy0kO9O zQ8m}Ke`qR6M5sOWz_SSITLw(2^)5s0!|pC`0JN}aCP{}GK}Kg^PKQ99ytkOU`q6!n zcrt^A_3jDdzcA72t&L)stD{FJsfi4p(YfjA&k)0TVppn#Z&Du&?4M5d5qLyNdzcer4DFi}v&k&cGuR=S@6 zYFaL6x;!t9e#czg-{S2!C$D)k+Q!E_VH|ri1i~xIVkLNU%VK|(Q;771F_fjBXsdn5 zcX_MYdcIJ4jBjr%1G7Mj9?Cbp7As~g7rz5L+I5@XxXJZ@Nh!w>+B*|luQjGxKb2eKZDW2EM_YMPe(MZmiC7HZl6>l-$?F8G@vClobs zxnKJUJ;9Fd#XEhi3$FR+n6p?4MQ6 zohR#0j&F(B){Jw?fqJx^q#5#r+@~5IurKnq0}ZIPu5dQk7d`ey)*)$5B^# zTn^9GTLaarkhpbh4WKlClCrsr;R`N!cfb3Kw9%RFp#|pPIoRcUso20zT}#j-r8E@n z$EDZE=6DX&~yv<7re(J|158%zk6xtD|8saN=%b z*`a1q%RD?R3_JVBc9_H2&9ZG3iZ6mOt8lw&^MN;OV6i+r0|D=&VMT_& zb)7-NoK-uL23ESxL{^kvKE@wWaK#1^Xv`h zZ6+q;^q~13ucByt(`fUMB}L*mtkJ($H@PzWvmjIABRRNm_mmLPwvx|jlOh|JR{3JL zZpma{%UVRPP1mSOvi4;HP%^;_Uq>#ObJEuG(sFv62JU=y1SEe8IwI1 z;S}!uFC5YC2nG|BgokdF1Qm7*hQ3KlC+KR2FEq%pXD)9zJh^; zBk5BpeV~ozaz2Zq{2Bmd4|RSuBJ=UIXrMVVSr(8bid0keSC7TNF>q3a9~FEyU%zcK z1OHICrGm9s$8{M?=elmqj)bF0sre;DQHY$1)8+kj&_?N_iUze2H-Z$KtsLt`vkh&Z5qb=9zYp>VQwF9HF@A@RTh2}v|ygFSzaM8zg}5dDpowxu*4!FLJs|Tt*@AbUjpAva{|FTBSYMGkFrZ>cj2n^EBaKrE$OwmUM4Man5K(1Wtw^ zr?w;-C1s_2IlS}!#M}-OP)C0d0FLm3`DV*WM3R-7QD~acq@lM zgBL|?zbAs>J9Gls@|s3ZN-oBX@=p^MCH{biC}gvn#)ac*zzne2?`$xBn?&35gOB+cbq zT;k5#?Sn#VXS8D}zL{tGyZ7>INo3$y8pp4@lLff#MJ?N)x zo2q*9-zZWMC%E;m7gL1>%Rz*Z=AqwUAZmvjEAdG~mf$2j@#Q^v6SeO|7R7jN z>SF7eN6W=VHzPYm^}3Vu8JsY#xL(xwHyavw^>iC_D6Oa%g|EK8xpDURgaki-8-2=fpWczTHh8?&BF4| z`M#vZxmTuL79B$+WhVt$CrZ9fyB*5Gj^a)4Icv*#vcOQMvXnhNl=Z*1S7neILYzGM z*cqPKDFgT+iO2k%;z+ znb|pS=tRpN^1$Dbc~C7WR`Bl_dW#>2^o8M?Bg4)7)S)&vH*fI5-;M2$_}RFL@EPQO z|58`*KSQ+N`D!@sX!&fm$~%@`W4dRh?IVOP5bvst6*LfiHue2BMHeSn%vLR@RyzM9 z!b^uCWdHi!DX+Rf^_@wwr$CF+%cofx8uUuh3y;5(5*8NzsxA{t-L0jefd@TMhsIV% zm?ek2^WQM3uctHiJEE628ms1V-ls3I{tN1?wKctj*h*)0 zF1Kkke+7M=5N-@5c5IIu=@FNS8pzaX{$DJBkb;9G9`&;>14G#l+cjG>GTh(4a%j_^ zy`_+%4tAKy;|vXk=N3k3g>GQo3mZn;Um0p=>gedJ_O4h~U!i*+m3&~&jM&7);JOAb zFC9cdU!?8bgJ1a>LZe#Q9PFXo_$G5(KnB=J8Yu|rLqTSx5HQS)rqJ%Py}>~USb;t^2WMtQ+t@-0|K zG+Xu}ucER%rF*oUueK@vvmUe*{8w$6nX)p5%&e@^(o*&?Kl+R>K8zPIQLlBpxMYD- z3JPeq_l?a4*2a{Um6cDH&NS>0u;C!K9>`ZDnA()2-p9^*INeF(FNVYxVyW%y9Rd;F2P-cy9W&(+$C7h zgOlLyPLKq5w}bmPdEW2+aqCvyAJjS2$l24=)4O-CHLFK8*yW4E6SCi)>@gN`nRRUc z84>V%x;qyXCIx!6{DG;dS~=>CD*J^C$RB=8w9$KM*=*0$hZms1y0=?jw*e(VUU*i- ziNy~sAhix4|Em1cXp>mywx=k#U7DL6mJVZm(fuA&a2w9zNYWEyhWc_XNp~Fv#mGM1 z@G~!`oY-GeL!YxcbP~U9@$sy6bEDwc3+s(s!ZWKJmKf!CD&AFZ_j=jSLOg#PhjYE= z7z?XyJuJo*J~JC9nKaYMjrTX9=?|9}7W4_$4{;wO6G_8jQ-t?m2Ty@ogjkJ%%1&La zHyp&W&k7V|&tKKyhT#HBZ^@XB&$GYlJ+wrXto-lVUq!kIs9#zUv65cD(e6dwF11sz z+CAT$brOBFJDMvEez-1E)K;V2>+|%^B(^K)Iz{}GclPW@5Q9%{%vepZ*z<4#71xQm z!t{8kfc2g+w2#bpqm4dd5*r+>09)tf0p7gt3+J?OX=>cNEV3PAR?G}MVM#^Qun@|2D_&h0RPcWy{Qeclh5t($xRpx*pzr@>2H@*6h5Ro`K+DMT z|0Eau2lQJ+#48^z2$=tONM-Q!OZB+DF@WBjS2KL7cltOTxaa8|!3T*=#)WA?)6G}$cD8hjv z59Jf$|_gDg7|h&gb8=sJf61iopEoih0f;%>^_19nkCNL+1__=TV1iy2y&0! zn4~q`hwtx7XB)(x#663(Mk|y@V)v`=-4*QOz{uJn1H4l{b^@{rNfg3&xfM3i%^~wt z=p7f&RY)cP*B~TQzG$%-_vb2U@83$#K=o3ASL!dBK!yGd0iz6tEaa!l4o-9ouGl?2 zLe_IJV#aHK_;S$wg_0*?&mzc#9hhh#3g?dy(9qJCv~^;13u0rDM@L5)T0b>fPdaZa zeJnk0t)$#oqmfTaYi1)2Nh&XIusKsF>{}fYs=6$#ltYUCiqj;zsRyNUP{;>iZ#3wc za975mqxCra1t@rTO@R&!$Upf$UJ&+CQIWvvNEqe{keBP>%bqm+Sbhtom=z=8^E@S| z8+fCmn4k)&F>2RAKt;6zuu~$&ZCnftKoR91g;6>ekPk6MG(*?W*Z&F(@#^X-gaC5| z2m~19wCpBb;R5^ zQ*VM()Up%B;V+BjxP5GNA@S9Ej5xYHqu2Shi@Dx`@84gCCaF!Z!WHH>h{G9+Rdf12 zWeh{A$4t-h#C63-GQRHc)W9B&ytiVYIzXE$ZYnA%NtMrUot{p-bg=I_^;xR{6@o%n zi3)+Q!oG^@bd;wOKyEWSJ)MyVYmZ$@t8iH=nORvoM$!ci!g3)#iR;wm9SvrLlSX)6 zTK8jHc`km+(O95XStDoEi;!^2CV+HMwlg|7bw)DFhKbIa?}nfY)g2M=UdDkpGcy;U zV~Pu(x59@V0BWJH#?)q*mb)^=Ft->A?YbdIAF*K_ zPgiW0m&wm@gQgtv3eJ(|I>z%ZJjcsb*yZz7;d`7~*UBI*9}MbDA1 zhe|hhHWL#I9_T^$U>cfpR-j0toIp$Z-1=hzpDH3cUHI>0FfmxBBG(bhnefoqMrlAI3zLGsn`kajh+RtkjaUqlVPzH_8^zA1woZHVO%DY_!~j8aP}M z9|29;uZ{d%_s&Hy)(Be87x53@@Kar$!AG;5^RlLv$iy0o48UY05oG;byjo6e%AJAL zNA`Me5|oDTbXDGp@Xs1uFB+TU?68q=an=L4i5xtpJWSz6B>H2I_G3Six2k}cMTA`C zYOq_>mr=Ps{ued=-qSXcO>*Y|PP{Gc0iG)Skrc8&q^otk)wuv;>!&P%e!Ygv4UwX3 zWGCkU=J145xq#t{{GJa#+7cg^`wFAAQ115SA)`h_5@haWL6rAp0-`4P#nlA^^T1 z>|upi2#m&jpxLZ6W|JF=7fL-h$H0`hf@{PJ{N@(pmt_wV*NrLh>NT1dHPJ`uq-<13 zFXI!s;Hl}UzTxTa{>NuE!O?3#9>Wc%njI(iwbtddd~ttjR99I%`{FY~9k*2%2IJ~u zE;(z(bOhEjGO#Tk*CU}vG@)Iu7lJi?>B1y?7x(--ulWPQ(EU4|au@M>Z{o&!emXGAAF=cU~Uj8&A zo6TZO)bqlMd0!{h(m3GIsr1@k_a5{11M+;?H3-}3f$-aK$B=5iktv`sa_P*4vRHgrVpg9H&!!CZE~qROi}M2Ah~q6_jqyt^Ae8_t=rk2E_h zApt7_KuTzQ+|hPBp80sdHlv_h0p|3rAXoWr>A&UNjnKt7%ulw&&Aym;($8X!*GvL9 zYZe44h0F%e!P%EdAI*k6r~ch*U#Y~)v$Hqp@X%M2h9Ca@1=Qu=mKHi^k%~k@*%cDs zp4lZ&&q@05Q7OH=(I6x>F?0BwsDQP?e8te;@m-%z*oLgzlZc6?#sT`nJ*%Y+j<3LX z6jTD#kS0-{0Zj4ryC-70Tg31PX(M(LWyWEATNv54KEa*aBhi8rwqNf)27pz@VU9Eam{9%3fxDGlTJOi&(>Y}-@_ zuw0{uz|aspTKVvW9G=L0d`Z@?3f)j6zuP{+u2h*9x}dXqn&;j0g|S~RMGah-if^v5 z7`|{NcFzZg@cjzNfk^TZjc+`9H1vEUp&w4LEKCt8UGNkzyzixr;>d8Iiojq-i2H($ zcQ@(H`PeUC#Dt7QOj(N-R2u;g-%@*_^Z>OCfWwzpVdbNfn8EW;_N={8$tn^oNYTh) zbpp%bh(3G9*a+gs?;4MKdQ&mD%zlPlwfg}^aWDah9SOSp+@qt4`FFztmKx_vbO!qL zNUow|jw^hKmveWWhp3EuLAOKQ<(-tY4;p=`SPe9L1g8)L=JcZ97+UR+^2K{caqh?! zsb88werTo;z_bkkXpxLasbngZ&vV+&P(au_I8;lWpfm}k7)M|thH0F^kQ2m$n{j*Gm?iVe1^#OozIhq4#3f{mbAwF`;b6LG zi`cmri)5w{!TSk$*E8a6eDLs^s1D@=0gZOErXqo8+z;=Y{Oudsohny2f_$@rNw!t0I4B9nG^(}r;N8E?p*}+ zsMWH;B!F!K4soz{5|jPdVsBCvWnq3na2%-A=PRnJb{$geyTxaQwRIvc8o3I-QBCX8`dlz{u@ znSdx>dP+gT^t_tbT5-dh0hI~+x}Yw{{j*T_I!qVfJNJwbveE)bRXpN))89?aAUa{{ zw6iZ4bJ>vJNM(EbLYDKPm$R)bRK6QvSt=xNDkWp}iO0n`J&NKN9zf9De(`W|0W@DC zUS0wo8-JDLvSUD^P>6|j4@2NR4@jEz%-Z_~-TZ(UYn)RtRWjJ$7yHt9FlWh;B93CZ zY*gF^YXjVSF-0Lz+cYBJrSM+W&_5^1-2GlP{3V##k(p+69up zyhTNjDg^R3|LrDfrM7Jbvm8L?RqtfW{AAB$zVd1eVo;L zv>}Hf_#Rr6<;xZJhs@SpA*S-K-|Q50q3I=ODs{h!0&oaB*SXo~T~>=kV?!95owTch zgC&;#O=LfR3iS2$jf{_{NT6^;)Msdn2Dad~L7;Vz4rkN`53R409TAAweR*k??lK1^ zt`G!o3cCAGiccA16rpqYJ| zx~}iCDOeQ{Eu~IT93Mq9dg{XzRL0JTAyO>SOy-tN6d{-y7<&Hv`85nt7S2xV!+21{ z3#NT$+NWi3$ld;3LvGzR#~miD)i&${L7UdkB(`ENh67s)rX22tTH_4PF!>jq`02B3Q*4-qPS z8wRdMpRQLKT6YnzVQ@bUVeL!g;)qK8zDiR1CNs~#H@)(M%e(6fupj~g5i`PY1_~*xmz0u30Gx_(dbKZ08rq#)Kvini8)7#%0Fjv3^%L=$JPK_Mx*~K( zzuoL)8P67(>hMWcbJ_Dou=tE#@AWQ>W7L|Y)L41Pi!r4`w=!O_q4;Y>#-5Yd-{k3h z>E%bTG=yU(bdNRJv`Bl5e!uDO#k;Q?3Fc}*r?FRB2I1FC80 ziBCLaxgv#?;lJI@4TgSuy1GqYnX(T zg8;h6hIMuZ5)-7*$g~Fp295$gH*f8SY?90d5C(t+!mik8#jPid299zz6bb0_xwdg8 z#VJN4nx_TeUXDo4EAulQzto@#87QhVF0IbV%MmZq#X3XSLsGtdlib0fCoF^-Mzd~n zUip#nOY-G(Ij});ot~F515&OkYk4ZLb^eaU=3vp9$Bsg$l;%OBvZbX3wdqzXjD#mw zBxC4M9nv(M%?jYNehTS`hcOXRKmDdhwJ+n=|6VyWn8*uRTjS7}#ii22+ITB%>xH&Rh!tb+SiUr zMBU+G2mu_E{=Fh|nP6ZCx|M+29VX+oV@BETwpp5Tk(-~R9XOEwhu=6u>@-VYjL}87 zMlD5oVBB6V4xU0R2Jk!=^gAAPPEIb#v0>lTe+r-cG#`x}(-N>aZ_92d znf~ERod(%zz)8m)mn}#=dhcRcw*xix=8V}d2d6wv%q!w+u$Lcq4 z+pH~jUUk9ep~Y9G8;LFw!;8^sUZeLn+ILD__V6M9da^=`vyJN+=RCHjR-PS^XUOd2 z_2C%^e=N!gau?*mneDj39H}R@)`rs|yWc$V2dhf?aegf)Z*#xk8A#qBY`WVcs+gEu z+b_t_q{%l^4C@*FfDkEw5g78_&p~6_YIb)v+EYPPg-ld0V^_0n&rh#QNz~dq7`kO0 z!|ibohfHvwz)5+@*MXvpu*=atqBa)R1YhZTe{y~zhkqId=zV;rKQ-)3*`J=1L%i1~ z;Jd1DDCiTq2Y}w4q|d?!;~jRc$tk!pPjuJ_!p3V8%?XQCC7~z|isC0 zmQ}P)sUEtLwB0)gi{y6Io~YsuZ|Z@e6)kMLPSiujV5{dyOFJO zATxs|b1dmUD0&$~?}U;3n2DX0=uQe|NWMIS^v7d09yre<_qq^ zr~Wkbf!#GPA&QL9f)gpS8*@EZ$jzRaUd~_jKyK^VN#NY#`w!Rrh-Mp(P_l#)zhgW3 zr?|NbjVm8NykE4nTI{6K3+Op6UdYt-bVS~*@g=wclKSA!wZ26^-KCJ{jyyit(JF%$t=Mfav43RR3G^Tu6)?AL-2#<%>JArdOUv6J+Gm$Ym zV;6{f!2kM(K15~0VE*;O1WcYMiab27GiQDgyOTQT_^={Z9b}7m`_;siuQqzC=z1Ak zNet~_ocp?^LK3!LtR@tBeW_b9_LM4+qhfgNc>n4tL>dthk^A-uX0azqhJ*d>M~A3O zYB!3BM#^s2+E;TAu}KfM)#1HUjE(e?bE&Pj090rU{F9)aLu6kDY0V01z@~2Dfzdc*_?Y9ozXP0Fin6uavI@6NJL^9mh6U zAEJa@Xe4^v=9|kd1t10Sdage;0eu26=+oCXj&|@U! z);z~=$)_z70#0|Lqo`mrF!9>GZvJy$pX3*=^>p_x^I##h2V82#%2w;9VTi~9nq+Rz zj@45JneOZl0SNlHf}`PER1i( zZ{zFY$Cp8(1Enlz>vfz8!?M(jVo#8J56dW!FG5mqH|CDWV-E2}#9Bl+@mRy%wH(#A zzqt;Pa3W4U^_gs=TcNcL5KXR&avA!f-KQ;m!rjlQhQ{0#+D=q88Dj0smOn;CY+7lu zMKhkc)%R^AUk37j;5Q(*p_(L@e5hM>V$WtF4|u-DYtUQK)#dTIb5HX5gSfI^hD0?fY=W?KASHh3(bYYQ=}ZeD zcnO?cgnyB{V*Nq>dW+!+x`So({r!*dMGwQ+4WwB6QRjV9cs7LOp^Sm_Z|uRwRmSL; zCNF?eJrli!vJtQ+S?lntaCIzeHu>}9`^KGBkmID`{jNB$kU#* z1$bhQCE+Z+J_=DEwFM1vXiOhqEYRx(^3dD{BxG}*921zvL`$UT-Nwg2QGA%mi0df( z{_b8;A)ew9dbGVj(vMxw=poaQZQ;Xpj5on zkPDl$Q$q9ydVx)LPjFeb1BcB6GOUH$tTQm&U#U1csb*kY=PKuUm^}=h_-kg7EpJAX zLka+DlIP)ZNTFCwU^uMVu3SbOvfz#S-2$*dY;@ML{m?ju(pOyvf-yaR5A8MsDM8G3 z0pXUF+RC;?b6{+HmZztyPiY*$qhTa;#Ds-cP;GV;wIc`y8yDKdxooU~g1v_?4m)-4 z8)FMX*ZT%3OlLIu!UK!~^ybATuixd0 zidyG{x*p^ZU)H|kt?P&ZMfY#FUYW^DOesgQ>*a4LB2+=%NQM6fLfX*SSelfC5&vr% zI7MN3N>-MNSrBIsq^M5ff^)+hGf6wU%h^?rIoe&>4?I=vH6FGhufl*j{QFP z_q&IGEUm49Bb}~)0t3{cem7ySs#pu@7OO=XUB@R+qxpI;P=~x)OS!uDR2VnN3N3Y0)B{2nJ#J6%zuV4 zBpB2E1h!<*i=3adV^5*uGX274wmkVm9={2PUCJ*u0MU<5IN$lTveZt^`+{~4AGyAW zQlt0JHS4~Ol{F=59L7ax;nMsEXgF3{rO|NS0=|haj3+kD>L%9dA*`QVa-N_cp5P0< zvaia>ewu?li_H)>WfL|w{2sL5@nY!e<;`bcTvNq|#Z76EE|-$Z21%l%NN;Lt&CJ>t z-K!2Ipi<-W3fq}JQ-?u~D9mY*%cL3ky>!NK3S~uCN2hYdAz>8iu6NRPE{eIVaWB5} z_!^dYhj)x81iXqxVkoNA7N8hBm9Jvc6M`Un^DWpXF&C6hY};J89m6zhtpRbHY2@5y_&S!BUF^~12bJ;CI&UP{@zKP3 z>Ie%ECi#Mi!6|)**qDrY-pOn~mwK~DR4gk2pJor1&+U4{cVzmMo%E9==H zU+1*8%ELMS`La?{icS3oJY=kDqYIviIbtCuAMg7qz(_ZcmWiQTt1lFq2B)#8O(jM0 z`>4@oUeLeA?vDu@aY@W_2qdNo@{M0dKtht}s2kNX5wY{HVR_}xZ{RiK*FE>AS6xJk zoe{|5#~Q?pFN}ojr4ZfBwn2LKH`z+uHSEiiR)9OF)9~ml#jb|^9Jx zZ!^Zs1W~u7s{!&HG~Uo6-`>WA$f74Oe2=1e{N?`ldpPp)KfAqqnN~*JOwLr4MRP4aw}ka`c5wqy zQp+j%)a6&+z_kQ(8XcTltFU>Qw)h;@oMq2+zgZp3rn^naYw$`Tn{=D2`X3 zW|F%Jwu8O`3k|fJ{Ny+|#@r7-!HMxvu_I7WbfSDEd6lnVwcKI7m+#c>!+CUD^Uu9R zv=|j|D^$v=-Ddz>slH|ud8ouUq|iV8gswANb7Zu9i^N;eS{xl4Eo$D|Z@9jWS|Q=} zJzia^W;6cx0vzz>bH{ytWCXI=-RUO?RAhX`mz#ODRiH|m+$_x^B-Ex!ElW>FXYiqg z%A`K!yFeR#v&@hZrI!W{#2=dmc?QQ$pBC-`o&Xj|2C%kvzFOxZ?(kFDba!#rs%;(^ zNq@xf1Jn=Z-%S2|nXTK4JxYGA zS@GZdB|gJrDSbVhysc3@-10G<-=tfR)VhZZ0cAJq_dE*Y_{Y+dmMZA4WaQ&`yUNQa z?u$@$j;~bal6P2`xINIgp%5Ke8B6NXd|wk1($T1FdV%Ob&)Qxa5nXDvtGUKKVIY9y}3B$BsQR#%d0u*2lD%I`r2A)5d*MpI?UWYWvr-E|TTAL|o^A4bIb!brRdpUo;t zEc;S#%g{b6r=flRG$$nGzLhONg%q;eMB-`uKC-E^VxTyJ(r6qBrWJd~N@_H_U!#w5 zc4XF9?8CXLw4HeKXz48N@sl%PsE-rSw^>9B7{HH#U1buDvzqAYx#o_KjO+;1s#nVbw75!jOqH_RyfLCHRbO zlsbR}HzMkih$nVVGsorFAALcFzJ6)3$QxYFBNkfNu|(Udl%AY?V85_YNZw^oKDIP* z<-NVwijI3QRfT1(a2NCx$K$1e0%->J79SN|{dMRnYW&Pq_4ddxLu0M>;Tb>kz>}cTDzX*3(Kh7bNnB?^x-DsIh8tN0Y zDyB76ZW6G8D$LfY6E8=rK-nD@v$L}rGBU8fZGKeW+9}x!<_btZC1T+1F?$QzH^-6r zkH~j;0sU)M9V`Sq_xz9dih%=?X;tB30w8?^e{v3vMnxVAx$y`=aNSxNq0T}{jdJ0z zlqvU%J`!MdxwVc*i%xw^o${<-$Jx#J7#tMe)V&Vxb#~Yk_v>5)Z3GKX)Z8()R^FW> z6*Oht%_GK=_FEaB=d11_IoP7W4ua(A&`dU-47F!!e;YQb8oFCzg3K;I{Osk$%x*iH zf%*?u?q^ZR?L_VXy z>YL3)oJN@+zkH57gc=tw#=Jpw-?O6;ycJ`se*0nuij0b;$TX|6iH!iCrXkdb2eAqa zwNRbmIRzpSdDk-3=0u`8drBtXU=7flp4@H>(2tv)yoHxfm}mK0JgcW=K)2#1-(-&7 zrmwP}P&h})mG-Us;C4G1?VvgZ-fuNwl>NUQ!?EX5(HAj`Mi})b+IGGxYs+voR}^4k z-K*Kp-4(9AhL#k(lnv6bv<36*J+2>L13`uUdY6Bq!%j5hTYz>R3!UF41e5)78;SQt z`LujkEP555oUHy$fMq_2D8mJY(6Hiv}!zS)#{{6&mR z3^&h%-uh+$^@GynAfzBCAYiN4&)x$=%LLxakISuzhMvDr>DUmjntnB|jiZ~OU+&ZV z+7+&lzwq~h7Dorp3$-P~&u$%Fu+?e>qQ^~hgPE5qT+A8HHjgn!)p~h-ZNVFbY~95Ei7-??zIW~r++-kCJB05j79 z-gc2`%Z06SIR4TEBdgB}J*voFIV5^TkP-PMID|iybWgsS8!~0DQJGG~hPXUH_)F~E zFP?XT@IL2*MWwRn%+kY#0LDHm@fNg(?mv*Hw#lI1a6RH(ijqZ_C=aL_OF1HQ^E8MK zDqSVT*U^O3HVA;0$NJOTa1hjp2A`{R>L0AK7sxDP#_@w>S|z zPD@KG^A=wEE4owcQX=x+=eMd2VRN2t-{;yFNU*y*orsZKQg@CJ``*18xPW;&r?7!YF)PW_ql)PrXAh*e(ER(w$g*PmhW8Dp3F?636AxC7n7<~ zXg3efdj&)fH@++?P_bVrfze*SZ1i;bz(s24*I_$d!t}|0P+kNnRV?~pkhF$Z`(5u4 zx~(hB9nMcF6nzVz+tQ}HSoi?Ar2ws1=k6+U^z;r8C(Y~Pet>=06r@e}?Pn{0DF9v8mv<_h zFnhEi1n+^*AXq*HQ}^GII^nRQBJb#6VsDRSVx9-wS&(s3rW3bqOirS*v$NL*9l$Sc z2y3QsJZHNp#>Nj;t&fIrGV|@6oyF6P1~YgFkxEE7;V0#MF}ri9mNT)hs#M@h0s%A9 zX@l@;spQLC@CNmts5!}omNP}`bzC#>2MTVD^v)1@7ZCs9HYzEyKKx8PB29`Uc)FeQ zdm?uR-9?hj>BhbMnL?)7y@jsr`kt-ZnlAU%7@t5v6bg}wyhRS)Hf%#cv+Ncj#d68o z$E1X*6Rq}4&J35Q!c`s2`r6I?{h>?zF7rp)+GA-?=XY>L8hD66GQOww5=!Aj0W`KU`q}f$GyPPKKd)@E+g+I0&j8Yn4TGN{VKA ztG1@*{5g1wI`ZbngP9p69ipj21FzTW4^9$HOEWf(%QzH0 zC|w~_OtbatfRzOax2;H)di%O8T@7=Wy0NBmK6l{ewA#K5CD!m_O-MZqs)_hb{S zui=o~d=^WxZ-gl;+syqIf4z2cP2s^}Tu;CW+8TWr1R1&XIsAN99Bpaw&#$+-h`RyeZVv8T-tRZcz-yo{`|l|C4coOQ7Q=TzcBfPwfNzBfdufar)PhS z;-#Ja{SfC6>Z2oY&e8d{{AY=pzf;rwu>SO{U62jcrR66-T?d6yM8gK*`L?<5tZ#o& zY2M9HAusCORV|9jpGCsxAIG3OhMQi$Z~hc`Qcv^F1b?T38d{S+cD}&$7RxuqcFR5}fGoLP1tr`!H-QsiM=xWU`l*mb$d`o$>G~ zZ7Omia654FfPIa1PiwIPtL3z|td>lsE8q7_sra$C77f_^%I5jbOt?8_Fmpsvchx;m zubHHY28(M7imKN5#XPqHn`>0m0AMACBVTy&79bt^6&&W${El(oYi5$GTrF z^T}VsK@TAprCSJLyb{WT{Pa7R0SG>>D+{3|&;_rV!+E;!SUB|bzVn*b`o99&{bY9E zP>r7Nio?SUv(VExrHRngRZj2$Lpxlll=DYu2bHY z0XyPK5nGR56lg%px^b-}vGb-SGkv1489-Ud92;f5 zP|_Iuyj^Q7wP`!@Or8J4q~F){1jfU%7N{A?)Tjn6`I%m9OKctrTqf=uPCX0m-F5No zX1A*Zv2v-EZW9Y8SN4%GIgDK)sP&Amg*Fy+sQn6L-Er2Rs4oy54jh1}Z42VbPL@1$ zcswV$-xP-mlNuQxjVuNqbagafq3h~?Ff=N{f|46Z&PY+YyArdd#&_b134eV^G0b+o zEr`@KFf{#b{l_Sym_>K7Ui$PSyiGtS^Q=-KGn_X$0YA}A^Ck#d*L%eF#m>|DgeIQWazu6?Ebny6qB3tuFv&D=bbHM*!#e}2X4VTJPX^QS)3Z_MBux;# zNdM!h+@rnx`ZAD4ll>WQxQ&fACLafuVq-?h{WcJ&xecwuH#9-mex1geMn>^&R0MpE z1pQt%^#>>S3@2it?PSF3$9{_#pq%aiU5iQA?!T!lrhEAGzuDx23pWc5m%bBIvoC$K zZmM}%b8FQUT?iM}y&eT+p^y;C&V6m6t+w9AB@+K~*G{$4_IBsIm!$UtIRa%_OCjPw{W&UuI1Qh;KTE%6xjeP+;rhzz7@0)mG9NF>PSej6Nom_ z*VFHJnkpuj!+-UsH45JMuZoL{g_{BO>0tg^y>j2{{6BLgW}(Zv_Jm}cN-}05!&tEh z_n!R8H7+LJtE(ggWSisp;UCC+mYVKgrtdo^vVv>r-|DvpRP&TK7aR&H@~hW!v=JRn z6y;_%^pzgIDuOu?=T+b#-R#m6-9uWUSCN&2k~65ym&-BSk~Q}2VHe%Ju#o0ZMI zNMnd9stT8v62{7TdNvOZj$=5WvCpPkP6n}LqP~x8wX(=R-NHaeMY`HCSZWFPpSQH~ z14+yVDXZDaSGq@{MsxRaP-Jzki$YYtoZfSO0_8RTfAi7g8}o4;c3oD5zVLDq*#r+4 zLa%rqQGK{ivyA@dWLo|u#_Zs?yu45EHcmCuKs`Koa}70{|00VOwp}>6xXNm-PCW8? zl(23KQe`I;cW+5UU46KB7b|5Cd2=KkJ-Wkzyl5jaVmk$=+Z9n-jrPV*e*nVGE67X> z=-R7@|6^NbyA$J3%`qvz+5z3gavc6AD&MPO1>yUHf+qOFp~Q{J1^K4DYb?tEA9Wr2 zxezp~uK#IJTudZts=e{(`C3|bf%Beq99{Bt_$y2;+Gml*vS|Ds?@z&&H=d0KPBw@v ztOhk^zhQ&#opXKPHNf^vggA)#Y=z#D$r>|!;_8^o!n`r~Az|s4gKqc*zl<(h+VG3S z%jA|qoa&tIy)3j)F#7v`Y9D_P+<`qaDOm7K#g_1Fw$tUi^%$yNt`__mkp4T}(nz#a zY{iSViYmJ#0)@F7sQ(GJ*?7%ix?(t{mx5t zHwwn(3J$X#Zu_I*j>ui!Ue8)K6{u1icUEfID6>Us zEg-O*6E;fA`q$9T8l|;2!y(`Wx&*LZo$DU2;eHJ*AA@>&#dgXAN_WO)MQcl!n=0fk z&c}dL(n~@p+OH&&3*c^PR(>%L2=aFbBsi1LcL%+%39LjRT8>)@gJj6KkB7QeSOPV=Vgyn1$@^xpA_RWvUfwQE20omtEI|^x2b2E4i_( zzt+l0JQIv%{%TmjQ#jDzg?^S*;1_F(7n3nfdUj&-(()WTbzYY^uHso13@2W{SL(2FHp1u!o*~w6yCpAy59!-X4}J@?P4v#V9K1o{qr(*y-)z zrMt4EGwx}7L@R?r!WRIl-ezp~^n&d3-xkBr z3NHTc4shWf67!pSuzR@pB|b(I%MJfslOwW>4hyB^K8lpt$%9B6oHE5v0=ppR;gV~& zv>Gb&8dhwu=a%|M<088NM^OCaog78o?@k2azK_N%f*AH{u^ZG5JuqKl3Hzx6q;US& zuP@RG1Bexyo?{@pq$Wpd_M&V9e@C;rbL@u2|LjPq0~OkX=P}%gFlqJ>O<6Oh`svzV z>fgouhd_n)JbCD%CR3JK&LofuDr^w%XhG`hYpVW09G)@oHu4_A=QaHw7%TkWex=)C zcD%Ou1_A2-bGQV1NxOX#3t@M=LtUG2mmsK{PE>S#H|_sN#9;P|&(2BzAzc8_^mF+? z)XNVy_P}rrOyuzoq_T=;8zJinyl4N+xtLnx^IXGgo(U@f+Pb2>{(UhvUL}TEU=%7o z?CR#=_S)oE{eKs$=f4152;?5@cmA&}F`QI0Ov{H@+(51t8 z1jrLg00PVLWULlDNR5n$?9WuP~e?GLun^s}J*bWRM@U>6}cX(As^u zI9%X)--QIAeFX;v!Ch;{RpkXiZJNPI5h1q}07_PxK#N6$H@9VUp)%;Q(n7?mPf-Wc z7!`hOgrw0-iT%Zu&|pBxig(qN|4S$|^;c4iDf04pF<8;(&9vcX7N48F>$T2qsL;(m zs}~IRb6*c$fY+LunhGqhdyjUtzP!FXtmL(N`U#6j_DG{@Dg8eXwx%mg1eo-lV+7~3 zUy5okWy@F6mBhLM2azYu^{LuAoL0LOs`=ylfE{UONf|K^s#PS^$Dbi{q!KYWFnB*s z0!z-8-3rz#`-Fx(pq^cI24cO#ZTJ z2&C9IXV?>YOR6Pps?$44`wHIzB|jV71i!ETUVCN%?(^BK1&s1Q4gc)%JjYDCeOWJ4EHJpijJg;VG_eOe~X&tLrcT$XAXb zex;=MZvdykd#enldr$SXol|S zl19ZnDxcu2N)8@9V*_j?)*ThEotj3<9q)XZ2#pa+R^0*F&reJ>KelhtMcX$MaZPXT z?+(A*_~7wzoc%RuAs6k>6?X>uxL@9YB^_+!f}BvHzxNRoI}}#7sj|~3Q()-DP8lC9 zli9;nmoJzao$`K+1Y1>x6DsOnpXp(Nl0mc=z4M!?p0w4zllUWG&wB7Gw71f@Tx!F1 zbOw`oh>Vrv>)*1afGMi^aIb~fYg%-Ec)Slk7pb1--@Cmg2uLC=qzIqBNPb6KauW~> z8))K)yh-fqokfIjCO07=IXxmj9Ys{rb^4r7`yCm0c0E7B{_jA>-uQyGXd0-qv;g>H zL*pNcV-UhitNaa=-9+yi(;)RX%QfuU!< zH+h$4+d*?;`wLmM$#YU_ib-5l4m1VwLYP|Z$!{;+P5~3}lLHb2d9?uzBi3DSr3{v7 zeyZ=!Ygbvu`zPN`0&UqFpHxghbq#_7LP1(W%fF**rrtl83o|sx=TU${0ZVmiYIkq9 zFzpz402S4J(+*>B5Mc0znRF%YN{Cq0p%+AJteBlV1B_`+lvInPAO#9^fF5ntOlFa= z_mKpP!Hm=Fk>_$DHFCt8hlu$9M%Y!uz}TQ>Pd$0uP!Y}Nxdc9;4-cA;3= zz5b0VnX>Hbc*~Y_jr?%N&5g-{Cm_XmfMh{!uA-pK)ztuOlhFL$YW+qQ4ZH^5>wV+Lz{B$${41H4 zgujl_k59O>Y1{2ToycwVTybTIRGGa5tAOfiZ7wpPs zihQi}Rr^xE`1deeFLXTDx3^Jeuw~Of`u?h#F7UHzUQqLz7IA64d2`411rO$RJnU*s z1-)XMVViFBO2YY$n;cwOe3+by=FI?2#boro9QvTnf^Wv0T<2^+!wTrN@k^P>GThS1 z6wILT4Us%T9P22$!L+||_Bw1{R%x>1Q@j<@_sDb%0!dF#e#ghhE*>5w5*r~YVPO?p zemL(B!(wesZx)Fn*1$_#R@a~Tp2HuW=!qwvj6LqJVjrlwns-_mP1lUV7KrT&S>hRW zt)Kp{8s`G&RLh|&gnM{uhJG&N+D-4szq1L`)Duf^su_9E7o;+h;?+qp9pFC z65ac7PuSPtpCR9pR5vL$ngyB^%QM|T)IFz3iw=4Ve`w>NUR0fo-doH{r!%=8gF0g8 zmb<=Aun0KFvIJS4Va`7&$Yw|Yona}047`i;J0%;f;I`V7`4@b$7 z`IanLMUJyhJ}{6680~7xhLzD*6h?`4=6RD18G>HcL2 z@+J>f`x;C~oh7mL+Rhr}FfJ@r&TVSCLR6h^3~glxFzS@s5We&NArk(qRlYPmHc`g0 z(L_G1aY4+Jo6Kz*7KsjJI^*&_B=`7OpSQ8id+Ch#4WnO(y`Pdk)qvxZ;u3Nq8|N4V zPWth~(oh)0@y;;&#*|c|fo`87b0vYH_Sj-^;IemJ(v`&vLM*DKnLLV3_uJQr&L4!F zE~Wr;fJQUs+M8Tnz5Ia1ph7+7Y6ZJqn|+Gk&uM?R%w>EdqwkkRM?o4&(W~H{PwtJq zc+)7aDLd#*`rm}DVdhHcPj@o=LMG`H8re4ImQQ**+NilE_-YNeBX>v3!V?bA#UTK7 zZbEEqRT)nwPz`i!bTowNs=&_18c?A0)UVDXRXRQvuws8t1_6nNJ9Mr7 zy&6s+Med=xuo!^VfvywS-~t6Z3%o(5{C|c01yo#36E=#@1PdX!L$DCs-95Mk3GN=; z-GaLXcL);P9R~LR!QI{6?QGs}{p*}{?!D`>2I!gTnccfus-Ehqr^7>9j+iGDl{jDf z6+rei;)_>z0*keoR#`9p!!|wd0_LLAaI+? zp-STa#O)Szm2u5DNT^+w`3x_qb$A$9SV#dxR08JG1jWDbATg3E=u>{rLROYi2R=Ii zBlF507*v9)ymF-WY+`b#z^0}iZq69%WihDzy2((@lz#J z{o+sh34PeVGi+*nZLq~PycYwcXdNXLkcA?m^{yv_Uo48<;;itURiqTMI;&b3@DAsx zVp$Tp#Zm|o+|B*D7t_2gY*rfSM#@S`R2alIPG|-Ps zk2UN4=FrT)A$5j_3i53Duzzr?TC(n!^Ms#zqrJ1$+iysUY_jx5Gsb?@=y?O`Gk*<4 z6x4r3Qt?eZJ4*|W8S!21=ol@o&W?1=R)Ru(k&q^k*mCE>aF{aE#p)GMP+} zb7S0`1fpoxuoZswf1cFLbk5(+E%FM7Q|lHwf08v-M`Tqu?3#%{&2YcoH_tf~&ms8| z@8Zc}^3?HIQK2qAPLhi~4%@v_nsrpXGG5;ypRSI*OnQY>^W^Y%u?|C9Z-vEPc<`PU zjoohrHhm#uYkRSf4yvjDidA*(zonDad#|d_>TN-JUN%zX@4@M0E1!10IOMC2Pxf+a zL1;Al%FeP~t$y^dY68){BxZQBNE+F2Nsu${u>9^nJ!z3GlT)*iuXn&{33o%3+p3%G z{*(gdCwCEY-quOZU*RyDaPj_vnDt;9ZVJ&b?2mGd{H#CZV9{qW+Lt9?bL+^2Zm?A| zbZ0XB{PTg z0vgVaU_k+wcTdLWQZj=^7ma3N!_=WC*kT4!$G@QROgR_z-+$DuertRqqLjYY|Sne!94+N4qX0!-oC8cj) zd)_y4F1>IIAvyI-d894DEaAbxrA_0yU4N&DW@r7g9R2J0NiD&qt%M)*{@p;C^MUO` zrI%{R)nT`>$W}=?f?T?wX{F^>qg@`mG7g`$OpSzELek8MvGOW4zneb&W#+>YWp}Ql zP}wrFh4hviwjwMo=ijV$E!@uZCYKtYeYkWO2(`8Q&#{x6?X?C0c7BJxMTV)|{&t3S z;zu+j`^88H5Z5M~ht!|ur|~2X(Ag;Lww5y*^0vGpL-z7VHH+w(;?4s^wr?|e4UR&1 zZ_9nEA&)>@DV^>IzHN4qP4SP`4(j?vNES{4coQ0`d2z=FLzMSYSTe$+TUu;ZoW!$1 zvV@D#EL3jAu3+f9mS4#Rt&!?1V)m~pZrshfIJbp@mVN5vUUS#C6~(!!=uP<_?VPrx z7zCWlB{$0TS9lj1pOmHee+LIm0<>p}VnV9j;I-|Yt{;zRneL9Cy%^wO1r1Llm30lK zMr~J`Ho02QhE6F({F41sw;%3=e&09npG9)>Sub&_94E0blw4fma#(+ol$2B%jLF;C zQu9nZ9#1heqk%FB-Bhi&BPYe(8$@(LRqSdFHC=Y3%Vl3Cca$g?ITgAzk1^b$0;jvS3iXIHX7sk5u&2Mj-{5@J-In>V zo#(G<+6)wY6VtMC5g1w%ER(9pFcd-dD@tiToEeJ{Y^QZnO?9&uc<`;9LV4K1XQJXj8DH@w3f3*^&-;MHb`$cih zMrYi!A_;k@fD}Y5glU-sNqWYcS7|eDtO?zBMFUjZ4!y^O>93oVZcX$6EjtkrO`hIg z0;w)EPO~s7smFS|1>`f8XrJv9Z#u%qt13%Rvdg-c%i9!|TkHDgRa5gPARb}bnPPIK z_g&j^hH$72g52vPWdnpn*YcZ6{QTz^K+F+%WDKt_s>3IZ(rqtv(4{TrmF^|JYGErgFm6oeUB9LCqIDq|JVdYY zkpfxdfRG1Jh`vLtA=I!jEQXI!Udx>`?r=8Vjp1-7slo{rG#E)xwnGpMA_j(=tzA^Y zP07A}X05jLkQ;=}x&6y6%mYgL1eVo)xkEeqsS8bG_P3Are7!_COH#NkCXcVrq5<~29Y{1q-@p-68R_X zGpFMosPNSbV`OerJHVjm?uUB*KT7?#K^*3?Iape~`zkiH{Hv;pDI$v%PZgWP`%cjr zjff~q=kfs`Ud?4j?;a-krJ}6KH(5#^tv;L&YHsrUlm%L}>xSSr(;=A)7qxcWV^n&z zI(8nN>t(n0*3Qnw0!zcUgY~a_@NN*B5cI(I?X`tjxP2`qH=SzB?Jexhtv|h|6MD>Y zNjc~C8~ZIUP#sAvS@G5>Pr1F-dTyfI(5}s&n_8-<7Q?5Ywtcl6@{+EMwz1+8R3pfO zvM2#)&G=2{_&p4pD<{u49c{Q;3|?eY^`W5>0bFkq1gxc}wCmbNhK z)pzB$CbN}5EK*~UMtG)OK1p!6*M8Yoj|6tE3d!v zRzr~W^yIx=ZdYTbfST0m_&eCq`aFXt3k11eNvUi=99iAw!$SI=u&rdKg*V z`@gSq%coE%7#IOHH7tM|7+_uthtNkeq)@;-G%_{XFk&XKeJR-bR^She$WNRpL2Vg{ zLkHZMK8K{?Jqd@$GW|>Mp44khB(+EI#KgsK4>VDocK<_NbQ}1~5sS*SDL?m5?v^9> z{Ep^%uZPS>CPXjue5`oqgsbT>_7(5!Z-1e6JY+E1^jQEbp}=;UthF`0kM0YQ+}oZc zIt!WHc>t1OXg$9|Fa&t}(4~za8o#q^<7$rp#@}OjgiF)-Xr5s7F@VKi+}NqCcMIV! zc2W7+jHb;zw^4L%OSEne_IX((^?&$p`Mf19TwBls3Om)TPVBP0>)^l~4Gry!xVU)k z@9i{RNUM=U$ss?)9gBfs{x89;Z1?mq{3;4X$zak1W=g7dL`eGr{#F?a0dwipA<2!95GN!%1;^xrWHkR zGlT|%aQPcVwJatyEgEP=U5MI47&aC^NBsdDms&^t42_kQ37%A1? z1iarO_TST!vjR+4%WcU2xn_Zc1Jw=1 z1GVeHe9{*S>2EIm*zck1cmHt_1fxw1SjLymyhpe(oT`+-KS>bO<2gwcsOXkC3qF)- zAxlN6)al!{`_*_@-qLt|b1!z;e&Nyx_og1reFJVS8|LlRouNQDsIReWN&}@9_a&g$KrI#dm3c+Z#N>*W`9zEc)ce9W#7f?Y#)huf0wi;Ul|J$CYzT?} zf_Axtn(2P6ZyRJs_Q%5ZuO^T2HdbY$caeT5X^J{>#qQa*)@#7LMFef)(WZfU+K%YMsRCBz5rL7<$%mklY7ZtkKh3|u% z^RkFmc{l~Xe}}V34W`zOtL1xD?z-~r>@L{Nk^*(uF4+7-VLQ|dZ5*jVP6@tUMN>(b zUUzqI|5i<-e-sj$T5dwb?A$Av1CB{SxW4|T09#jgQ44KWw{`?gf3mg*jfWTjCoD#I zm4e6cWva{Q2VVWM$EIc2#bpW#{=KKRHs8&Sv-0;@1r41M0rsccAHLjekSe}KVKSae zGMTsw%oO3cpm&}ZPrn;#8-{WMFmx90vKYYXJ*=tdL(MyAsC&=@+5lT(gHpz8!(spB zILD)_$-44y=XZ+$(zH+9%bc~OA+0Cg_ax!aCKP>WG5{gv4K&+NZW99H9|Pk{skv9l zWxO0b(t%{~coO;GkOm$dkJ;!JoPy*K)FkcT*E%09R+&DzZB?x z5p6b?%g@`~J?S|h6(v7b);xdxq}9vEz&8S@)w$Q{XwYA7h2hh|K@2U9#wz3D=BVnU zrjVKZfvG!Ou4>mPP3EMjvR5c#^FHHJ?*oUrjETM&1yV65E^h~CiV9QvSFVHFvhaH( zY%J!9G5L(X&Q9~H_)?KBWL;UJJ+RY#s4E9OOFI3GIs7M9BafsSqz|z3!IJ`>4#T#l zy0Gro2}yw*_3%HQUQ9U(u$cvQsn)eL#GV**CH>2rUxv$#h=iX=_z;Aj^=F^6!Q|~w zicn9d;N>oY{Q63sc)a)QW;$UQo!(US*%YNR;;s+(ix;Ql^Y~}Apr?&VMIh4}55Ct`>aHDZk>|C!^1S>ejzc{>E6Wiy zV8y>G>O1UPV2p(#D01U-P5M)3^uW<&4SOPKdGK(0f8x@^3h#A?smhYqRXIb)=_+s9 zz!(_Re72KE`%ued-siTz-DcKn7*rI$$4QA61u6BT70hZg*IKB<1@;|vkIKG!y~Kq; z(kG|R&u?{W0V6B`fPL>9=~cE)Z$4XJWY0voOPiMBS$V6Pgd}tbG0ywPCg0miyOreE5Yk1mDQLzYr~w! zR}?mr4QB`Wmx>h*)e9uXWATxgI8ReTw?~KYXHFioI+^ETme;xatli8k{;pU8`0Kwo z>+d_lrqdd)=c(uxCKGOjUp~T8Dk8+VuxD)#3mEiVCc-ADXXB zU*dJr7<3m>!jc*E#jQX5h$Wj|%CFcHhYGx+QY> zrjWI>m**qtVv-JHU+&Y)q)d}*HfcHxZIkQR&joM`;7YzRG*j-&Glcy`t12NZ2Fz5bu9M8Z!0|iBsG#cHUIx$I#``PV2 z7n_retz(bj9kCRPljYpq_m;y?QWE;d&AS65wG>oSQN;nYoOh2`{}g`7M7clqh+3Aa?5Zu_;-;mG(NJK@Ikc8wEP*jE!DJ%!Lx~(WZy9)Bqoa-Wm#D2}l&- z6z3bttBnE}fW_eJNTbZLU%E>cZ-%Ny*@wNi1;0R5N57w{$)vRB^SB2g2l>$Ra$0WL z;`Lhg^hJk=P0h{-+z+}#+t+9NHd$wP%oArs?J;gjRuiIDKast|frm`g`7F3zdIE_($Ee>m2q*u*jJ_>b%21P`J0!J`Ndr z0MgusXJr??QC1*%P1l;TNh!p+R#P1-jvL<8=AU#4V5N``H=9kj zsqXw3V3xlz>fyu;*kRIAXXiKMSof&JfAT&FYQviNEOQ&Z?SByIR$yInwAu54?t8iG z35F_Nu}(5)`Db|V&oU;^U0^Q0JClK+tbMl#JO-B1hJ5i~dVJq=WN+g{CK`11xsIH` znG7vM9A?naH>AETkuCMvsnD;=$%N1h&oFFUbFt(P+Pvt+8n&-bj?mR#_8!-KaUKwM zeqDN5nrir2QJ+wPmgoqnoW5=jlPe_c>L&5VbL*>AIN873NhvNDMbqI)t1#1h=HV*lADPQCjg1e0dP8Il4uzXkTfx*~bd4 zn5vc)sQdZD-?->$>ljf?y>ePSY$_t{v*l`H{gR4}=|$$G7XJ4kqQWtzCOv2l_1Vrp zX8-C_oH#vl(}!RO2rxyu=@Fa**-eO~9I6MMr$1wwI8#4<^PrBsD8{=m&p3leI#Pr! z9h-8MT`A`roFiHET}I!U>^$kTT$o3FQ| z*Bzb7hWq-f1KVULZH~5wLSqR`3h4rKwA!YVNm`szv0v6-BJx3Jn~i}r`kg{QKk=sw zq*nNJF1KwD$`wv3=qThwAcUaM|0fo}@6j&~oo+!Lfylq;W3hRT6V=l9PVG+_b#rG1wNTKNV-NxhQJuhzZKF2gcz8RFG3J!M5{zH?z3>=DhiGkh_mKVLqHj8Qem3N+I)) zC|VwV1d5>aVe+bTAPa`Q^VtNA55fSyYRSyw%+oXOm|*B()hq*`Rn7aOKdN!g2c#=s zymH*Fk{Bc;$4V4V;o$pvZ-OQgGELi7_iGAke7|)>Elp5IO?yy{EpZPhUC`re0PtI0~?-Ep4YJi)&%7g4RpjbE#PZviAgkZ5bwp! zZmQ~O8ja9zHC*0$@mvf+g9~ufO3Uzus!))Wa}t2b7rBQ5)Gdi;2!(}23EDkf>bsq1 zTCwxee+()XCivMHdr#UAYdhIUcyHp!$C3bzzM&V4FnsaZp8ROd(C-$@`#efsm$y^H6_1=+L29eIl2DK(HS6rGGR+s7>%{;}5# zYv#`@woDT9 zh-`gt{UC7)>jyi%Nwgxatr8RK|5yZT{|=VLL@}Zla?eNh_|Hm0(R(U6bdin;DY>ad zZ@&b)MGEP9@ydO~vCO{L5WnGb@#JCQ@NvGCb`z$8JTdKD^hi75hRtlWDx8KD9aJLV z0TN$5BK`Y8M1j)KE5nl3!QE>US$5NxYBCd&URwFYsW;M(D?LnavY1n_@1(iqvnkM< zRds-4G}d|#FmhntI1~Kq8EO_=&itqPl_!>r+5J3diP2K88t_Qg9CCUw+d|4*Si{ z-v^8s_{fBH2ZE(iGx~qoX8F8qhh4@lJ*a|`$cE>b?1o~FZP$$mn$yB{1T}@4Nd2iA zdJiI($AXM@FqjX+6fl&herjw?R4-O#=SHckMi^WI2|U$ABimhPO?Cax=JfhjbyYk3 zIDK=?>m>Ur9ILaSPb+6JtoAojBN8-7PET(;<|-?nD73kl;+RN_IbFYs|AYM20-o)i zSAF?9s9u>c+~6?5(z=Ow^I4{;slEvC6&hnC8l&tHMd?cDeyAA(%R*IQB^s;oy{KeF z1!iWJA@wwWFWf|;>0$lL9g)Um@z@*VgmNV_|`Fp)q=+=cHi2=q!^1Dqg z1>%YM+=$r-y|@ULWyI`%NGgw3e#9M28=)D<`~Hwx&OPY%&umfQ@6hPz(-SY0WI<2Q z)>`XjZdf@@^LViI!Z|FE1wcVhKUz%WP4?md28-cVnqFL%Vd*YKXafFGci8Fx~U2b^}ebDhHFYTQ=XK=>-2RqQ0Av zb^|=35f{AmiCHI63~w%4A)Eh)w|3n57U_RsvnX1Y|NqElNTGq4!MEBSeg8kIR=(Pt zE^X#gUkbe7ipKKzGin71VYCKe|4W$Gm}NgUDJ_!j3tEQ}Wv#2Ftxv*-JS8mFn=cfo zm+y!jV*O~YFSAaxPHT?;@a4ysFAd0ul=^`BjL20q}P4zLHe#pi^OWH z_N=i}ff^I4U%~-a8trjbZr(`mz8l6|ObxeD_dRf1DE-0(PQ3j^w*Q*pF~;$9E}ODn zAAge%nc3pk;Z)UnR{_3huTHI4?a2EhaV{UW=RjG)jO(x9Xh#H^QK&!~!FXoroNsr1 z;06h5KBM=o@Ch%zO4AgV|3W@-hRee*P=kAo{f7|3-G{L8eV`8(KOGDdHt7*hFmBmF*nNI#32JeN1y z34n&I)wtEne?si znF0}>cAG)nW4a^-Zke+xe4S!L=J(ISSOL2$uDaC>*>y#Ov~=_sZmHywfpZ1dH1nx$ zBB*G4fe}D)rxr(fmQ9*GtkD8E(XHw@I^=!tcJ+sVfoMpDDvMK*6LSI% zH)w=|5<7>ZN00aga%se=UP?LZw2Gr2CE*LfGPl}pWpW-JgzYvM&P1buS<%6wn!h2K zKcf3KPP5=IduK66uECA2jW{6J^IrI>*z?VEUgDJZ;aQ9e2Ct{DcPgwNOGzui{q6mR z$PvO%0pqQpQkwPv^J8O6U@XjpdXio_a+uJoCq6M2vrdB|KGU*tLhnM_x*Ea<1yokY z5@n*GvNsM-_W!(INBM-mtT=2~2)lxGlYU!cEz&Z0*AqPvg3cZT4P&ZWKp@-O9+KSf zY@l zir}752-XA9?>Wx1(D6RaUvc^<6}Rn}kT>qgUUmbrO`(gOLFcSmB`|nFSu5|Hli+~9 zYbNc`4$57y7@%t+Ik;|M-)1Tl?U;EcT8ZU&UFqPFf&Z=s>Jsh-fpSQMOpd=#*O^(h zz-OpHfnwmG4aZ)P>H6#vri*EAHz`mLD-=fgpG`Cc=THVOIXGdwNI8W)x8}={EZEE(OW=ws%T(Z z@>k5IHrH$4Y=Z7P(AJiAJxYK~w1U9WK0>l4pGy+oY_CG90p2ptU zf(q%jD9O}QbnUuel^vL51%rlaVIAcpLZtt=;5#mewI2-((@9eWmGH&4r+5n`L(MT^~Ha z^~%>JTnF+UD#i;4q`r&$U0nT3p;UeJyTs1il@t>cajP4b|ja-A%iV_h7AQL^&IXNGR1%(E2+!l9M_ zEiqJt!yH*Vy1N%qv+X~grTU%)CgL`#*x6D-&)e^ENqr6yXHjnyAz%LD7NDiey{3N z4~`afYZzwHrQKZ?MIb98h_VD&ABi_j>Hm!pfWFPnnaohobE8xcC?i;F%4li8%>S|J ztz>k0QkyqX2phZ*Xru8soDZ}lVFef@ciQv|fG!GmNAgv;`l}e(*^R(*-z>j6@>Ood zc-+z+JWB%ZXZj)>nBF=}SvEnktBJU}+r7CejTW3!G`?|MDi2oc^OclTJuOsLL&sI@ z{b>cLHqFe`zsyN;9i+b^&UFhmEV^}v!5|hxC}>Rm7UZquHg>rfTczkFh+4&~y*doJ zsOUurv8<|~y)6w1KH}^rH1nvgUSDv>YG{X$@nEPM-N=HD)hyr+)6h~wg?e(6O<4Qmfw+Vbet z(A+0XmBZd1WzUTHTMo(sM|VB*Q9Pd*xPU7WyB$`&PX5kg2c;-r$@)`T96(LmQQB5r zjOH%FQe12?@^BkJT|{N+TFJAKySzqqs-;hq_r4PaRL3@LHjXPgyIyesUG)R`+>n;cN1+Y7utJGc!U5o)sVE(-iAJ)pW0ZAi3 zB<}~O*1QuKbSZrA>LCO$AzVs@4n{%kp3OnQdb%#*zmQAccOrP0Esd6SwV>j6A9GI?siz0N`^g_Ykf7215 z2%V~>IDAS)3(<@qq%+%Y;|x1IYS(Z0^oL9L?2}$OfyvR)(MRD+TCkw@u*f>9ddR>C z45)`P!4CokPOqr;n_pC?@+A?U0fB0Xu+^?;GTN5SbOWd)ELd6VI#*{i7x3Uekbm`c!PP789pemRYUEA6yJ1mvGx#Npn`dTn)f zOBev#&6XtBrQXQU)R3t?aF#(R!0HHLB7Nc$l@&jqxN$LBDvr516l*!2wIQZBWqx^y zwh`67?u0Kbx5H|ydiY~enlx9XTi|&OwAzmSpjS6AMKwpXbz)e?vdshX)v=|()_FFM zfAHnW@gtXoPOd2naAm1zG)Qu^{j)s)0 z8FmX{#Oz*HCjj)E(==13O*`x>xA@+v4mQ}{cPi!QH&>iOVh#dkcVhOx-#0E9dJ#nS zJePfUQtuI09an3!zS-u6p&Kk;qe5990h0IV^;R9j;(#eSy^Dy%<-*X<(KpFt&Y5$m zMF~d}`>ePgx;KbyDA72+uc(ppv;6Aw0oyiZ(Rn}QcVHa!`epcWvumrCdcdwS`BNlA zsebfWgqY)3-w}RMV~wZhn$IDzK^rOto2mJwFYde2pLl(jtE8>D-XH@!%ckwo<>fcZ zcXSID<_BkMUg&mLH3+#TU8mM$$rx2?GX?k_G!!^`82T2wMT|1r!9>IORo8k=e>Q07 zs0aZg2vEhWpx+b`;qubbVGYUU7=FFWygpM{9x$!2vjyZeFf4vdhMqpHsoz7T@$@<) z^u7*NoP+O0jYlZQ5xXdKIp$@QNP67n4oP>|8UbCg%+}{Qvp!Gjjo)K{WHhr%rV;wUyLa4^_Kt0@ zP@{#*whszl+cH8D_V^MD`3FIImVe(<`g_qXOylv@H(>d8dD{?a(QOmsSu5b{yX@XR8KCrZGQtaT zBWH8tY^4Jm=6;Wx%Mx&j4dgiS7kL~w6hrB;f_X!-pLWJgqYTEBL`bsYeHC1K*NCs#c(b82;2%^AT*8; zr$jivO#Q|b_syxd=6w63l`-g_%{JN$@SE6v7RpaLy7ddqbqu`$Sppl`WSCzFrRNx0 zRtPNso%ex;477HJZN4P1tadw@<`Wxv+NKnj?uOt({DpR)(P58ES#{=y>g`g(f`Ay) zw}8s6T$X4c;)Z*?hq$|UzA=@=Kpl;Em*VHED@PSo)!>c}L4Y{pc!A9Ilg32#N0UDl zzPD?(b2P}UZR)m^Yro6jaceQS4iTLg`qQ}Ts?1F}GSZd_I z$$TECt5zzMyT0K9L?-GnLcc@Ah7V$N-m`tW?a5;N7V9nUGvAye?y8VxenwY1sF=?mE&qJH-;hxF?9{R*PhaldR1 z+&>aYY#8{WYPu-8+Dw?5>6E|Fs8o4orl*DS74?VWslJs=#|&?S^c4Dfde)xqF9B9( z^eIRV}NZkez7E*hWED2RZ$)LkMKM@2` zepG)lh-%HJrZ?vW@tLn`eUPh^;9gHzFFmQSFR@}`H6UW z-Ft>q^&^son}DB&q2EJ1`h$TFw0D&JIo0Vo-X7}FS=DhF-b*9uT@y+nR2h0#b75}e z9*-KP-fj&u0K)lMVddK$U_oaGdGEDcjSx2Y)q@eDEj!^-LX)#nA`z4dh)<5xA*@z# zzOzYkFe_aCm+H8G)ln0xSVNb2=<#5T+5Y+Lo;Y%m3jeI7@a}fEN1wr9aTN*zgc)BO zaDM&cQKQNuHh9`FLU;r!)c`iw95|(t;ey2{yIkPq%~Iptasv zKqxA`*t27?Oveh}RQ!RaRhza)9bi)!j0UnRw{wo?Jo{DSC0VATeKLN@$W)pOsr4#T zleh+-F(@fZ)?dx> zQ$MY6U|I_UrhFs;_ow#cbJ_(9=j%`mi~^;|wv1qDsYmJrL#5KF8wV`6IWwV0uHijv zUfuF52k0DLRpCe__0_#IA|cMO@5pMkORMIla$0s9B_(i2enoIcTDc;I3%~1g;3@D^ zZS6;8uHbCZ1YdW4)^Dd!_T7L@S9`b9pKJu-W@=ELQB@egODPaFb= zFG-d|d?IBtc7DT-i;gm?HD9OMS)1w^;y{~?uGb&>km~s8zL2*+-@bzdnVQIpNgh&5 z@_Ei&+8#G<9=lw7gV%1k7?P76|36FL)GmFUuC2MaqfiJdlVcV52>pqh4Zizg?&Fny zAh#f_yl3at8`H#f$o)mpa8ID0#M&Zk8~?EYl6DvCO+W@x%kpF8Q!)DtrLCK=NlD~o z*io%szj*88G%Xxp=addtTJrvJ4;ls!N zsiLF-EM15<98Cx{wYWxzA4Ns5eOR^rgi~P1jes2>(A0{kTe6fveOui}2)FJ)SQ(ed zSm<{K&d4UL40_3wgIR|vuMped)oZe{3UPAjZ&+3SJhSWyW4ov=J;^?Kyj0H~;d@9} zS*{ccNj>gk8!5;y$UUAqwXCt{%36;pTB*Z*;B@4DcBXdONXN^tVHEHvp@SI_M(tpGZ)D5+qcjMz9KGDPv<#GXc4-?;!*t$}s>-`6-hDWMu4d@2- zN9|FlzR1lF(|-w=-q98}esd}7H$-uvSAm&(`rcwh)EYawHt+Qjk)l#2Fp(|H5iz-a zsBSAD9nR>cPrK3L+`yBskD$VGDKNJ;oXO)<=jk}#k(S;@#PLQ4lCk)@oaS^dD|TaN?SA&~?Jz4lid;T3@I$4Dj_v}S1ZYKjzZ z*O#1CBo2WcY8R^?LI-B=fX_V>Gxx*e-Cc+?|BhQngf&hPubywMTL&n+we=GT2?^3Q zI+XUd@f~##*OdH6dcY~ZVic@9u|%3nq@>6zXL_!m(v+M2wwfP8^MI$kib z^>^!inY)HA#JL4(iKvqvY?sn+gq7?SpkO{tD;==luen%GFMRndDcFy}h4N$;Fp+=Y9y#!uTX{jiraUhSYl;4du!Q+$lhC_0t{4MWjJe8Pi z){#D~6rk~;9zHdNCx3tZyaV2>UUUdmqoElwgv3j|DY`ZFGp@#?8?DbXigou>S-g&% zfPnx#<~P=9+^~yQHItYMw~U-LY$sZXPK&?~I(pvl>CoF`r)ZQ3oK1Ni%f1U;)%&@) zJcGo6Pw{*k4;RtM)|3x3SJv@sGkRDHRY4eVS@wTePL-&8$1GM9kNIcXGNgimq1sYm zVJZM8Uorl$mvhrMGuVo;C+pv*?4z1c+y!T-?c w_$)Cp0NI0{10jhp`cy9f>6O)FO`pTAmB$*RPJlJu%6%l1*61MK>z>% literal 102807 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 DM2@x{ delta 4866 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 BcDn!o diff --git a/icons/rebase_icons.dmi b/icons/rebase_icons.dmi index 6b0a25a1f7e6c6493a145349dc59c80bb3494a68..14c19d8b27e6965b948af3b33575dfeeaff36754 100644 GIT binary patch literal 91513 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

    1d)2V&! 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
      bof%29cM$ka}FqWD+DZ(lX$pw0J;yews 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 From 040f0a3ab202db64940a504a929388f99841df0c Mon Sep 17 00:00:00 2001 From: silencer-pl <103842328+silencer-pl@users.noreply.github.com> Date: Mon, 4 Dec 2023 04:52:36 -0500 Subject: [PATCH 03/38] Prayer and USCM message visibility tweaks (#5046) # About the pull request This PR adds one of the distinct, but hopefully not disruptive terminal sounds to the message prompt mods/admins relieve when a player sends a prayer and makes both the USCM emergency message prompts and prayer prompts one size up from current font size and bolded for better visibility. Something something downstream improvement that really should be upstream something. # Explain why it's good for the game Prayer visibility in particular has always been an issue, now not only there is a sound, these messages are bolded and slightly bigger. # Testing Photographs and Procedure
      Screenshots & Videos My font settings: ![image](https://github.com/cmss13-devs/cmss13/assets/103842328/8e57b411-9b31-4bd4-a71c-ef5ec3de4f10) The messages, surrounding a regular prompt: ![image](https://github.com/cmss13-devs/cmss13/assets/103842328/f4b7577e-f9be-43be-8850-e86aacc53085) The sound is sound\machines\terminal_alert.ogg
      # Changelog :cl:silencer_pl admin: Recieving prayers now makes a sound admin: Prayers and USCM emergency messages are now better highlighted for mods/admins /:cl: --------- Co-authored-by: fira --- code/modules/admin/verbs/pray.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index e0210e4577a0..66ed690a0e80 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -17,13 +17,14 @@ liaison = 1 if(liaison) - msg = SPAN_STAFF_IC("LIAISON: [key_name(src, 1)] [CC_MARK(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] [ADMIN_JMP_USER(src)] [ADMIN_SC(src)]: [msg]") + msg = "[SPAN_STAFF_IC("LIAISON:")][key_name(src, 1)] [CC_MARK(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] [ADMIN_JMP_USER(src)] [ADMIN_SC(src)]: [msg]" else - msg = SPAN_STAFF_IC("PRAY: [key_name(src, 1)] [CC_MARK(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] [ADMIN_JMP_USER(src)] [ADMIN_SC(src)]: [msg]") + msg = "[SPAN_STAFF_IC("PRAY: ")][key_name(src, 1)] [CC_MARK(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] [ADMIN_JMP_USER(src)] [ADMIN_SC(src)]: [msg]" log_admin(msg) for(var/client/C in GLOB.admins) if(AHOLD_IS_MOD(C.admin_holder) && C.prefs.toggles_chat & CHAT_PRAYER) to_chat(C, msg) + C << 'sound/machines/terminal_alert.ogg' if(liaison) to_chat(usr, "Your corporate overlords at Weyland-Yutani have received your message.") else @@ -31,7 +32,7 @@ /proc/high_command_announce(text , mob/Sender , iamessage) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) - msg = "[SPAN_STAFF_IC("USCM[iamessage ? "IA" : ""]:")][key_name(Sender, 1)] [CC_MARK(Sender)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] [ADMIN_JMP_USER(Sender)] [CC_REPLY(Sender)]: [msg]" + msg = "[SPAN_STAFF_IC("USCM[iamessage ? "IA" : ""]:")][key_name(Sender, 1)] [CC_MARK(Sender)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] [ADMIN_JMP_USER(Sender)] [CC_REPLY(Sender)]: [msg]" log_admin(msg) for(var/client/C in GLOB.admins) if((R_ADMIN|R_MOD) & C.admin_holder.rights) From 5dd9a1cd07f4138b5b9741db2aee3f34519ddc09 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 4 Dec 2023 10:04:17 +0000 Subject: [PATCH 04/38] Automatic changelog for PR #5046 [ci skip] --- html/changelogs/AutoChangeLog-pr-5046.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5046.yml diff --git a/html/changelogs/AutoChangeLog-pr-5046.yml b/html/changelogs/AutoChangeLog-pr-5046.yml new file mode 100644 index 000000000000..240a8760885c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5046.yml @@ -0,0 +1,5 @@ +author: "silencer_pl" +delete-after: True +changes: + - admin: "Recieving prayers now makes a sound" + - admin: "Prayers and USCM emergency messages are now better highlighted for mods/admins" \ No newline at end of file From 5998e004dff24c0fe5a83e0e7b8d8223ea7f1e9e Mon Sep 17 00:00:00 2001 From: SabreML <57483089+SabreML@users.noreply.github.com> Date: Mon, 4 Dec 2023 09:53:41 +0000 Subject: [PATCH 05/38] Fixes the the majority of "The the" in chat messages (Part 1) (#5087) *(Part 1/3 because there's about 100 files in total and it's easier to review if they're split up.)* # About the pull request Fixes instances of `"The the item"` and `"A the item"` in chat messages so that they display as `"The item"` and `"A item"` instead. These were caused by DM's built-in [Text Macros](https://www.byond.com/docs/ref/#/DM/text/macros) system either being used incorrectly, or used unintentionally.
      DM outputs for various inputs:
      ``` /obj/improper_noun name = "test object" var/obj/improper_noun/T = new() "The [T] is formatted" // Outputs as "The the test object is formatted" "The [T.name] is formatted" // Outputs as "The test object is formatted" "\The [T] is formatted" // Outputs as "The test object is formatted" "\The [T.name] is formatted" // Outputs as "The test object is formatted" "A [T] is formatted" // Outputs as "A the test object is formatted" "A [T.name] is formatted" // Outputs as "A test object is formatted" "\A [T] is formatted" // Outputs as "A test object is formatted" "\A [T.name] is formatted" // Outputs as "A test object is formatted" /obj/proper_noun name = "Test Object" var/obj/proper_noun/T = new() "The [T] is formatted" // Outputs as "The Test Object is formatted" "The [T.name] is formatted" // Outputs as "The Test Object is formatted" "\The [T] is formatted" // Outputs as "Test Object is formatted" "\The [T.name] is formatted" // Outputs as "Test Object is formatted" "A [T] is formatted" // Outputs as "A Test Object is formatted" "A [T.name] is formatted" // Outputs as "A Test Object is formatted" "\A [T] is formatted" // Outputs as "Test Object is formatted" "\A [T.name] is formatted" // Outputs as "Test Object is formatted" ``` (Code validation [here](https://discord.com/channels/484170914754330625/487268744419344384/1179950399483027536) in Coderbus)
      I've tried to avoid touching anything that already works properly in-game in order to keep the PR size down, even if the manner in which it's working isn't the "correct" way (things like improper nouns being capitalised and vice versa). I did edit the names of some items in `chem_grenade.dm` though, since they needed to be changed for the `/obj/item/explosive/proc/toggle_blast_dampener()` proc to display its message properly.
      **RegEx used:** `^(?!.*(?:\/{2,}|\/\*|\* )).*?[^\\](?:the|a) \[.+\]` (https://regexr.com/7o5vd) (For search only. All replacements were done manually and I skipped a lot of false positives.)
      Bad regex explanation: ``` ^ == Beginning of the line. (?! == Negative lookahead START (If this group matches anything further in the line, discard this result.) .* == 0 or more characters. (e.g. indentation) (?: == Non-capturing group START (Capturing vs non-capturing actually makes no difference here since nothing's being replaced) \/{2,} == 2 or more forward slash '/' characters ('//' or '///' at the start of the line is a comment) | == OR \/\* == One forward slash and an asterisk. (Block comment start) | == OR \* == A single asterisk followed by a space. (Middle of a block comment) ) == Non-capturing group END ) == Negative lookahead END .*? == 0 or more characters with a 'lazy' quantifier so that it matches as few as possible. [^\\] == Negated character set containing a backslash. (Match any character that is not a '\'. (This filters out "\the [item]" results)) (?: == Non-capturing group START the|a == Match 'the' or 'a'. (As in "the [item]"/ "a [item]") ) == Non-capturing group END \[.+\] == Match opening and closing square brackets with 1 or more characters inside them. ```
      # Explain why it's good for the game "Typo" fixes. # Testing Photographs and Procedure
      Screenshots *(I took these screenshots before I split the PR into smaller parts and I'm posting it pretty late at night, so some of these examples might not actually be included in this PR.) (I can take new ones later if that's requested later.)* **Before:** ![sandwich before](https://github.com/cmss13-devs/cmss13/assets/57483089/17f0f20b-4c13-40fe-a12b-58d9ff974cbf) ![pizza before](https://github.com/cmss13-devs/cmss13/assets/57483089/d00a158f-fcab-4aec-b044-f5d591b12aad) ![cigarette before](https://github.com/cmss13-devs/cmss13/assets/57483089/463a0b36-1ee9-4b3b-bf63-36326edd04c3) ![barricade before](https://github.com/cmss13-devs/cmss13/assets/57483089/92bffce0-c2f4-47c9-8358-b9c36474c787) ![magazine box before](https://github.com/cmss13-devs/cmss13/assets/57483089/c9af9b35-7d13-4c27-b063-6048818847ec) **After:** ![sandwich after](https://github.com/cmss13-devs/cmss13/assets/57483089/7655b48f-5843-4fd8-8baa-967add160752) ![pizza after](https://github.com/cmss13-devs/cmss13/assets/57483089/9bfb1388-d712-4386-beca-0c924e4f1adf) ![cigarette after](https://github.com/cmss13-devs/cmss13/assets/57483089/fd707f3e-583e-49da-97c9-9972f9013de3) ![barricade after](https://github.com/cmss13-devs/cmss13/assets/57483089/65d8d0c3-921a-41c2-a640-27f184db01d8) ![magazine box after](https://github.com/cmss13-devs/cmss13/assets/57483089/b79a8704-2674-4f68-a556-13e8cec59ab4)
      # Changelog :cl: spellcheck: Fixed instances of "The the" and "A the" in chat messages so that they're just "The" instead. (Part 1) /:cl: --- code/datums/ammo/misc.dm | 2 +- code/datums/emergency_calls/cryo_marines.dm | 10 +-- .../emergency_calls/cryo_marines_heavy.dm | 12 +-- code/datums/emergency_calls/cryo_spec.dm | 2 +- code/datums/emergency_calls/tank_crew.dm | 3 +- .../datums/emergency_calls/whiskey_outpost.dm | 10 +-- code/datums/helper_datums/teleport.dm | 6 +- code/game/machinery/atmoalter/canister.dm | 2 +- .../machinery/computer/HolodeckControl.dm | 4 +- code/game/machinery/computer/research.dm | 5 +- code/game/machinery/doors/airlock.dm | 6 +- code/game/machinery/fusion_engine.dm | 4 +- code/game/machinery/iv_drip.dm | 2 +- code/game/machinery/kitchen/processor.dm | 3 +- code/game/machinery/pipe/construction.dm | 4 +- code/game/machinery/spaceheater.dm | 5 +- code/game/machinery/vending/vending.dm | 74 +++++++++---------- .../objects/items/circuitboards/computer.dm | 8 +- .../objects/items/circuitboards/machine.dm | 4 +- code/game/objects/items/devices/cloaking.dm | 4 +- .../objects/items/devices/lightreplacer.dm | 2 +- .../objects/items/devices/suit_cooling.dm | 10 +-- .../objects/items/devices/teleportation.dm | 3 +- .../objects/items/devices/transfer_valve.dm | 2 +- .../objects/items/explosives/explosive.dm | 4 +- .../items/explosives/grenades/chem_grenade.dm | 12 +-- code/game/objects/items/explosives/mine.dm | 2 +- code/game/objects/items/explosives/plastic.dm | 6 +- code/game/objects/items/frames/camera.dm | 2 +- code/game/objects/items/lightstick.dm | 10 +-- code/game/objects/items/misc.dm | 2 +- .../reagent_containers/food/condiment.dm | 4 +- .../reagent_containers/food/fortunecookie.dm | 2 +- .../items/reagent_containers/food/sandwich.dm | 2 +- 34 files changed, 112 insertions(+), 121 deletions(-) diff --git a/code/datums/ammo/misc.dm b/code/datums/ammo/misc.dm index 1d04692c0360..607a6e517a7c 100644 --- a/code/datums/ammo/misc.dm +++ b/code/datums/ammo/misc.dm @@ -191,7 +191,7 @@ for(var/obj/item/reagent_container/food/drinks/cans/souto/S in P.contents) M.put_in_active_hand(S) for(var/mob/O in viewers(GLOB.world_view_size, P)) //find all people in view. - O.show_message(SPAN_DANGER("[M] catches the [S]!"), SHOW_MESSAGE_VISIBLE) //Tell them the can was caught. + O.show_message(SPAN_DANGER("[M] catches [S]!"), SHOW_MESSAGE_VISIBLE) //Tell them the can was caught. return //Can was caught. if(ishuman(M)) var/mob/living/carbon/human/H = M diff --git a/code/datums/emergency_calls/cryo_marines.dm b/code/datums/emergency_calls/cryo_marines.dm index 4e997292f74d..fb8d4b8a5a69 100644 --- a/code/datums/emergency_calls/cryo_marines.dm +++ b/code/datums/emergency_calls/cryo_marines.dm @@ -50,34 +50,34 @@ human.client?.prefs.copy_all_to(human, JOB_SQUAD_LEADER, TRUE, TRUE) arm_equipment(human, /datum/equipment_preset/uscm/leader/cryo, mind == null, TRUE) to_chat(human, SPAN_ROLE_HEADER("You are a Squad Leader in the USCM")) - to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) else if (heavies < max_heavies && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_HEAVY) && check_timelock(human.client, JOB_SQUAD_SPECIALIST, time_required_for_job)))) heavies++ human.client?.prefs.copy_all_to(human, JOB_SQUAD_SPECIALIST, TRUE, TRUE) arm_equipment(human, /datum/equipment_preset/uscm/spec/cryo, mind == null, TRUE) to_chat(human, SPAN_ROLE_HEADER("You are a Weapons Specialist in the USCM")) - to_chat(human, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) else if (medics < max_medics && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(human.client, JOB_SQUAD_MEDIC, time_required_for_job)))) medics++ human.client?.prefs.copy_all_to(human, JOB_SQUAD_MEDIC, TRUE, TRUE) arm_equipment(human, /datum/equipment_preset/uscm/medic/cryo, mind == null, TRUE) to_chat(human, SPAN_ROLE_HEADER("You are a Hospital Corpsman in the USCM")) - to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) else if (engineers < max_engineers && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(human.client, JOB_SQUAD_ENGI, time_required_for_job)))) engineers++ human.client?.prefs.copy_all_to(human, JOB_SQUAD_ENGI, TRUE, TRUE) arm_equipment(human, /datum/equipment_preset/uscm/engineer/cryo, mind == null, TRUE) to_chat(human, SPAN_ROLE_HEADER("You are an Engineer in the USCM")) - to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) else human.client?.prefs.copy_all_to(human, JOB_SQUAD_MARINE, TRUE, TRUE) arm_equipment(human, /datum/equipment_preset/uscm/pfc/cryo, mind == null, TRUE) to_chat(human, SPAN_ROLE_HEADER("You are a Rifleman in the USCM")) - to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) sleep(10) diff --git a/code/datums/emergency_calls/cryo_marines_heavy.dm b/code/datums/emergency_calls/cryo_marines_heavy.dm index 2081d9564c50..42f25a461254 100644 --- a/code/datums/emergency_calls/cryo_marines_heavy.dm +++ b/code/datums/emergency_calls/cryo_marines_heavy.dm @@ -41,31 +41,31 @@ leaders++ arm_equipment(H, /datum/equipment_preset/uscm/leader_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Squad Leader in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if (heavies < max_heavies && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_HEAVY) && check_timelock(H.client, JOB_SQUAD_SPECIALIST, time_required_for_job)) heavies++ arm_equipment(H, /datum/equipment_preset/uscm/specialist_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Weapons Specialist in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if(smartgunners < max_smartgunners && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(H.client, JOB_SQUAD_SMARTGUN, time_required_for_job)) smartgunners++ arm_equipment(H, /datum/equipment_preset/uscm/smartgunner_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Smartgunner in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if(engineers < max_engineers && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(H.client, JOB_SQUAD_ENGI, time_required_for_job)) engineers++ arm_equipment(H, /datum/equipment_preset/uscm/engineer_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are an Engineer in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if (medics < max_medics && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(H.client, JOB_SQUAD_MEDIC, time_required_for_job)) medics++ arm_equipment(H, /datum/equipment_preset/uscm/medic_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Hospital Corpsman in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else arm_equipment(H, /datum/equipment_preset/uscm/private_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Rifleman in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) sleep(10) to_chat(H, SPAN_BOLD("Objectives: [objectives]")) diff --git a/code/datums/emergency_calls/cryo_spec.dm b/code/datums/emergency_calls/cryo_spec.dm index 6cc7c905efbc..8d563b0693f8 100644 --- a/code/datums/emergency_calls/cryo_spec.dm +++ b/code/datums/emergency_calls/cryo_spec.dm @@ -34,7 +34,7 @@ human.client?.prefs.copy_all_to(human, JOB_SQUAD_SPECIALIST, TRUE, TRUE) arm_equipment(human, /datum/equipment_preset/uscm/spec/cryo, mind == null, TRUE) to_chat(human, SPAN_ROLE_HEADER("You are a Weapons Specialist in the USCM")) - to_chat(human, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) sleep(10) diff --git a/code/datums/emergency_calls/tank_crew.dm b/code/datums/emergency_calls/tank_crew.dm index fb437c179e48..f8d20051c244 100644 --- a/code/datums/emergency_calls/tank_crew.dm +++ b/code/datums/emergency_calls/tank_crew.dm @@ -24,11 +24,10 @@ sleep(5) arm_equipment(H, /datum/equipment_preset/uscm/tank/full, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Vehicle Crewman in the USCM")) - to_chat(H, SPAN_ROLE_BODY("You are here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(H, SPAN_ROLE_BODY("You are here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) to_chat(H, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) sleep(10) to_chat(H, SPAN_BOLD("Objectives: [objectives]")) GLOB.data_core.manifest_inject(H) //Put people in crew manifest - diff --git a/code/datums/emergency_calls/whiskey_outpost.dm b/code/datums/emergency_calls/whiskey_outpost.dm index 5c46ace04d6c..c6a7e4947756 100644 --- a/code/datums/emergency_calls/whiskey_outpost.dm +++ b/code/datums/emergency_calls/whiskey_outpost.dm @@ -28,23 +28,23 @@ if(!leader && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(mob.client, JOB_SQUAD_LEADER, time_required_for_job)) leader = mob arm_equipment(mob, /datum/equipment_preset/dust_raider/leader, TRUE, TRUE) - to_chat(mob, SPAN_BOLDNOTICE("You are a Squad Leader in the USCM, your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(mob, SPAN_BOLDNOTICE("You are a Squad Leader in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if (heavies < max_heavies && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_HEAVY) && check_timelock(mob.client, JOB_SQUAD_SPECIALIST, time_required_for_job)) heavies++ arm_equipment(mob, /datum/equipment_preset/dust_raider/specialist, TRUE, TRUE) - to_chat(mob, SPAN_BOLDNOTICE("You are a Specialist in the USCM, your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(mob, SPAN_BOLDNOTICE("You are a Specialist in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if(smartgunners < max_smartgunners && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(mob.client, JOB_SQUAD_SMARTGUN, time_required_for_job)) smartgunners++ arm_equipment(mob, /datum/equipment_preset/dust_raider/smartgunner, TRUE, TRUE) - to_chat(mob, SPAN_BOLDNOTICE("You are a Smartgunner in the USCM, your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(mob, SPAN_BOLDNOTICE("You are a Smartgunner in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if(engineers < max_engineers && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(mob.client, JOB_SQUAD_ENGI, time_required_for_job)) engineers++ arm_equipment(mob, /datum/equipment_preset/dust_raider/engineer, TRUE, TRUE) - to_chat(mob, SPAN_BOLDNOTICE("You are an Engineer in the USCM, your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(mob, SPAN_BOLDNOTICE("You are an Engineer in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if (medics < max_medics && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(mob.client, JOB_SQUAD_MEDIC, time_required_for_job)) medics++ arm_equipment(mob, /datum/equipment_preset/dust_raider/medic, TRUE, TRUE) - to_chat(mob, SPAN_BOLDNOTICE("You are a Hospital Corpsman in the USCM, your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(mob, SPAN_BOLDNOTICE("You are a Hospital Corpsman in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else arm_equipment(mob, /datum/equipment_preset/dust_raider/private, TRUE, TRUE) to_chat(mob, SPAN_BOLDNOTICE("You are a Rifleman in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 16825ab8a7ba..207310ac34c5 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -166,15 +166,15 @@ /datum/teleport/instant/science/teleportChecks() if(istype(teleatom, /obj/item/disk/nuclear)) // Don't let nuke disks get teleported --NeoFite - teleatom.visible_message(SPAN_DANGER("The [teleatom] bounces off of the portal!")) + teleatom.visible_message(SPAN_DANGER("[teleatom] bounces off of the portal!")) return 0 if(length(teleatom.search_contents_for(/obj/item/disk/nuclear))) if(istype(teleatom, /mob/living)) var/mob/living/MM = teleatom - MM.visible_message(SPAN_DANGER("The [MM] bounces off of the portal!"),SPAN_DANGER("Something you are carrying seems to be unable to pass through the portal. Better drop it if you want to go through.")) + MM.visible_message(SPAN_DANGER("[MM] bounces off of the portal!"),SPAN_DANGER("Something you are carrying seems to be unable to pass through the portal. Better drop it if you want to go through.")) else - teleatom.visible_message(SPAN_DANGER("The [teleatom] bounces off of the portal!")) + teleatom.visible_message(SPAN_DANGER("[teleatom] bounces off of the portal!")) return 0 if(is_admin_level(destination.z)) diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 32cb026a0b25..d62d688fcfc5 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -98,7 +98,7 @@ update_flag /obj/structure/machinery/portable_atmospherics/canister/attackby(obj/item/W as obj, mob/user as mob) if(!HAS_TRAIT(W, TRAIT_TOOL_WRENCH) && !istype(W, /obj/item/tank) && !istype(W, /obj/item/device/analyzer)) - visible_message(SPAN_DANGER("[user] hits the [src] with a [W]!")) + visible_message(SPAN_DANGER("[user] hits [src] with [W]!")) update_health(W.force) src.add_fingerprint(user) ..() diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 715e9c2a86e5..55df45c70ccc 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -152,7 +152,7 @@ if(X.id == id) X.score(side, 3)// 3 points for dunking a mob // no break, to update multiple scoreboards - visible_message(SPAN_DANGER("[user] dunks [M] into the [src]!")) + visible_message(SPAN_DANGER("[user] dunks [M] into [src]!")) return else if (istype(W, /obj/item) && get_dist(src,user)<2) user.drop_inv_item_to_loc(W, loc) @@ -160,7 +160,7 @@ if(X.id == id) X.score(side) // no break, to update multiple scoreboards - visible_message(SPAN_NOTICE("[user] dunks [W] into the [src]!")) + visible_message(SPAN_NOTICE("[user] dunks [W] into [src]!")) return /obj/structure/holohoop/BlockedPassDirs(atom/movable/mover, target_dir) diff --git a/code/game/machinery/computer/research.dm b/code/game/machinery/computer/research.dm index 2c8a5689b495..1ba696eeee9c 100644 --- a/code/game/machinery/computer/research.dm +++ b/code/game/machinery/computer/research.dm @@ -29,7 +29,7 @@ if(!N.grant) return GLOB.chemical_data.update_credits(N.grant) - visible_message(SPAN_NOTICE("[user] scans the [N.name] on the [src], collecting the [N.grant] research credits.")) + visible_message(SPAN_NOTICE("[user] scans the [N.name] on [src], collecting the [N.grant] research credits.")) N.grant = 0 qdel(N) return @@ -61,7 +61,7 @@ visible_message(SPAN_NOTICE("[user] swipes their ID card on \the [src], but it is refused.")) return if(card.clearance_access <= GLOB.chemical_data.clearance_level || (card.clearance_access == 6 && GLOB.chemical_data.clearance_level >= 5 && GLOB.chemical_data.clearance_x_access)) - visible_message(SPAN_NOTICE("[user] swipes the clearance card on the [src], but nothing happens.")) + visible_message(SPAN_NOTICE("[user] swipes the clearance card on [src], but nothing happens.")) return if(user.real_name != card.registered_name) visible_message(SPAN_WARNING("WARNING: ILLEGAL CLEARANCE USER DETECTED. CARD DATA HAS BEEN WIPED.")) @@ -220,4 +220,3 @@ GLOB.chemical_data.update_credits(purchase_cost * -1) visible_message(SPAN_NOTICE("Clearance Level X Acquired.")) playsound(loc, pick('sound/machines/computer_typing1.ogg','sound/machines/computer_typing2.ogg','sound/machines/computer_typing3.ogg'), 5, 1) - diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 4e362ef12fac..b03ba1e8e195 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -557,7 +557,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( if(istype(attacking_item, /obj/item/clothing/mask/cigarette)) if(isElectrified()) var/obj/item/clothing/mask/cigarette/L = attacking_item - L.light(SPAN_NOTICE("[user] lights their [L] on an electrical arc from the [src]")) + L.light(SPAN_NOTICE("[user] lights their [L] on an electrical arc from [src]")) return if(!isRemoteControlling(user)) @@ -568,7 +568,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( add_fingerprint(user) if(istype(attacking_item, /obj/item/weapon/zombie_claws) && (welded || locked)) - user.visible_message(SPAN_NOTICE("[user] starts tearing into the door on the [src]!"), \ + user.visible_message(SPAN_NOTICE("[user] starts tearing into the door on [src]!"), \ SPAN_NOTICE("You start prying your hand into the gaps of the door with your fingers... This will take about 30 seconds."), \ SPAN_NOTICE("You hear tearing noises!")) @@ -845,7 +845,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( for(var/i in resin_door_shmushereds) if(istype(x,i)) //I would like to just use a if(locate() in ) here but Im not gonna add every child to GLOB.resin_door_shmushereds so it works playsound(loc, "alien_resin_break", 25) - visible_message(SPAN_WARNING("The [src.name] closes on the [x], shmushing it!")) + visible_message(SPAN_WARNING("The [src.name] closes on [x], shmushing it!")) if(isturf(x)) var/turf/closed/wall/resin_wall_to_destroy = x resin_wall_to_destroy.dismantle_wall() diff --git a/code/game/machinery/fusion_engine.dm b/code/game/machinery/fusion_engine.dm index 8e3097ef52d1..d7c7cc4c7d18 100644 --- a/code/game/machinery/fusion_engine.dm +++ b/code/game/machinery/fusion_engine.dm @@ -156,13 +156,13 @@ /obj/structure/machinery/power/fusion_engine/attackby(obj/item/O, mob/user) if(istype(O, /obj/item/fuelCell)) if(is_on) - to_chat(user, SPAN_WARNING("The [src] needs to be turned off first.")) + to_chat(user, SPAN_WARNING("[src] needs to be turned off first.")) return TRUE if(!fusion_cell) if(user.drop_inv_item_to_loc(O, src)) fusion_cell = O update_icon() - to_chat(user, SPAN_NOTICE("You load the [src] with the [O].")) + to_chat(user, SPAN_NOTICE("You load [src] with [O].")) return TRUE else to_chat(user, SPAN_WARNING("You need to remove the fuel cell from [src] first.")) diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 4b863bec043d..e16d2cacf63b 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -101,7 +101,7 @@ for(var/datum/reagent/chem in beaker.reagents.reagent_list) reagentnames += ";[chem.name]" - log_admin("[key_name(user)] put a [beaker] into [src], containing [reagentnames] at ([src.loc.x],[src.loc.y],[src.loc.z]).") + log_admin("[key_name(user)] put \a [beaker] into [src], containing [reagentnames] at ([src.loc.x],[src.loc.y],[src.loc.z]).") to_chat(user, "You attach \the [container] to \the [src].") update_beam() diff --git a/code/game/machinery/kitchen/processor.dm b/code/game/machinery/kitchen/processor.dm index 0c4b8a973e83..a18f5db8af43 100644 --- a/code/game/machinery/kitchen/processor.dm +++ b/code/game/machinery/kitchen/processor.dm @@ -89,7 +89,7 @@ to_chat(user, SPAN_DANGER("That probably won't blend.")) return 1 user.visible_message("[user] put [what] into [src].", \ - "You put the [what] into [src].") + "You put [what] into [src].") user.drop_held_item() what.forceMove(src) @@ -118,4 +118,3 @@ src.processing = 0 src.visible_message(SPAN_NOTICE("\the [src] finished processing."), \ "You hear the food processor stopping/") - diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 33e6e9749e48..a886b59f501f 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -620,8 +620,8 @@ Buildable meters playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) user.visible_message( \ - "[user] fastens the [src].", \ - SPAN_NOTICE("You have fastened the [src]."), \ + "[user] fastens [src].", \ + SPAN_NOTICE("You have fastened [src]."), \ "You hear ratchet.") qdel(src) // remove the pipe item diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index dd45ad597800..69b21964a4f4 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -66,7 +66,7 @@ return else if(HAS_TRAIT(I, TRAIT_TOOL_SCREWDRIVER)) open = !open - user.visible_message(SPAN_NOTICE("[user] [open ? "opens" : "closes"] the hatch on the [src]."), SPAN_NOTICE("You [open ? "open" : "close"] the hatch on the [src].")) + user.visible_message(SPAN_NOTICE("[user] [open ? "opens" : "closes"] the hatch on [src]."), SPAN_NOTICE("You [open ? "open" : "close"] the hatch on [src].")) update_icon() if(!open && user.interactee == src) close_browser(user, "spaceheater") @@ -107,7 +107,7 @@ start_processing() else stop_processing() - user.visible_message(SPAN_NOTICE("[user] switches [on ? "on" : "off"] the [src]."),SPAN_NOTICE("You switch [on ? "on" : "off"] the [src].")) + user.visible_message(SPAN_NOTICE("[user] switches [on ? "on" : "off"] [src]."),SPAN_NOTICE("You switch [on ? "on" : "off"] [src].")) update_icon() return @@ -186,4 +186,3 @@ name = "radiator" desc = "It's a radiator. It heats the room through convection with hot water. This one has a red handle." icon_state = "radiator-r" - diff --git a/code/game/machinery/vending/vending.dm b/code/game/machinery/vending/vending.dm index b6c4da03640c..8629ce2bb2be 100644 --- a/code/game/machinery/vending/vending.dm +++ b/code/game/machinery/vending/vending.dm @@ -208,23 +208,23 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending update_icon() return TRUE else if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) - to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src].")) + to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src.name].")) return FALSE else if(stat & BROKEN) - to_chat(user, SPAN_NOTICE("You start to unscrew the [src]'s broken panel.")) + to_chat(user, SPAN_NOTICE("You start to unscrew [src]'s broken panel.")) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, numticks = 3)) - to_chat(user, SPAN_WARNING("You stop unscrewing the [src]'s broken panel.")) + to_chat(user, SPAN_WARNING("You stop unscrewing [src]'s broken panel.")) return FALSE - to_chat(user, SPAN_NOTICE("You unscrew the [src]'s broken panel and remove it, exposing many broken wires.")) + to_chat(user, SPAN_NOTICE("You unscrew [src]'s broken panel and remove it, exposing many broken wires.")) stat &= ~BROKEN stat |= REPAIR_STEP_ONE return TRUE else if(stat & REPAIR_STEP_FOUR) - to_chat(user, SPAN_NOTICE("You start to fasten the [src]'s new panel.")) + to_chat(user, SPAN_NOTICE("You start to fasten [src]'s new panel.")) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, numticks = 3)) - to_chat(user, SPAN_WARNING("You stop fastening the [src]'s new panel.")) + to_chat(user, SPAN_WARNING("You stop fastening [src]'s new panel.")) return FALSE - to_chat(user, SPAN_NOTICE("You fasten the [src]'s new panel, fully repairing the vendor.")) + to_chat(user, SPAN_NOTICE("You fasten [src]'s new panel, fully repairing the vendor.")) stat &= ~REPAIR_STEP_FOUR stat |= FULLY_REPAIRED update_icon() @@ -235,17 +235,17 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending return FALSE else if(HAS_TRAIT(item, TRAIT_TOOL_WIRECUTTERS)) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) - to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src].")) + to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src.name].")) return FALSE else if(stat == WORKING && panel_open) attack_hand(user) return else if(stat & REPAIR_STEP_ONE) - to_chat(user, SPAN_NOTICE("You start to remove the [src]'s broken wires.")) + to_chat(user, SPAN_NOTICE("You start to remove [src]'s broken wires.")) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, numticks = 3)) - to_chat(user, SPAN_WARNING("You stop removing the [src]'s broken wires.")) + to_chat(user, SPAN_WARNING("You stop removing [src]'s broken wires.")) return FALSE - to_chat(user, SPAN_NOTICE("You remove the [src]'s broken broken wires.")) + to_chat(user, SPAN_NOTICE("You remove [src]'s broken broken wires.")) stat &= ~REPAIR_STEP_ONE stat |= REPAIR_STEP_TWO return TRUE @@ -255,20 +255,20 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending return FALSE else if(istype(item, /obj/item/stack/cable_coil)) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) - to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src].")) + to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src.name].")) return FALSE var/obj/item/stack/cable_coil/CC = item if(stat & REPAIR_STEP_TWO) if(CC.amount < 5) to_chat(user, SPAN_WARNING("You need more cable coil to replace the removed wires.")) - to_chat(user, SPAN_NOTICE("You start to replace the [src]'s removed wires.")) + to_chat(user, SPAN_NOTICE("You start to replace [src]'s removed wires.")) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, numticks = 3)) - to_chat(user, SPAN_WARNING("You stop replacing the [src]'s removed wires.")) + to_chat(user, SPAN_WARNING("You stop replacing [src]'s removed wires.")) return FALSE if(!CC || !CC.use(5)) to_chat(user, SPAN_WARNING("You need more cable coil to replace the removed wires.")) return FALSE - to_chat(user, SPAN_NOTICE("You remove the [src]'s broken broken wires.")) + to_chat(user, SPAN_NOTICE("You remove [src]'s broken broken wires.")) stat &= ~REPAIR_STEP_TWO stat |= REPAIR_STEP_THREE return TRUE @@ -278,18 +278,18 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending return else if(istype(item, /obj/item/stack/sheet/metal)) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) - to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src].")) + to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src.name].")) return FALSE var/obj/item/stack/sheet/metal/M = item if(stat & REPAIR_STEP_THREE) - to_chat(user, SPAN_NOTICE("You start to construct a new panel for the [src].")) + to_chat(user, SPAN_NOTICE("You start to construct a new panel for [src].")) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, numticks = 3)) - to_chat(user, SPAN_WARNING("You stop constructing a new panel for the [src].")) + to_chat(user, SPAN_WARNING("You stop constructing a new panel for [src].")) return FALSE if(!M || !M.use(1)) to_chat(user, SPAN_WARNING("You a sheet of metal to construct a new panel.")) return FALSE - to_chat(user, SPAN_NOTICE("You construct a new panel for the [src].")) + to_chat(user, SPAN_NOTICE("You construct a new panel for [src].")) stat &= ~REPAIR_STEP_THREE stat |= REPAIR_STEP_FOUR return TRUE @@ -306,9 +306,9 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending switch (anchored) if (0) anchored = TRUE - user.visible_message("[user] tightens the bolts securing the [src] to the floor.", "You tighten the bolts securing the [src] to the floor.") + user.visible_message("[user] tightens the bolts securing [src] to the floor.", "You tighten the bolts securing [src] to the floor.") if (1) - user.visible_message("[user] unfastens the bolts securing the [src] to the floor.", "You unfasten the bolts securing the [src] to the floor.") + user.visible_message("[user] unfastens the bolts securing [src] to the floor.", "You unfasten the bolts securing [src] to the floor.") anchored = FALSE return else if(HAS_TRAIT(item, TRAIT_TOOL_MULTITOOL) || HAS_TRAIT(item, TRAIT_TOOL_WIRECUTTERS)) @@ -321,7 +321,7 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending return if(user.drop_inv_item_to_loc(item, src)) coin = item - to_chat(user, SPAN_NOTICE(" You insert the [item] into the [src]")) + to_chat(user, SPAN_NOTICE("You insert [item] into [src]")) tgui_interact(user) return else if(istype(item, /obj/item/spacecash)) @@ -422,9 +422,9 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending if(is_tipped_over) if(user.action_busy) return - user.visible_message(SPAN_NOTICE("[user] begins to heave the [src] back into place!"), SPAN_NOTICE("You start heaving the [src] back into place...")) + user.visible_message(SPAN_NOTICE("[user] begins to heave [src] back into place!"), SPAN_NOTICE("You start heaving [src] back into place...")) if(do_after(user, 80, INTERRUPT_NO_NEEDHAND, BUSY_ICON_FRIENDLY)) - user.visible_message(SPAN_NOTICE("[user] rights the [src]!"), SPAN_NOTICE("You right the [src]!")) + user.visible_message(SPAN_NOTICE("[user] rights [src]!"), SPAN_NOTICE("You right [src]!")) flip_back() return @@ -534,7 +534,7 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending return if(coin.string_attached) if(prob(50)) - to_chat(user, SPAN_NOTICE("You successfully pull the coin out before the [src] could swallow it.")) + to_chat(user, SPAN_NOTICE("You successfully pull the coin out before [src] could swallow it.")) user.put_in_hands(coin) else to_chat(user, SPAN_NOTICE("You weren't able to pull the coin out fast enough, the machine ate it, string and all.")) @@ -882,8 +882,8 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending S.remove_from_storage(item_to_stock, user.loc) qdel(item_to_stock) - user.visible_message(SPAN_NOTICE("[user] stocks the [src] with \a [product.product_name]."), - SPAN_NOTICE("You stock the [src] with \a [product.product_name].")) + user.visible_message(SPAN_NOTICE("[user] stocks [src] with \a [product.product_name]."), + SPAN_NOTICE("You stock [src] with \a [product.product_name].")) product.amount++ return //We found our item, no reason to go on. @@ -967,7 +967,7 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending if (!throw_item) return 0 INVOKE_ASYNC(throw_item, /atom/movable/proc/throw_atom, target, 16, SPEED_AVERAGE, src) - visible_message(SPAN_WARNING("The [src] launches \the [throw_item] at [target]!")) + visible_message(SPAN_WARNING("[src] launches [throw_item] at [target]!")) playsound(src, "sound/machines/vending.ogg", 40, TRUE) return 1 @@ -988,14 +988,14 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending switch(wire) if(VENDING_WIRE_EXTEND) extended_inventory = TRUE - visible_message(SPAN_NOTICE("A weak yellow light turns off underneath the [src].")) + visible_message(SPAN_NOTICE("A weak yellow light turns off underneath [src].")) if(VENDING_WIRE_SHOCK) seconds_electrified = -1 - visible_message(SPAN_DANGER("Electric arcs shoot off from the [src]!")) + visible_message(SPAN_DANGER("Electric arcs shoot off from [src]!")) if (VENDING_WIRE_SHOOT_INV) if(!shoot_inventory) shoot_inventory = TRUE - visible_message(SPAN_WARNING("The [src] begins whirring noisily.")) + visible_message(SPAN_WARNING("[src] begins whirring noisily.")) /obj/structure/machinery/vending/proc/mend(wire) wires |= getWireFlag(wire) @@ -1003,24 +1003,24 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending switch(wire) if(VENDING_WIRE_EXTEND) extended_inventory = FALSE - visible_message(SPAN_NOTICE("A weak yellow light turns on underneath the [src].")) + visible_message(SPAN_NOTICE("A weak yellow light turns on underneath [src].")) if(VENDING_WIRE_SHOCK) seconds_electrified = 0 if (VENDING_WIRE_SHOOT_INV) shoot_inventory = FALSE - visible_message(SPAN_NOTICE("The [src] stops whirring.")) + visible_message(SPAN_NOTICE("[src] stops whirring.")) /obj/structure/machinery/vending/proc/pulse(wire) switch(wire) if(VENDING_WIRE_EXTEND) extended_inventory = !extended_inventory - visible_message(SPAN_NOTICE("A weak yellow light turns [extended_inventory ? "on" : "off"] underneath the [src].")) + visible_message(SPAN_NOTICE("A weak yellow light turns [extended_inventory ? "on" : "off"] underneath [src].")) if (VENDING_WIRE_SHOCK) seconds_electrified = 30 - visible_message(SPAN_DANGER("Electric arcs shoot off from the [src]!")) + visible_message(SPAN_DANGER("Electric arcs shoot off from [src]!")) if (VENDING_WIRE_SHOOT_INV) shoot_inventory = !shoot_inventory if(shoot_inventory) - visible_message(SPAN_WARNING("The [src] begins whirring noisily.")) + visible_message(SPAN_WARNING("[src] begins whirring noisily.")) else - visible_message(SPAN_NOTICE("The [src] stops whirring.")) + visible_message(SPAN_NOTICE("[src] stops whirring.")) diff --git a/code/game/objects/items/circuitboards/computer.dm b/code/game/objects/items/circuitboards/computer.dm index 40c66bc0fa6a..08dcfc6964a6 100644 --- a/code/game/objects/items/circuitboards/computer.dm +++ b/code/game/objects/items/circuitboards/computer.dm @@ -287,14 +287,12 @@ /obj/item/circuitboard/computer/rdconsole/attackby(obj/item/I as obj, mob/user as mob) if(HAS_TRAIT(I, TRAIT_TOOL_SCREWDRIVER)) - user.visible_message(SPAN_NOTICE("\the [user] adjusts the jumper on the [src]'s access protocol pins."), SPAN_NOTICE("You adjust the jumper on the access protocol pins.")) + user.visible_message(SPAN_NOTICE("[user] adjusts the jumper on [src]'s access protocol pins."), SPAN_NOTICE("You adjust the jumper on the access protocol pins.")) if(src.build_path == /obj/structure/machinery/computer/rdconsole/core) src.name = "Circuit Board (RD Console - Robotics)" src.build_path = /obj/structure/machinery/computer/rdconsole/robotics - to_chat(user, SPAN_NOTICE(" Access protocols set to robotics.")) + to_chat(user, SPAN_NOTICE("Access protocols set to robotics.")) else src.name = "Circuit Board (RD Console)" src.build_path = /obj/structure/machinery/computer/rdconsole/core - to_chat(user, SPAN_NOTICE(" Access protocols set to default.")) - - + to_chat(user, SPAN_NOTICE("Access protocols set to default.")) diff --git a/code/game/objects/items/circuitboards/machine.dm b/code/game/objects/items/circuitboards/machine.dm index ad4c31cb11e9..248d0d5c8885 100644 --- a/code/game/objects/items/circuitboards/machine.dm +++ b/code/game/objects/items/circuitboards/machine.dm @@ -141,7 +141,7 @@ to destroy them and players will be able to make replacements. if(HAS_TRAIT(I, TRAIT_TOOL_SCREWDRIVER)) machine_dir = turn(machine_dir, 90) init_dirs = machine_dir - user.visible_message(SPAN_NOTICE("\The [user] adjusts the jumper on the [src]'s port configuration pins."), SPAN_NOTICE("You adjust the jumper on the port configuration pins. Now set to [dir2text(machine_dir)].")) + user.visible_message(SPAN_NOTICE("[user] adjusts the jumper on [src]'s port configuration pins."), SPAN_NOTICE("You adjust the jumper on the port configuration pins. Now set to [dir2text(machine_dir)].")) return /obj/item/circuitboard/machine/unary_atmos/get_examine_text(mob/user) @@ -300,5 +300,3 @@ to destroy them and players will be able to make replacements. // Board itself is high tech. Coils have to be ordered from cargo or salvaged from existing SMESs. frame_desc = "Requires 1 superconducting magnetic coil and 30 wires." req_components = list(/obj/item/stock_parts/smes_coil = 1, /obj/item/stack/cable_coil = 30) - - diff --git a/code/game/objects/items/devices/cloaking.dm b/code/game/objects/items/devices/cloaking.dm index 05e7786744e2..b0c5ed799977 100644 --- a/code/game/objects/items/devices/cloaking.dm +++ b/code/game/objects/items/devices/cloaking.dm @@ -47,12 +47,12 @@ src.add_fingerprint(user) if(chameleon_on) user.alpha = 25 - to_chat(user, SPAN_NOTICE("You activate the [src].")) + to_chat(user, SPAN_NOTICE("You activate [src].")) spark_system.start() src.icon_state = "shield1" else user.alpha = initial(user.alpha) - to_chat(user, SPAN_NOTICE("You deactivate the [src].")) + to_chat(user, SPAN_NOTICE("You deactivate [src].")) src.icon_state = "shield0" spark_system.start() diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 40ef8792aedb..3f285b358fb2 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -121,7 +121,7 @@ if(target.status != LIGHT_OK) if(CanUse(U)) if(!Use(U)) return - to_chat(U, SPAN_NOTICE("You replace the [target.fitting] with the [src].")) + to_chat(U, SPAN_NOTICE("You replace the [target.fitting] with [src].")) if(target.status != LIGHT_EMPTY) diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm index d388e06b9fa7..e0f65a4b31ec 100644 --- a/code/game/objects/items/devices/suit_cooling.dm +++ b/code/game/objects/items/devices/suit_cooling.dm @@ -110,7 +110,7 @@ cell.add_fingerprint(user) cell.update_icon() - to_chat(user, "You remove the [src.cell].") + to_chat(user, "You remove [cell].") src.cell = null updateicon() return @@ -121,7 +121,7 @@ else turn_on() if (on) - to_chat(user, "You switch on the [src].") + to_chat(user, "You switch on [src].") /obj/item/device/suit_cooling_unit/attackby(obj/item/W as obj, mob/user as mob) if (HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER)) @@ -137,12 +137,12 @@ if (istype(W, /obj/item/cell)) if(cover_open) if(cell) - to_chat(user, "There is a [cell] already installed here.") + to_chat(user, "There is \a [cell] already installed here.") else if(user.drop_held_item()) W.forceMove(src) cell = W - to_chat(user, "You insert the [cell].") + to_chat(user, "You insert [cell].") updateicon() return @@ -169,7 +169,7 @@ if (cover_open) if(cell) - . += "The panel is open, exposing the [cell]." + . += "The panel is open, exposing [cell]." else . += "The panel is open." diff --git a/code/game/objects/items/devices/teleportation.dm b/code/game/objects/items/devices/teleportation.dm index c65286969786..793f399ecdf0 100644 --- a/code/game/objects/items/devices/teleportation.dm +++ b/code/game/objects/items/devices/teleportation.dm @@ -49,7 +49,7 @@ return var/turf/current_location = get_turf(usr)//What turf is the user on? if(!current_location || is_admin_level(current_location.z))//If turf was not found or they're on z level 2. - to_chat(usr, "The [src] is malfunctioning.") + to_chat(usr, "[src] is malfunctioning.") return if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf)))) usr.set_interaction(src) @@ -177,4 +177,3 @@ P.creator = src src.add_fingerprint(user) return - diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index b3d433727946..6fc526936809 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -47,7 +47,7 @@ user.temp_drop_inv_item(A) attached_device = A A.forceMove(src) - to_chat(user, SPAN_NOTICE("You attach the [item] to the valve controls and secure it.")) + to_chat(user, SPAN_NOTICE("You attach [item] to the valve controls and secure it.")) A.holder = src A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb). diff --git a/code/game/objects/items/explosives/explosive.dm b/code/game/objects/items/explosives/explosive.dm index 0c482e8db9e7..4483372c9b85 100644 --- a/code/game/objects/items/explosives/explosive.dm +++ b/code/game/objects/items/explosives/explosive.dm @@ -262,8 +262,8 @@ if(falloff_mode == EXPLOSION_FALLOFF_SHAPE_LINEAR) falloff_mode = EXPLOSION_FALLOFF_SHAPE_EXPONENTIAL - to_chat(usr, SPAN_NOTICE("You enable the [src]'s blast wave dampener, limiting the blast radius.")) + to_chat(usr, SPAN_NOTICE("You enable [src]'s blast wave dampener, limiting the blast radius.")) else falloff_mode = EXPLOSION_FALLOFF_SHAPE_LINEAR - to_chat(usr, SPAN_NOTICE("You disable the [src]'s blast wave dampener, restoring the blast radius to full.")) + to_chat(usr, SPAN_NOTICE("You disable [src]'s blast wave dampener, restoring the blast radius to full.")) playsound(loc, 'sound/items/Screwdriver2.ogg', 25, 0, 6) diff --git a/code/game/objects/items/explosives/grenades/chem_grenade.dm b/code/game/objects/items/explosives/grenades/chem_grenade.dm index e975603d45d8..48430aacecc9 100644 --- a/code/game/objects/items/explosives/grenades/chem_grenade.dm +++ b/code/game/objects/items/explosives/grenades/chem_grenade.dm @@ -1,5 +1,5 @@ /obj/item/explosive/grenade/custom - name = "Custom grenade" + name = "custom grenade" icon_state = "grenade_custom" desc = "A custom chemical grenade with an M40 casing. This one is made to fit into underslung grenade launchers, but can also be thrown by hand." w_class = SIZE_SMALL @@ -17,7 +17,7 @@ ..() /obj/item/explosive/grenade/custom/large - name = "Large Custom Grenade" + name = "large custom grenade" desc = "A custom chemical grenade with an M15 casing. This casing has a higher explosive capacity than the M40 variant." icon_state = "large_grenade_custom" allowed_containers = list(/obj/item/reagent_container/glass) @@ -33,7 +33,7 @@ /obj/item/explosive/grenade/custom/metal_foam - name = "Metal-Foam Grenade" + name = "metal-foam grenade" desc = "Used for emergency sealing of air breaches." assembly_stage = ASSEMBLY_LOCKED harmful = FALSE @@ -56,7 +56,7 @@ update_icon() /obj/item/explosive/grenade/custom/incendiary - name = "Incendiary Grenade" + name = "incendiary grenade" desc = "Used for clearing rooms of living things." assembly_stage = ASSEMBLY_LOCKED has_blast_wave_dampener = FALSE @@ -79,7 +79,7 @@ update_icon() /obj/item/explosive/grenade/custom/flare - name = "M40-F flare grenade" + name = "\improper M40-F flare grenade" desc = "Chemical flare in a grenade form, designed for compatibility with most standard issue launchers." assembly_stage = ASSEMBLY_LOCKED has_blast_wave_dampener = FALSE @@ -103,7 +103,7 @@ update_icon() /obj/item/explosive/grenade/custom/large/flare - name = "M15-F flare grenade" + name = "\improper M15-F flare grenade" desc = "Chemical flare in a grenade form, expanded variant. The casing is too large to fit most launchers." assembly_stage = ASSEMBLY_LOCKED has_blast_wave_dampener = FALSE diff --git a/code/game/objects/items/explosives/mine.dm b/code/game/objects/items/explosives/mine.dm index 45478f2828f4..768a32c003fa 100644 --- a/code/game/objects/items/explosives/mine.dm +++ b/code/game/objects/items/explosives/mine.dm @@ -309,7 +309,7 @@ map_deployed = TRUE /obj/item/explosive/mine/custom - name = "Custom mine" + name = "custom mine" desc = "A custom chemical mine built from an M20 casing." icon_state = "m20_custom" customizable = TRUE diff --git a/code/game/objects/items/explosives/plastic.dm b/code/game/objects/items/explosives/plastic.dm index ac0a2263cd5c..071ff3458a91 100644 --- a/code/game/objects/items/explosives/plastic.dm +++ b/code/game/objects/items/explosives/plastic.dm @@ -184,7 +184,7 @@ //vehicle interior stuff checks if(SSinterior.in_interior(target)) - to_chat(user, SPAN_WARNING("It's too cramped in here to deploy \the [src].")) + to_chat(user, SPAN_WARNING("It's too cramped in here to deploy [src].")) return FALSE if(istype(target, /obj/effect) || istype(target, /obj/structure/machinery)) @@ -195,7 +195,7 @@ if(istype(target, /turf/closed/wall)) var/turf/closed/wall/W = target if(W.hull) - to_chat(user, SPAN_WARNING("You are unable to stick \the [src] to the [W]!")) + to_chat(user, SPAN_WARNING("You are unable to stick [src] to [W]!")) return FALSE if(istype(target, /obj/structure/window)) @@ -301,7 +301,7 @@ prime(TRUE) /obj/item/explosive/plastic/custom - name = "Custom plastic explosive" + name = "custom plastic explosive" desc = "A custom plastic explosive." icon_state = "custom_plastic_explosive" overlay_image = "custom_plastic_explosive_sensing" diff --git a/code/game/objects/items/frames/camera.dm b/code/game/objects/items/frames/camera.dm index 59bc2844868e..efe697c3944b 100644 --- a/code/game/objects/items/frames/camera.dm +++ b/code/game/objects/items/frames/camera.dm @@ -167,7 +167,7 @@ to_chat(user, SPAN_WARNING("\The [WT] needs to be on!")) return 0 - to_chat(user, SPAN_NOTICE("You start to weld the [src]..")) + to_chat(user, SPAN_NOTICE("You start to weld [src]..")) playsound(src.loc, 'sound/items/Welder.ogg', 25, 1) WT.eyecheck(user) if(do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) diff --git a/code/game/objects/items/lightstick.dm b/code/game/objects/items/lightstick.dm index 70418049994b..89ce2c00762e 100644 --- a/code/game/objects/items/lightstick.dm +++ b/code/game/objects/items/lightstick.dm @@ -22,7 +22,7 @@ /obj/item/lightstick/Crossed(mob/living/O) if(anchored && prob(trample_chance) && can_trample) if(!istype(O,/mob/living/carbon/xenomorph/larva)) - visible_message(SPAN_DANGER("[O] tramples the [src]!")) + visible_message(SPAN_DANGER("[O] tramples [src]!")) playsound(src, 'sound/weapons/Genhit.ogg', 25, 1) if(istype(O,/mob/living/carbon/xenomorph)) if(prob(40)) @@ -46,17 +46,17 @@ if(!anchored)//If planted return - to_chat(user, "You start pulling out \the [src].") - if(!do_after(user,20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + to_chat(user, "You start pulling out [src].") + if(!do_after(user, 2 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) return anchored = FALSE - user.visible_message("[user.name] removes \the [src] from the ground.","You remove the [src] from the ground.") + user.visible_message("[user.name] removes [src] from the ground.", "You remove [src] from the ground.") icon_state = "lightstick_[s_color][anchored]" set_light(0) pixel_x = 0 pixel_y = 0 - playsound(user, 'sound/weapons/Genhit.ogg', 25, 1) + playsound(user, 'sound/weapons/Genhit.ogg', 25, TRUE) //Red /obj/item/lightstick/planted diff --git a/code/game/objects/items/misc.dm b/code/game/objects/items/misc.dm index 50c5cd75551b..1699cb24ef39 100644 --- a/code/game/objects/items/misc.dm +++ b/code/game/objects/items/misc.dm @@ -134,7 +134,7 @@ return stored_item = object mobber.drop_inv_item_to_loc(object, src) - to_chat(mobber, SPAN_NOTICE("You slide the [object] into [src].")) + to_chat(mobber, SPAN_NOTICE("You slide [object] into [src].")) playsound(mobber, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) update_icon() break diff --git a/code/game/objects/items/reagent_containers/food/condiment.dm b/code/game/objects/items/reagent_containers/food/condiment.dm index a13489f0af1e..7b9358b81826 100644 --- a/code/game/objects/items/reagent_containers/food/condiment.dm +++ b/code/game/objects/items/reagent_containers/food/condiment.dm @@ -23,7 +23,7 @@ return FALSE if(M == user) - to_chat(M, SPAN_NOTICE(" You swallow some of contents of the [src].")) + to_chat(M, SPAN_NOTICE("You swallow some of contents of [src].")) else if(istype(M, /mob/living/carbon/human)) user.affected_message(M, @@ -202,7 +202,7 @@ /obj/item/reagent_container/food/condiment/hotsauce/franks name = "\improper Frank's Red Hot bottle" desc = "A bottle of Weyland-Yutani brand Frank's Red Hot hot sauce." - desc_lore = "Supposedly designed as a middle-ground flavor between ketchup and cayenne, this brand of spicy goodness achieved critical acclaim throughout UA space within both colonies and vessels alike. The sudden and widespread adoption was curiously timed with the near-simultaneous shelving of the original Frank's 'ULTRA' hot sauce." + desc_lore = "Supposedly designed as a middle-ground flavor between ketchup and cayenne, this brand of spicy goodness achieved critical acclaim throughout UA space within both colonies and vessels alike. The sudden and widespread adoption was curiously timed with the near-simultaneous shelving of the original Frank's 'ULTRA' hot sauce." icon_state = "hotsauce_franks" item_state = "hotsauce_franks" diff --git a/code/game/objects/items/reagent_containers/food/fortunecookie.dm b/code/game/objects/items/reagent_containers/food/fortunecookie.dm index 270bd4d7c44a..6077541acd84 100644 --- a/code/game/objects/items/reagent_containers/food/fortunecookie.dm +++ b/code/game/objects/items/reagent_containers/food/fortunecookie.dm @@ -75,7 +75,7 @@ to_chat(user,SPAN_WARNING("[src] is cracked open! How are you gonna slip something in that?")) else if(!cookiefortune) - to_chat(user, SPAN_NOTICE("You slip the paper into the [src].")) + to_chat(user, SPAN_NOTICE("You slip the paper into [src].")) cookiefortune = W user.drop_inv_item_to_loc(W, src) else diff --git a/code/game/objects/items/reagent_containers/food/sandwich.dm b/code/game/objects/items/reagent_containers/food/sandwich.dm index 1b7d61eaddad..511c0c042be1 100644 --- a/code/game/objects/items/reagent_containers/food/sandwich.dm +++ b/code/game/objects/items/reagent_containers/food/sandwich.dm @@ -18,7 +18,7 @@ /obj/item/reagent_container/food/snacks/csandwich/attackby(obj/item/W as obj, mob/user as mob) if(istype(W, /obj/item/reagent_container/food/snacks/csandwich)) //No sandwitch inception, it causes some bugs... - to_chat(user, SPAN_NOTICE(" You can't put a [W] in the [src].")) + to_chat(user, SPAN_NOTICE("You can't put \a [W] in [src].")) return var/sandwich_limit = 4 From ff590119e9f58ad94d042200b68f8572972a8f2b Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 4 Dec 2023 10:18:07 +0000 Subject: [PATCH 06/38] Automatic changelog for PR #5087 [ci skip] --- html/changelogs/AutoChangeLog-pr-5087.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5087.yml diff --git a/html/changelogs/AutoChangeLog-pr-5087.yml b/html/changelogs/AutoChangeLog-pr-5087.yml new file mode 100644 index 000000000000..bbcdd48cb6a9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5087.yml @@ -0,0 +1,4 @@ +author: "SabreML" +delete-after: True +changes: + - spellcheck: "Fixed instances of \"The the\" and \"A the\" in chat messages so that they're just \"The\" instead. (Part 1)" \ No newline at end of file From bfd182d6ddc0e99930641c295414d0433444ebde Mon Sep 17 00:00:00 2001 From: Tsurupeta <41485301+Tsurupeta@users.noreply.github.com> Date: Mon, 4 Dec 2023 11:30:56 +0100 Subject: [PATCH 07/38] fix(preferences): fixes saving of certain preferences (#5110) # About the pull request Fixed the saving of certain prefs, like DISABLING RADIAL MENUS (important!!!) among others. I'm too lazy to list them out so heres a screenshot with list of prefs that are fixed. ![image](https://github.com/cmss13-devs/cmss13/assets/41485301/83d14b48-2158-4027-899b-f7a80f34dc61) # Changelog :cl: fix: fixed saving of certain preferences. /:cl: --- code/modules/client/preferences_savefile.dm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index e80e5bd8c5ba..4ba42c0e39c3 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -188,11 +188,6 @@ S["co_affiliation"] >> affiliation S["yautja_status"] >> yautja_status S["synth_status"] >> synth_status - S["key_bindings"] >> key_bindings - check_keybindings() - - var/list/remembered_key_bindings - S["remembered_key_bindings"] >> remembered_key_bindings S["lang_chat_disabled"] >> lang_chat_disabled S["show_permission_errors"] >> show_permission_errors @@ -206,6 +201,10 @@ S["autofit_viewport"] >> auto_fit_viewport S["adaptive_zoom"] >> adaptive_zoom S["tooltips"] >> tooltips + S["key_bindings"] >> key_bindings + + var/list/remembered_key_bindings + S["remembered_key_bindings"] >> remembered_key_bindings //Sanitize ooccolor = sanitize_hexcolor(ooccolor, CONFIG_GET(string/ooc_color_default)) @@ -274,6 +273,8 @@ pref_job_slots = sanitize_islist(pref_job_slots, list()) vars["fps"] = fps + check_keybindings() + if(remembered_key_bindings) for(var/i in GLOB.keybindings_by_name) if(!(i in remembered_key_bindings)) From 0b133929724c569aff3945749c65559c4e65e4c5 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 4 Dec 2023 10:39:24 +0000 Subject: [PATCH 08/38] Automatic changelog for PR #5110 [ci skip] --- html/changelogs/AutoChangeLog-pr-5110.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5110.yml diff --git a/html/changelogs/AutoChangeLog-pr-5110.yml b/html/changelogs/AutoChangeLog-pr-5110.yml new file mode 100644 index 000000000000..a70a7d389a8f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5110.yml @@ -0,0 +1,4 @@ +author: "Tsurupeta" +delete-after: True +changes: + - bugfix: "fixed saving of certain preferences." \ No newline at end of file From a462a9178957a36f7a84d6b0efe7a22d8ca62f40 Mon Sep 17 00:00:00 2001 From: Julian56 <117036822+Huffie56@users.noreply.github.com> Date: Mon, 4 Dec 2023 21:49:41 +0100 Subject: [PATCH 09/38] qol standartize how IO vendor is organized to be more in line with how other marine vendor are organize. (#4999) # About the pull request the idea is to make IO vendor organize like the other squad vendor are so that players can orient themself in it way quicker when they change roles... add new sections(Binoculars, Utilities, Helmet Optics, Radio keys, and fill them with current item in IO vendor. change the section called "Supplies" to "engineering supplies". move pouch section just above utilities section to make it more like other vendors. # Explain why it's good for the game # Testing Photographs and Procedure
      Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
      ` tags.
      # Changelog :cl: add: added new sections(Binoculars, Utilities, Helmet Optics, Radio keys, and fill them with items already in the vendor. qol: move the section called pouches just above utilities section. qol: changed the section called "Supplies" to "engineering supplies" and fill it with C4 and APC circuit board . /:cl: --------- Co-authored-by: Julien --- .../vendor_types/intelligence_officer.dm | 42 +++++++++++-------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/code/game/machinery/vending/vendor_types/intelligence_officer.dm b/code/game/machinery/vending/vendor_types/intelligence_officer.dm index ad10037ccfe1..93d31fe13253 100644 --- a/code/game/machinery/vending/vendor_types/intelligence_officer.dm +++ b/code/game/machinery/vending/vendor_types/intelligence_officer.dm @@ -4,26 +4,11 @@ GLOBAL_LIST_INIT(cm_vending_gear_intelligence_officer, list( list("INTELLIGENCE SET (MANDATORY)", 0, null, null, null), list("Essential Intelligence Set", 0, /obj/effect/essentials_set/intelligence_officer, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), - list("SUPPLIES", 0, null, null, null), + list("ENGINEERING SUPPLIES", 0, null, null, null), list("Power Control Module", 5, /obj/item/circuitboard/apc, null, VENDOR_ITEM_REGULAR), - list("Binoculars", 5, /obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), - list("Night Vision Optic", 25, /obj/item/device/helmet_visor/night_vision, null, VENDOR_ITEM_RECOMMENDED), - list("Data Detector", 5, /obj/item/device/motiondetector/intel, null, VENDOR_ITEM_REGULAR), - list("Intel Radio Encryption Key", 5, /obj/item/device/encryptionkey/intel, null, VENDOR_ITEM_REGULAR), - list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), - list("Fulton Recovery Device", 10, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), - list("Motion Detector", 15, /obj/item/device/motiondetector, null, VENDOR_ITEM_RECOMMENDED), list("Plastic Explosive", 10, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), - list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), - list("Medical Helmet Optic", 5, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), - list("POUCHES", 0, null, null, null), - list("Large Magazine Pouch", 10, /obj/item/storage/pouch/magazine/large, null, VENDOR_ITEM_REGULAR), - list("Large Shotgun Shell Pouch", 10, /obj/item/storage/pouch/shotgun/large, null, VENDOR_ITEM_REGULAR), - list("Autoinjector Pouch (Full)", 15, /obj/item/storage/pouch/autoinjector/full, null, VENDOR_ITEM_RECOMMENDED), - list("Machete Pouch (Full)", 10, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), - list("PRIMARY AMMUNITION", 0, null, null, null), list("M4RA AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR), list("M39 AP Magazine (10x20mm)", 10, /obj/item/ammo_magazine/smg/m39/ap , null, VENDOR_ITEM_REGULAR), @@ -35,7 +20,30 @@ GLOBAL_LIST_INIT(cm_vending_gear_intelligence_officer, list( list("M44 Heavy Speed Loader (.44)", 10, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR), list("M4A3 HP Magazine", 5, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR), list("M4A3 AP Magazine", 5, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR), - list("VP78 Magazine", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR) + list("VP78 Magazine", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), + + list("POUCHES", 0, null, null, null), + list("Large Magazine Pouch", 10, /obj/item/storage/pouch/magazine/large, null, VENDOR_ITEM_REGULAR), + list("Large Shotgun Shell Pouch", 10, /obj/item/storage/pouch/shotgun/large, null, VENDOR_ITEM_REGULAR), + list("Autoinjector Pouch (Full)", 15, /obj/item/storage/pouch/autoinjector/full, null, VENDOR_ITEM_RECOMMENDED), + list("Machete Pouch (Full)", 10, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), + list("Fulton Device Stack", 10, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), + list("Motion Detector", 15, /obj/item/device/motiondetector, null, VENDOR_ITEM_RECOMMENDED), + list("Data Detector", 5, /obj/item/device/motiondetector/intel, null, VENDOR_ITEM_REGULAR), + + list("BINOCULARS", 0, null, null, null), + list("Binoculars", 5, /obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Medical Helmet Optic", 5, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), + list("Night Vision Optic", 25, /obj/item/device/helmet_visor/night_vision, null, VENDOR_ITEM_RECOMMENDED), + + list("RADIO KEYS", 0, null, null, null), + list("Intel Radio Encryption Key", 5, /obj/item/device/encryptionkey/intel, null, VENDOR_ITEM_REGULAR), )) /obj/structure/machinery/cm_vending/gear/intelligence_officer From 5d21afaab2b1c821278d34b9e496716f646969c4 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 4 Dec 2023 20:59:17 +0000 Subject: [PATCH 10/38] Automatic changelog for PR #4999 [ci skip] --- html/changelogs/AutoChangeLog-pr-4999.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4999.yml diff --git a/html/changelogs/AutoChangeLog-pr-4999.yml b/html/changelogs/AutoChangeLog-pr-4999.yml new file mode 100644 index 000000000000..0d5d09bb4c57 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4999.yml @@ -0,0 +1,6 @@ +author: "Huffie56" +delete-after: True +changes: + - rscadd: "added new sections(Binoculars, Utilities, Helmet Optics, Radio keys, and fill them with items already in the vendor." + - qol: "move the section called pouches just above utilities section." + - qol: "changed the section called \"Supplies\" to \"engineering supplies\" and fill it with C4 and APC circuit board ." \ No newline at end of file From faefea70e0ebd88dc75e39abf2e152b728e77cef Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Mon, 4 Dec 2023 22:44:49 +0000 Subject: [PATCH 11/38] Runtime fix and code maintenance for vendors (#5115) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # About the pull request #5066 introduced a runtime in certain vendors when attacking them with anything. Also removes duplicate `attackby()` definition. ``` [2023-12-03 16:04:24.708] runtime error: undefined variable /obj/item/storage/belt/marine/var/token_type - proc name: redeem token (/obj/structure/machinery/cm_vending/proc/redeem_token) - source file: code/game/machinery/vending/cm_vending.dm,453 - usr: William Henderson (/mob/living/carbon/human) - src: the ColMarTech Surplus Uniform... (/obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep) - usr.loc: the floor (186,73,3) (/turf/open/floor/almayer) - src.loc: the floor (185,73,3) (/turf/open/floor/almayer) - call stack: - the ColMarTech Surplus Uniform... (/obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep): redeem token(the M276 pattern ammo load rig (/obj/item/storage/belt/marine), William Henderson (/mob/living/carbon/human)) - the ColMarTech Surplus Uniform... (/obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep): attackby(the M276 pattern ammo load rig (/obj/item/storage/belt/marine), William Henderson (/mob/living/carbon/human), /list (/list)) - the ColMarTech Surplus Uniform... (/obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep): attackby(the M276 pattern ammo load rig (/obj/item/storage/belt/marine), William Henderson (/mob/living/carbon/human), /list (/list)) - William Henderson (/mob/living/carbon/human): click adjacent(the ColMarTech Surplus Uniform... (/obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep), the M276 pattern ammo load rig (/obj/item/storage/belt/marine), /list (/list)) - William Henderson (/mob/living/carbon/human): do click(the ColMarTech Surplus Uniform... (/obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep), the floor (185,73,3) (/turf/open/floor/almayer), "icon-x=1;icon-y=22;left=1;butt...") - ***** (/client): Click(the ColMarTech Surplus Uniform... (/obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep), the floor (185,73,3) (/turf/open/floor/almayer), "mapwindow.map", "icon-x=1;icon-y=22;left=1;butt...") ``` # Explain why it's good for the game # Testing Photographs and Procedure
      Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
      ` tags.
      # Changelog :cl: fix: Fixes a runtime in vendors /🆑 --- code/game/machinery/vending/cm_vending.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/game/machinery/vending/cm_vending.dm b/code/game/machinery/vending/cm_vending.dm index b0a09dcd1767..0745f05ab2d1 100644 --- a/code/game/machinery/vending/cm_vending.dm +++ b/code/game/machinery/vending/cm_vending.dm @@ -441,13 +441,6 @@ GLOBAL_LIST_EMPTY(vending_products) tgui_interact(user) /// Handles redeeming coin tokens. -/obj/structure/machinery/cm_vending/attackby(obj/item/attacking_item, mob/user) - if(!istype(attacking_item, /obj/item/coin/marine)) - ..() - if(!can_access_to_vend(user, ignore_hack = TRUE)) - return FALSE - redeem_token(attacking_item, user) - /obj/structure/machinery/cm_vending/proc/redeem_token(obj/item/coin/marine/token, mob/user) var/reward_typepath switch(token.token_type) @@ -766,6 +759,13 @@ GLOBAL_LIST_EMPTY(vending_products) hack_access(user) return TRUE + ///If we want to redeem a token + else if(istype(W, /obj/item/coin/marine)) + if(!can_access_to_vend(user, ignore_hack = TRUE)) + return FALSE + . = redeem_token(W, user) + return + ..() /obj/structure/machinery/cm_vending/proc/get_listed_products(mob/user) From b6404f6edb5edf967296fe68ca591638d5347536 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 4 Dec 2023 22:58:50 +0000 Subject: [PATCH 12/38] Automatic changelog for PR #5115 [ci skip] --- html/changelogs/AutoChangeLog-pr-5115.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5115.yml diff --git a/html/changelogs/AutoChangeLog-pr-5115.yml b/html/changelogs/AutoChangeLog-pr-5115.yml new file mode 100644 index 000000000000..a8f103230b4f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5115.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - bugfix: "Fixes a runtime in vendors\n/🆑" \ No newline at end of file From c6ae32795adad482033320511c07f1fd5774f47f Mon Sep 17 00:00:00 2001 From: Kozmos <31109792+HeresKozmos@users.noreply.github.com> Date: Mon, 4 Dec 2023 22:45:44 +0000 Subject: [PATCH 13/38] Kutjevo Tunnels Upgrade (#5051) # About the pull request As part of my ongoing series of PRs to update tunnel placements, especially on older maps, Kutjevo has had its original five tunnels replaced with 7 new tunnels with more of a focus on the center and right sides of the map. # Explain why it's good for the game Kutjevo's tunnels I find are mediocre at best, to start with there's a very limited quantity of five tunnels, which was like Sorokyne until recently, and of which three of them I believed to be mediocre at best and the other two to be not particularly useful most times. The scrubland tunnel is out in the open with no natural cover and it is rather close to the LZ, this attempts to move it further backwards and make it a little more out of the way. The stony fields tunnel is not terrible but it suffers from a lack of use since there was already a better option between botany and medical and from personal experience I find the majority of landings are at the north LZ rather than the south LZ. Since it's so out of the way it can become a free shortcut to the comms tower in the late game should it spawn at Hydroelectric. The afforementioned botany-medical tunnel isn't bad, it's just plainly in the open and it doesn't last particularly long once a foothold has been established in medical or botany. The two existing tunnels inside the caves are mediocre at best and from my personal experience any normal hive tends to be just far enough away from them to make an in-Hive tunnel a requirement. I've opted to give both medical and botany their own "dedicated" tunnels in the medical park and the NE corner of botany. I have moved the scrubland tunnel further east behind some cover. The other tunnels provide better access to the caves and the eastern construction area in general. # Testing Photographs and Procedure (The lines are just visual aids to make finding the tunnel spots easier, they are not indicative of other functions*) Kutjevo's Existing Tunnels: ![Kutjevo Tunnel Map V2 0](https://github.com/cmss13-devs/cmss13/assets/31109792/addc07ed-c272-4e8c-94a1-2c25558b836b) Kutjevo's New Tunnels: ![Kutjevo Tunnel Map V3 0](https://github.com/cmss13-devs/cmss13/assets/31109792/4fd97c14-4d62-4b64-961e-aaf61ba8b32e) # Changelog :cl: mappadd: Added 7 new tunnels to Kutjevo maptweak: Removed the 5 original tunnels on Kutjevo /:cl: --- maps/map_files/Kutjevo/Kutjevo.dmm | 64 +++++++++++++++--------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/maps/map_files/Kutjevo/Kutjevo.dmm b/maps/map_files/Kutjevo/Kutjevo.dmm index d2d3111364df..2e1ebb3ea204 100644 --- a/maps/map_files/Kutjevo/Kutjevo.dmm +++ b/maps/map_files/Kutjevo/Kutjevo.dmm @@ -576,6 +576,10 @@ }, /turf/open/auto_turf/sand/layer0, /area/kutjevo/exterior/scrubland) +"aKg" = ( +/obj/structure/tunnel, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/interior/colony_South) "aKl" = ( /obj/structure/machinery/landinglight/ds1{ dir = 1 @@ -984,7 +988,7 @@ "bsq" = ( /obj/structure/tunnel, /turf/open/auto_turf/sand/layer0, -/area/kutjevo/interior/colony_central) +/area/kutjevo/interior/colony_north) "bsw" = ( /obj/structure/platform/kutjevo/smooth{ dir = 8 @@ -8853,11 +8857,9 @@ /turf/open/floor/almayer/research/containment/floor2, /area/kutjevo/interior/complex/med/auto_doc) "lZT" = ( -/obj/structure/tunnel{ - id = "hole1" - }, -/turf/open/auto_turf/sand/layer2, -/area/kutjevo/interior/colony_north) +/obj/structure/tunnel, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/construction) "lZZ" = ( /obj/structure/platform_decoration/kutjevo{ dir = 4 @@ -9796,11 +9798,9 @@ /turf/open/desert/desert_shore/shore_corner2, /area/kutjevo/exterior/runoff_river) "niP" = ( -/obj/structure/tunnel{ - id = "hole3" - }, +/obj/structure/tunnel, /turf/open/auto_turf/sand/layer0, -/area/kutjevo/exterior/complex_border/botany_medical_cave) +/area/kutjevo/exterior/runoff_river) "niT" = ( /obj/structure/flora/grass/tallgrass/desert/corner{ dir = 1 @@ -11982,6 +11982,10 @@ }, /turf/open/floor/kutjevo/colors/cyan/inner_corner, /area/kutjevo/interior/complex/med/triage) +"pVH" = ( +/obj/structure/tunnel, +/turf/open/auto_turf/sand/layer2, +/area/kutjevo/exterior/runoff_river) "pWe" = ( /obj/structure/platform_decoration/kutjevo/rock{ dir = 1 @@ -12502,11 +12506,9 @@ }, /area/kutjevo/interior/oob) "qLV" = ( -/obj/structure/tunnel{ - id = "hole2" - }, -/turf/open/auto_turf/sand/layer1, -/area/kutjevo/exterior/stonyfields) +/obj/structure/tunnel, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/interior/colony_S_East) "qMC" = ( /obj/structure/machinery/light{ dir = 4 @@ -16058,11 +16060,9 @@ /turf/open/floor/kutjevo/multi_tiles, /area/kutjevo/exterior/runoff_bridge) "vzy" = ( -/obj/structure/tunnel{ - id = "hole4" - }, -/turf/open/auto_turf/sand/layer0, -/area/kutjevo/exterior/scrubland) +/obj/structure/tunnel, +/turf/open/gm/dirtgrassborder2, +/area/kutjevo/exterior/complex_border/med_park) "vzC" = ( /obj/structure/platform/kutjevo{ dir = 1 @@ -28074,7 +28074,7 @@ sYd bXl bXl bXl -vzy +bXl sYd bXl sYd @@ -31570,7 +31570,7 @@ bEp bEp bEp bEp -tKY +niP dic dic dic @@ -33635,7 +33635,7 @@ xJg xJg xJg xJg -qLV +xJg jfQ jfQ xJg @@ -34919,7 +34919,7 @@ jhS jhS jhS wff -niP +wff wff wff jhS @@ -35547,7 +35547,7 @@ dxF mxB mxB mxB -quy +vzy tUm wYp bGV @@ -37793,7 +37793,7 @@ nKh nKh nKh wtH -sbX +pVH mtS fPH dTM @@ -42736,7 +42736,7 @@ bkR wTt bkR bEH -lZT +bEH hUk hUk hUk @@ -43083,7 +43083,7 @@ hUk hUk hUk hUk -xWK +lZT nlA xWK xWK @@ -46807,7 +46807,7 @@ wXd wXd wXd wXd -mMH +aKg bpj npL bpj @@ -48730,7 +48730,7 @@ bkR bkR bkR wTt -wTt +bsq hUk hUk hUk @@ -50104,7 +50104,7 @@ kZz feg feg feg -bsq +uiK mnT mnT mnT @@ -54310,7 +54310,7 @@ ptY ebB ebB bOc -ptY +qLV dxF dxF dxF From 6782c7e5997fc641b107efddcc9b9b9596fcbb04 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 5 Dec 2023 01:12:40 +0000 Subject: [PATCH 14/38] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4999.yml | 6 ------ html/changelogs/AutoChangeLog-pr-5046.yml | 5 ----- html/changelogs/AutoChangeLog-pr-5087.yml | 4 ---- html/changelogs/AutoChangeLog-pr-5110.yml | 4 ---- html/changelogs/AutoChangeLog-pr-5115.yml | 4 ---- html/changelogs/archive/2023-12.yml | 17 +++++++++++++++++ 6 files changed, 17 insertions(+), 23 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4999.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-5046.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-5087.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-5110.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-5115.yml diff --git a/html/changelogs/AutoChangeLog-pr-4999.yml b/html/changelogs/AutoChangeLog-pr-4999.yml deleted file mode 100644 index 0d5d09bb4c57..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4999.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Huffie56" -delete-after: True -changes: - - rscadd: "added new sections(Binoculars, Utilities, Helmet Optics, Radio keys, and fill them with items already in the vendor." - - qol: "move the section called pouches just above utilities section." - - qol: "changed the section called \"Supplies\" to \"engineering supplies\" and fill it with C4 and APC circuit board ." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5046.yml b/html/changelogs/AutoChangeLog-pr-5046.yml deleted file mode 100644 index 240a8760885c..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5046.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "silencer_pl" -delete-after: True -changes: - - admin: "Recieving prayers now makes a sound" - - admin: "Prayers and USCM emergency messages are now better highlighted for mods/admins" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5087.yml b/html/changelogs/AutoChangeLog-pr-5087.yml deleted file mode 100644 index bbcdd48cb6a9..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5087.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SabreML" -delete-after: True -changes: - - spellcheck: "Fixed instances of \"The the\" and \"A the\" in chat messages so that they're just \"The\" instead. (Part 1)" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5110.yml b/html/changelogs/AutoChangeLog-pr-5110.yml deleted file mode 100644 index a70a7d389a8f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5110.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tsurupeta" -delete-after: True -changes: - - bugfix: "fixed saving of certain preferences." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5115.yml b/html/changelogs/AutoChangeLog-pr-5115.yml deleted file mode 100644 index a8f103230b4f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5115.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - bugfix: "Fixes a runtime in vendors\n/🆑" \ No newline at end of file diff --git a/html/changelogs/archive/2023-12.yml b/html/changelogs/archive/2023-12.yml index 8767c1ca1bf0..67ea37a11d6b 100644 --- a/html/changelogs/archive/2023-12.yml +++ b/html/changelogs/archive/2023-12.yml @@ -61,3 +61,20 @@ - code_imp: Adds back-end functionality for token redeeming on cm_vending vendors, and moves synth experimental tools token to use it. - rscadd: Spec tokens are real. +2023-12-05: + Birdtalon: + - bugfix: "Fixes a runtime in vendors\n/\U0001F191" + Huffie56: + - rscadd: added new sections(Binoculars, Utilities, Helmet Optics, Radio keys, and + fill them with items already in the vendor. + - qol: move the section called pouches just above utilities section. + - qol: changed the section called "Supplies" to "engineering supplies" and fill + it with C4 and APC circuit board . + SabreML: + - spellcheck: Fixed instances of "The the" and "A the" in chat messages so that + they're just "The" instead. (Part 1) + Tsurupeta: + - bugfix: fixed saving of certain preferences. + silencer_pl: + - admin: Recieving prayers now makes a sound + - admin: Prayers and USCM emergency messages are now better highlighted for mods/admins From afec307cd76fdce1319919c80a4a4660caa71aee Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Tue, 5 Dec 2023 01:50:34 +0000 Subject: [PATCH 15/38] Fixes a runtime in spiders.dm attackby() (#5114) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # About the pull request ``` [2023-12-03 16:02:14.678] runtime error: Cannot read null.len - proc name: attackby (/obj/effect/spider/attackby) - source file: code/game/objects/effects/spiders.dm,24 - usr: Conner Scott (/mob/living/carbon/human) - src: the spiderling (/obj/effect/spider/spiderling/nogrow) - usr.loc: the floor (90,115,2) (/turf/open/floor/prison) - src.loc: the catwalk (89,116,2) (/turf/open/floor/plating/plating_catwalk/prison) - call stack: - the spiderling (/obj/effect/spider/spiderling/nogrow): attackby(the box of shotgun slugs (/obj/item/ammo_magazine/shotgun/slugs), Conner Scott (/mob/living/carbon/human), /list (/list)) - Conner Scott (/mob/living/carbon/human): click adjacent(the spiderling (/obj/effect/spider/spiderling/nogrow), the box of shotgun slugs (/obj/item/ammo_magazine/shotgun/slugs), /list (/list)) - Conner Scott (/mob/living/carbon/human): do click(the spiderling (/obj/effect/spider/spiderling/nogrow), the catwalk (89,116,2) (/turf/open/floor/plating/plating_catwalk/prison), "icon-x=18;icon-y=15;left=1;but...") - ****** (/client): Click(the spiderling (/obj/effect/spider/spiderling/nogrow), the catwalk (89,116,2) (/turf/open/floor/plating/plating_catwalk/prison), "mapwindow.map", "icon-x=18;icon-y=15;left=1;but...") ``` # Explain why it's good for the game # Testing Photographs and Procedure
      Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
      ` tags.
      # Changelog :cl: fix: Fixes runtime in spiders.dm /🆑 --- code/game/objects/effects/spiders.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index f9b5ddb42f68..69eababfe000 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -21,7 +21,7 @@ return /obj/effect/spider/attackby(obj/item/W, mob/user) - if(W.attack_verb.len) + if(LAZYLEN(W.attack_verb)) visible_message(SPAN_DANGER("\The [src] have been [pick(W.attack_verb)] with \the [W][(user ? "by [user]." : ".")]")) else visible_message(SPAN_DANGER("\The [src] have been attacked with \the [W][(user ? "by [user]." : ".")]")) From 44d22ea0e1b520835b27993626f79fa0b3b46e99 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Tue, 5 Dec 2023 01:58:56 +0000 Subject: [PATCH 16/38] Automatic changelog for PR #5114 [ci skip] --- html/changelogs/AutoChangeLog-pr-5114.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5114.yml diff --git a/html/changelogs/AutoChangeLog-pr-5114.yml b/html/changelogs/AutoChangeLog-pr-5114.yml new file mode 100644 index 000000000000..40d7511129e0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5114.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - bugfix: "Fixes runtime in spiders.dm\n/🆑" \ No newline at end of file From 609dd8d7d7eafa7514c24fcae974061adb635c7b Mon Sep 17 00:00:00 2001 From: SabreML <57483089+SabreML@users.noreply.github.com> Date: Tue, 5 Dec 2023 01:50:56 +0000 Subject: [PATCH 17/38] Fixes a few lowercase chat messages (#5112) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # About the pull request Fixes some chat messages not being properly capitalised. RegEx used to search: `(?:to_chat|visible_message)[^"]*"[a-z]` (I just threw the regex together in a couple of minutes, so I've probably still missed a bunch of cases.) # Explain why it's good for the game Inconsistencies. (And it looks better) # Testing Photographs and Procedure
      Screenshots **Before:** ![old](https://github.com/cmss13-devs/cmss13/assets/57483089/431925fa-2412-46f0-80cf-2967dcc51529) ![old 1](https://github.com/cmss13-devs/cmss13/assets/57483089/362178a8-109c-4754-9cc0-04761375e115) **After:** ![new](https://github.com/cmss13-devs/cmss13/assets/57483089/932a1c6e-3b1d-4785-9b09-3fb246c34b35) ![new 1](https://github.com/cmss13-devs/cmss13/assets/57483089/d5796690-bf34-4561-9aae-4ae03c2fb801) *(Plus a few others, but these are the most common for players.)*
      # Changelog 🆑 spellcheck: Fixed some chat messages which started with a lowercase character. /🆑 --- code/game/machinery/computer/dropship_weapons.dm | 2 +- code/game/objects/items/props/helmetgarb.dm | 2 +- .../objects/items/reagent_containers/food/condiment.dm | 2 +- code/game/objects/items/tools/shovel_tools.dm | 2 +- code/modules/admin/topic/topic.dm | 8 ++++---- code/modules/cm_marines/orbital_cannon.dm | 7 +++---- code/modules/mob/living/carbon/xenomorph/XenoProcs.dm | 2 +- code/modules/mob/mob_transformation_simple.dm | 4 ++-- 8 files changed, 14 insertions(+), 15 deletions(-) diff --git a/code/game/machinery/computer/dropship_weapons.dm b/code/game/machinery/computer/dropship_weapons.dm index fdab92ee4c13..d86b9fc28a28 100644 --- a/code/game/machinery/computer/dropship_weapons.dm +++ b/code/game/machinery/computer/dropship_weapons.dm @@ -64,7 +64,7 @@ power = MATRIX.power else - to_chat(user, SPAN_WARNING("matrix is not complete!")) + to_chat(user, SPAN_WARNING("Matrix is not complete!")) /obj/structure/machinery/computer/dropship_weapons/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 0) var/data[0] diff --git a/code/game/objects/items/props/helmetgarb.dm b/code/game/objects/items/props/helmetgarb.dm index 7860236d5d51..92c9f106170f 100644 --- a/code/game/objects/items/props/helmetgarb.dm +++ b/code/game/objects/items/props/helmetgarb.dm @@ -204,7 +204,7 @@ to_chat(user, SPAN_WARNING("Nothing to fix.")) else if(shape == NVG_SHAPE_COSMETIC) - to_chat(user, SPAN_WARNING("it's nothing but a husk of what it used to be.")) + to_chat(user, SPAN_WARNING("It's nothing but a husk of what it used to be.")) else to_chat(user, "You begin to repair \the [src].") diff --git a/code/game/objects/items/reagent_containers/food/condiment.dm b/code/game/objects/items/reagent_containers/food/condiment.dm index 7b9358b81826..35944e4422c4 100644 --- a/code/game/objects/items/reagent_containers/food/condiment.dm +++ b/code/game/objects/items/reagent_containers/food/condiment.dm @@ -80,7 +80,7 @@ to_chat(user, SPAN_DANGER("[src] is empty.")) return if(target.reagents.total_volume >= target.reagents.maximum_volume) - to_chat(user, SPAN_DANGER("you can't add anymore to [target].")) + to_chat(user, SPAN_DANGER("You can't add any more to [target].")) return var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) to_chat(user, SPAN_NOTICE(" You transfer [trans] units of the condiment to [target].")) diff --git a/code/game/objects/items/tools/shovel_tools.dm b/code/game/objects/items/tools/shovel_tools.dm index 008b37705fe3..ad74dca54e88 100644 --- a/code/game/objects/items/tools/shovel_tools.dm +++ b/code/game/objects/items/tools/shovel_tools.dm @@ -151,7 +151,7 @@ /obj/item/tool/shovel/proc/dump_shovel(atom/target, mob/user) var/turf/T = target - to_chat(user, SPAN_NOTICE("you dump the [dirt_type_to_name(dirt_type)]!")) + to_chat(user, SPAN_NOTICE("You dump the [dirt_type_to_name(dirt_type)]!")) playsound(user.loc, "rustle", 30, 1, 6) if(dirt_type == DIRT_TYPE_SNOW) var/obj/item/stack/snow/S = locate() in T diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm index a0e9e8b787aa..ca756cc78781 100644 --- a/code/modules/admin/topic/topic.dm +++ b/code/modules/admin/topic/topic.dm @@ -590,7 +590,7 @@ var/mob/M = locate(href_list["forcespeech"]) if(!ismob(M)) - to_chat(usr, "this can only be used on instances of type /mob") + to_chat(usr, "This can only be used on instances of type /mob") return var/speech = input("What will [key_name(M)] say?.", "Force speech", "")// Don't need to sanitize, since it does that in say(), we also trust our admins. @@ -603,7 +603,7 @@ if(!check_rights(R_ADMIN)) return var/mob/living/carbon/human/H = locate(href_list["zombieinfect"]) if(!istype(H)) - to_chat(usr, "this can only be used on instances of type /human") + to_chat(usr, "This can only be used on instances of type /human") return if(alert(usr, "Are you sure you want to infect them with a ZOMBIE VIRUS? This can trigger a major event!", "Message", "Yes", "No") != "Yes") @@ -622,7 +622,7 @@ if(!check_rights(R_ADMIN)) return var/mob/living/carbon/human/H = locate(href_list["larvainfect"]) if(!istype(H)) - to_chat(usr, "this can only be used on instances of type /human") + to_chat(usr, "This can only be used on instances of type /human") return if(alert(usr, "Are you sure you want to infect them with a xeno larva?", "Message", "Yes", "No") != "Yes") @@ -704,7 +704,7 @@ var/mob/M = locate(href_list["forceemote"]) if(!ismob(M)) - to_chat(usr, "this can only be used on instances of type /mob") + to_chat(usr, "This can only be used on instances of type /mob") var/speech = input("What will [key_name(M)] emote?.", "Force emote", "")// Don't need to sanitize, since it does that in say(), we also trust our admins. if(!speech) return diff --git a/code/modules/cm_marines/orbital_cannon.dm b/code/modules/cm_marines/orbital_cannon.dm index c9ec4190ce90..b003237f68ee 100644 --- a/code/modules/cm_marines/orbital_cannon.dm +++ b/code/modules/cm_marines/orbital_cannon.dm @@ -82,15 +82,15 @@ GLOBAL_LIST(ob_type_fuel_requirements) if(!tray.warhead) if(user) - to_chat(user, "no warhead in the tray, loading operation cancelled.") + to_chat(user, SPAN_WARNING("No warhead in the tray, loading operation cancelled.")) return if(tray.fuel_amt < 1) - to_chat(user, "no solid fuel in the tray, loading operation cancelled.") + to_chat(user, SPAN_WARNING("No solid fuel in the tray, loading operation cancelled.")) return if(loaded_tray) - to_chat(user, "Tray is already loaded.") + to_chat(user, SPAN_WARNING("Tray is already loaded.")) return tray.forceMove(src) @@ -685,4 +685,3 @@ GLOBAL_LIST_EMPTY(orbital_cannon_cancellation) return TRUE tgui_interact(user) - diff --git a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm index 84eceb028349..225a5ac91184 100644 --- a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm +++ b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm @@ -622,7 +622,7 @@ target.xenos_tracking |= src tracked_marker = target to_chat(src, SPAN_XENONOTICE("You start tracking the [target.mark_meaning.name] resin mark.")) - to_chat(src, SPAN_INFO("shift click the compass to watch the mark, alt click to stop tracking")) + to_chat(src, SPAN_INFO("Shift click the compass to watch the mark, alt click to stop tracking")) /mob/living/carbon/xenomorph/proc/stop_tracking_resin_mark(destroyed, silent = FALSE) //tracked_marker shouldnt be nulled outside this PROC!! >:C if(QDELETED(src)) diff --git a/code/modules/mob/mob_transformation_simple.dm b/code/modules/mob/mob_transformation_simple.dm index 92e46454cc5e..cd76618f3243 100644 --- a/code/modules/mob/mob_transformation_simple.dm +++ b/code/modules/mob/mob_transformation_simple.dm @@ -4,7 +4,7 @@ //Note that this proc does NOT do MMI related stuff! /mob/proc/change_mob_type(new_type = null, turf/location = null, new_name = null as text, delete_old_mob = 0 as num, subspecies) if(istype(src,/mob/new_player)) - to_chat(usr, SPAN_DANGER("cannot convert players who have not entered yet.")) + to_chat(usr, SPAN_DANGER("Cannot convert players who have not entered yet.")) return if(!new_type) @@ -18,7 +18,7 @@ return if( new_type == /mob/new_player ) - to_chat(usr, SPAN_DANGER("cannot convert into a new_player mob type.")) + to_chat(usr, SPAN_DANGER("Cannot convert into a new_player mob type.")) return var/mob/M From 0b241c0584b792912d42c34007d808494e386023 Mon Sep 17 00:00:00 2001 From: Blundir <100090741+Blundir@users.noreply.github.com> Date: Tue, 5 Dec 2023 19:19:39 +0200 Subject: [PATCH 18/38] New ammo boxes (#5101) # About the pull request Adds a lot of missing ammo boxes to various ammo and items. The list is: NSG 23 (all types) M56B (all types) M56D M41A MK1 (regular and ap) Type 73 (all types) Desert Eagle (all types) Spearhead Revolver (all types) MP5 AR10 M41AE2 (all types) M2C M4A3 Incen Incen Buckshot Flamer fuel and B-gel Signal flare pack Loose 9mm pistol ammuniton (all types) Also this pr adds small Incen Buckshot box (it was needed for floor box code) I have tested it on local. All the sprites were made by me. # Explain why it's good for the game It's not very comfortable for req and marines in general to interact with loose ammo or ammo backpacks, this pr adds easier storage and interaction with many kinds of ammunition. # Testing Photographs and Procedure
      Screenshots & Videos ![dreamseeker_4rVlhlKp3o](https://github.com/cmss13-devs/cmss13/assets/100090741/3f9105e5-6fb2-4079-889a-8dd2e97a3e16) ![dreamseeker_4tlwHtVsOi](https://github.com/cmss13-devs/cmss13/assets/100090741/c84e75c0-9ed4-417d-993c-956f4442bded) ![dreamseeker_6ao5VA4KKL](https://github.com/cmss13-devs/cmss13/assets/100090741/97176872-78d5-4ff3-86e6-2a8eb1c9d529) ![dreamseeker_8s43N0pXlN](https://github.com/cmss13-devs/cmss13/assets/100090741/d03d2aba-4c42-484f-998f-2c91d4f9c238)
      # Changelog :cl: add: added new ammo boxes for various weapons and ammo /:cl: --- .../items/stacks/sheets/sheet_types.dm | 48 ++- .../projectiles/ammo_boxes/handful_boxes.dm | 9 + .../projectiles/ammo_boxes/magazine_boxes.dm | 312 ++++++++++++++++++ .../projectiles/ammo_boxes/misc_boxes.dm | 12 + .../projectiles/ammo_boxes/round_boxes.dm | 40 +++ .../modules/projectiles/magazines/shotguns.dm | 8 + .../guns/ammo_boxes/boxes_and_lids.dmi | Bin 4032 -> 5456 bytes .../weapons/guns/ammo_boxes/handfuls.dmi | Bin 2118 -> 2269 bytes .../weapons/guns/ammo_boxes/magazines.dmi | Bin 2197 -> 3261 bytes .../items/weapons/guns/ammo_boxes/text.dmi | Bin 1745 -> 2567 bytes .../weapons/guns/ammo_by_faction/uscm.dmi | Bin 23880 -> 23315 bytes 11 files changed, 427 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 2f4dd0f532ca..a0814290ca40 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -223,11 +223,13 @@ GLOBAL_LIST_INIT_TYPED(cardboard_recipes, /datum/stack_recipe, list ( \ null, \ new/datum/stack_recipe_list("empty ammo boxes",list( \ new/datum/stack_recipe("empty magazine box (88 Mod 4 AP)", /obj/item/ammo_box/magazine/mod88/empty), \ + new/datum/stack_recipe("empty magazine box (SU-6)", /obj/item/ammo_box/magazine/su6/empty), \ + new/datum/stack_recipe("empty magazine box (VP78)", /obj/item/ammo_box/magazine/vp78/empty), \ + null, \ new/datum/stack_recipe("empty magazine box (M4A3)", /obj/item/ammo_box/magazine/m4a3/empty), \ new/datum/stack_recipe("empty magazine box (M4A3 AP)", /obj/item/ammo_box/magazine/m4a3/ap/empty), \ new/datum/stack_recipe("empty magazine box (M4A3 HP)", /obj/item/ammo_box/magazine/m4a3/hp/empty), \ - new/datum/stack_recipe("empty magazine box (SU-6)", /obj/item/ammo_box/magazine/su6/empty), \ - new/datum/stack_recipe("empty magazine box (VP78)", /obj/item/ammo_box/magazine/vp78/empty), \ + new/datum/stack_recipe("empty magazine box (M4A3 Incen)", /obj/item/ammo_box/magazine/m4a3/incen/empty), \ null, \ new/datum/stack_recipe("empty speed loader box (M44)", /obj/item/ammo_box/magazine/m44/empty), \ new/datum/stack_recipe("empty speed loader box (M44 Heavy)", /obj/item/ammo_box/magazine/m44/heavy/empty), \ @@ -256,10 +258,27 @@ GLOBAL_LIST_INIT_TYPED(cardboard_recipes, /datum/stack_recipe, list ( \ new/datum/stack_recipe("empty magazine box (M41A Incen)", /obj/item/ammo_box/magazine/incen/empty), \ new/datum/stack_recipe("empty magazine box (M41A LE)", /obj/item/ammo_box/magazine/le/empty), \ null, \ + new/datum/stack_recipe("empty magazine box (M41A MK1)", /obj/item/ammo_box/magazine/mk1/empty), \ + new/datum/stack_recipe("empty magazine box (M41A MK1 AP)", /obj/item/ammo_box/magazine/mk1/ap/empty), \ + null, \ + new/datum/stack_recipe("empty drum box (M56B)", /obj/item/ammo_box/magazine/m56b/empty), \ + new/datum/stack_recipe("empty drum box (M56B Irradiated)", /obj/item/ammo_box/magazine/m56b/dirty/empty), \ + new/datum/stack_recipe("empty drum box (M56D)", /obj/item/ammo_box/magazine/m56d/empty), \ + null, \ + new/datum/stack_recipe("empty drum box (M2C)", /obj/item/ammo_box/magazine/m2c/empty), \ + null, \ + new/datum/stack_recipe("empty magazine box (M41AE2)", /obj/item/ammo_box/magazine/m41ae2/empty), \ + new/datum/stack_recipe("empty magazine box (M41AE2 Holo-Target)", /obj/item/ammo_box/magazine/m41ae2/holo/empty), \ + new/datum/stack_recipe("empty magazine box (M41AE2 HEAP)", /obj/item/ammo_box/magazine/m41ae2/heap/empty), \ + null, \ + new/datum/stack_recipe("empty flamer tank box (UT-Napthal)", /obj/item/ammo_box/magazine/flamer/empty), \ + new/datum/stack_recipe("empty flamer tank box (Napalm B-Gel)", /obj/item/ammo_box/magazine/flamer/bgel/empty), \ + null, \ new/datum/stack_recipe("empty shotgun shell box (Beanbag)", /obj/item/ammo_box/magazine/shotgun/beanbag/empty), \ new/datum/stack_recipe("empty shotgun shell box (Buckshot)", /obj/item/ammo_box/magazine/shotgun/buckshot/empty), \ new/datum/stack_recipe("empty shotgun shell box (Flechette)", /obj/item/ammo_box/magazine/shotgun/flechette/empty), \ new/datum/stack_recipe("empty shotgun shell box (Incendiary)", /obj/item/ammo_box/magazine/shotgun/incendiary/empty), \ + new/datum/stack_recipe("empty shotgun shell box (Incendiary Buckshot)", /obj/item/ammo_box/magazine/shotgun/incendiarybuck/empty), \ new/datum/stack_recipe("empty shotgun shell box (Slugs)", /obj/item/ammo_box/magazine/shotgun/empty), \ null, \ new/datum/stack_recipe("empty 45-70 bullets box", /obj/item/ammo_box/magazine/lever_action/empty), \ @@ -279,17 +298,42 @@ GLOBAL_LIST_INIT_TYPED(cardboard_recipes, /datum/stack_recipe, list ( \ new/datum/stack_recipe("empty rifle ammo box (10x24mm Incen)", /obj/item/ammo_box/rounds/incen/empty), \ new/datum/stack_recipe("empty rifle ammo box (10x24mm LE)", /obj/item/ammo_box/rounds/le/empty), \ null, \ + new/datum/stack_recipe("empty rifle ammo box (9mm)", /obj/item/ammo_box/rounds/pistol/empty), \ + new/datum/stack_recipe("empty rifle ammo box (9mm AP)", /obj/item/ammo_box/rounds/pistol/ap/empty), \ + new/datum/stack_recipe("empty rifle ammo box (9mm HP)", /obj/item/ammo_box/rounds/pistol/hp/empty), \ + new/datum/stack_recipe("empty rifle ammo box (9mm Incen)", /obj/item/ammo_box/rounds/pistol/incen/empty), \ + null, \ new/datum/stack_recipe("empty box of MREs", /obj/item/ammo_box/magazine/misc/mre/empty), \ new/datum/stack_recipe("empty box of M94 Marking Flare Packs", /obj/item/ammo_box/magazine/misc/flares/empty), \ + new/datum/stack_recipe("empty box of M89 Signal Flare Packs", /obj/item/ammo_box/magazine/misc/flares/signal/empty), \ new/datum/stack_recipe("empty box of flashlights", /obj/item/ammo_box/magazine/misc/flashlight/empty), \ new/datum/stack_recipe("empty box of High-Capacity Power Cells", /obj/item/ammo_box/magazine/misc/power_cell/empty), \ null, \ + new/datum/stack_recipe("empty magazine box (Desert Eagle)", /obj/item/ammo_box/magazine/deagle/empty), \ + new/datum/stack_recipe("empty magazine box (Desert Eagle Heavy)", /obj/item/ammo_box/magazine/deagle/super/empty), \ + new/datum/stack_recipe("empty magazine box (Desert Eagle High-Impact)", /obj/item/ammo_box/magazine/deagle/super/highimpact/empty), \ + new/datum/stack_recipe("empty magazine box (Desert Eagle AP)", /obj/item/ammo_box/magazine/deagle/super/highimpact/ap/empty), \ + null, \ + new/datum/stack_recipe("empty magazine box (Spearhead HP)", /obj/item/ammo_box/magazine/spearhead/empty), \ + new/datum/stack_recipe("empty magazine box (Spearhead)", /obj/item/ammo_box/magazine/spearhead/normalpoint/empty), \ + null, \ new/datum/stack_recipe("empty magazine box (M16)", /obj/item/ammo_box/magazine/M16/empty), \ new/datum/stack_recipe("empty magazine box (M16 AP)", /obj/item/ammo_box/magazine/M16/ap/empty), \ null, \ + new/datum/stack_recipe("empty magazine box (AR10)", /obj/item/ammo_box/magazine/ar10/empty), \ + null, \ + new/datum/stack_recipe("empty magazine box (MP5)", /obj/item/ammo_box/magazine/mp5/empty), \ + null, \ + new/datum/stack_recipe("empty magazine box (NSG 23)", /obj/item/ammo_box/magazine/nsg23/empty), \ + new/datum/stack_recipe("empty magazine box (NSG 23 AP)", /obj/item/ammo_box/magazine/nsg23/ap/empty), \ + new/datum/stack_recipe("empty magazine box (NSG 23 EX)", /obj/item/ammo_box/magazine/nsg23/ex/empty), \ + null, \ new/datum/stack_recipe("empty magazine box (Type71)", /obj/item/ammo_box/magazine/type71/empty), \ new/datum/stack_recipe("empty magazine box (Type71 AP)", /obj/item/ammo_box/magazine/type71/ap/empty), \ null, \ + new/datum/stack_recipe("empty magazine box (Type73)", /obj/item/ammo_box/magazine/type73/empty), \ + new/datum/stack_recipe("empty magazine box (Type73 High-Impact)", /obj/item/ammo_box/magazine/type73/impact/empty), \ + null, \ new/datum/stack_recipe("empty rifle ammo box (5.45x39mm)", /obj/item/ammo_box/rounds/type71/empty), \ new/datum/stack_recipe("empty rifle ammo box (5.45x39mm AP)", /obj/item/ammo_box/rounds/type71/ap/empty), \ diff --git a/code/modules/projectiles/ammo_boxes/handful_boxes.dm b/code/modules/projectiles/ammo_boxes/handful_boxes.dm index 28eab8463011..9ac2aeea8870 100644 --- a/code/modules/projectiles/ammo_boxes/handful_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/handful_boxes.dm @@ -48,6 +48,15 @@ /obj/item/ammo_box/magazine/shotgun/incendiary/empty empty = TRUE +/obj/item/ammo_box/magazine/shotgun/incendiarybuck + name = "\improper shotgun shell box (Incendiary buckshot x 100)" + icon_state = "base_incbuck" + overlay_content = "_incenbuck" + magazine_type = /obj/item/ammo_magazine/shotgun/incendiarybuck + +/obj/item/ammo_box/magazine/shotgun/incendiarybuck/empty + empty = TRUE + /obj/item/ammo_box/magazine/shotgun/beanbag name = "\improper shotgun shell box (Beanbag x 100)" icon_state = "base_bean" diff --git a/code/modules/projectiles/ammo_boxes/magazine_boxes.dm b/code/modules/projectiles/ammo_boxes/magazine_boxes.dm index ff90a6659fb2..6d20dcc75949 100644 --- a/code/modules/projectiles/ammo_boxes/magazine_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/magazine_boxes.dm @@ -286,6 +286,15 @@ /obj/item/ammo_box/magazine/m4a3/hp/empty empty = TRUE +/obj/item/ammo_box/magazine/m4a3/incen + name = "\improper magazine box (Incen M4A3 x 16)" + overlay_ammo_type = "_incen" + overlay_content = "_incen" + magazine_type = /obj/item/ammo_magazine/pistol/incendiary + +/obj/item/ammo_box/magazine/m4a3/incen/empty + empty = TRUE + //-----------------------M44 Revolver Speed Loaders Box----------------------- /obj/item/ammo_box/magazine/m44 @@ -410,3 +419,306 @@ /obj/item/ammo_box/magazine/nailgun/empty empty = TRUE + +//-----------------------M56B Drum Box----------------------- + +/obj/item/ammo_box/magazine/m56b + name = "\improper drum box (M56B x 8)" + icon_state = "base_m56b" + overlay_ammo_type = "_reg_heavy" + overlay_gun_type = "_sg" + overlay_content = "_sg" + magazine_type = /obj/item/ammo_magazine/smartgun + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/m56b/empty + empty = TRUE + +/obj/item/ammo_box/magazine/m56b/dirty + name = "\improper drum box (M56B 'Dirty' x 8)" + overlay_ammo_type = "_red_heavy" + overlay_content = "_sgdirty" + magazine_type = /obj/item/ammo_magazine/smartgun/dirty + +/obj/item/ammo_box/magazine/m56b/dirty/empty + empty = TRUE + +//-----------------------M56D Drum Box----------------------- + +/obj/item/ammo_box/magazine/m56d + name = "\improper drum box (M56D x 8)" + icon_state = "base_m56d" + overlay_ammo_type = "" + overlay_gun_type = "_m56d" + overlay_content = "_m56d" + magazine_type = /obj/item/ammo_magazine/m56d + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/m56d/update_icon() + if(overlays) + overlays.Cut() + overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid + overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text + +/obj/item/ammo_box/magazine/m56d/empty + empty = TRUE + + +//-----------------------M2C Ammo Box----------------------- + +/obj/item/ammo_box/magazine/m2c + name = "\improper ammo box (M2C x 8)" + icon_state = "base_m2c" + overlay_ammo_type = "" + overlay_gun_type = "_m2c" + overlay_content = "_m2c" + magazine_type = /obj/item/ammo_magazine/m2c + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/m2c/update_icon() + if(overlays) + overlays.Cut() + overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid + overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text + +/obj/item/ammo_box/magazine/m2c/empty + empty = TRUE + +//-----------------------M41AE2 Ammo Box----------------------- + +/obj/item/ammo_box/magazine/m41ae2 + name = "\improper magazine (M41AE2 x 8)" + icon_state = "base_m41ae2" + overlay_ammo_type = "_reg_heavy" + overlay_gun_type = "_m41ae2" + overlay_content = "_m41ae2" + magazine_type = /obj/item/ammo_magazine/rifle/lmg + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/m41ae2/empty + empty = TRUE + +/obj/item/ammo_box/magazine/m41ae2/holo + name = "\improper magazine box (M41AE2 Holo-Target x 8)" + overlay_ammo_type = "_holo_heavy" + overlay_content = "_m41ae2_holo" + magazine_type = /obj/item/ammo_magazine/rifle/lmg/holo_target + +/obj/item/ammo_box/magazine/m41ae2/holo/empty + empty = TRUE + +/obj/item/ammo_box/magazine/m41ae2/heap + name = "\improper magazine box (M41AE2 HEAP x 8)" + overlay_ammo_type = "_heap_heavy" + overlay_content = "_m41ae2_heap" + magazine_type = /obj/item/ammo_magazine/rifle/lmg/heap + +/obj/item/ammo_box/magazine/m41ae2/heap/empty + empty = TRUE + +//-----------------------Flamer Fuel Tank Box----------------------- + +/obj/item/ammo_box/magazine/flamer + name = "\improper flamer tank box (UT-Napthal Fuel x 8)" + icon_state = "base_flamer" + overlay_ammo_type = "_flamer" + overlay_gun_type = "_blank" + overlay_content = "_flamer" + magazine_type = /obj/item/ammo_magazine/flamer_tank + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/flamer/empty + empty = TRUE + +/obj/item/ammo_box/magazine/flamer/bgel + name = "\improper flamer fuel box (Napalm B-Gel x 8)" + overlay_ammo_type = "_flamer_bgel" + overlay_content = "_flamer_bgel" + magazine_type = /obj/item/ammo_magazine/flamer_tank/gellied + +/obj/item/ammo_box/magazine/flamer/bgel/empty + empty = TRUE + +//-----------------------M41A MK1 Rifle Mag Boxes----------------------- + +/obj/item/ammo_box/magazine/mk1 + name = "\improper magazine box (M41A MK1 x 8)" + overlay_ammo_type = "_reg_mk1" + overlay_gun_type = "_mk1" + overlay_content = "_reg" + magazine_type = /obj/item/ammo_magazine/rifle/m41aMK1 + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/mk1/empty + empty = TRUE + +/obj/item/ammo_box/magazine/mk1/ap + name = "\improper magazine box (M41A MK1 AP x 8)" + flags_equip_slot = SLOT_BACK + overlay_ammo_type = "_ap_mk1" + overlay_content = "_ap" + magazine_type = /obj/item/ammo_magazine/rifle/m41aMK1/ap + +/obj/item/ammo_box/magazine/mk1/ap/empty + empty = TRUE + +//-----------------------NSG 23 Rifle Mag Boxes----------------------- + +/obj/item/ammo_box/magazine/nsg23 + name = "\improper magazine box (NSG 23 x 16)" + icon_state = "base_nsg23" + overlay_gun_type = "_nsg23" + overlay_content = "_reg" + magazine_type = /obj/item/ammo_magazine/rifle/nsg23 + num_of_magazines = 16 + +/obj/item/ammo_box/magazine/nsg23/empty + empty = TRUE + +/obj/item/ammo_box/magazine/nsg23/ap + name = "\improper magazine box (NSG 23 AP x 12)" + overlay_ammo_type = "_ap" + overlay_content = "_ap" + magazine_type = /obj/item/ammo_magazine/rifle/nsg23/ap + num_of_magazines = 12 + +/obj/item/ammo_box/magazine/nsg23/ap/empty + empty = TRUE + +/obj/item/ammo_box/magazine/nsg23/ex + name = "\improper magazine box (NSG 23 Extended x 8)" + overlay_ammo_type = "_ext" + magazine_type = /obj/item/ammo_magazine/rifle/nsg23/extended + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/nsg23/ex/empty + empty = TRUE + +/obj/item/ammo_box/magazine/nsg23/heap + name = "\improper magazine box (NSG 23 HEAP x 16)" + overlay_ammo_type = "_heap" + overlay_content = "_heap" + magazine_type = /obj/item/ammo_magazine/rifle/nsg23/heap + +/obj/item/ammo_box/magazine/nsg23/heap/empty + empty = TRUE + +//-----------------------Spearhead Autorevolver Speed Loaders Box----------------------- + +/obj/item/ammo_box/magazine/spearhead + name = "\improper speed loaders box (Spearhead HP x 12)" + icon_state = "base_cmb" + overlay_ammo_type = "_357_hp" + overlay_gun_type = "_357" + overlay_content = "_speed" + num_of_magazines = 12 + magazine_type = /obj/item/ammo_magazine/revolver/cmb + +/obj/item/ammo_box/magazine/spearhead/empty + empty = TRUE + +/obj/item/ammo_box/magazine/spearhead/normalpoint + name = "\improper speed loaders box (Spearhead x 12)" + overlay_ammo_type = "_357_reg" + magazine_type = /obj/item/ammo_magazine/revolver/cmb/normalpoint + +/obj/item/ammo_box/magazine/spearhead/normalpoint/empty + empty = TRUE + +//-----------------------Type 73 Pistol Mag Box----------------------- + +/obj/item/ammo_box/magazine/type73 + name = "\improper magazine box (Type 73 x 16)" + icon_state = "base_type73" + flags_equip_slot = SLOT_BACK + overlay_ammo_type = "_type71_reg" + overlay_gun_type = "_type73" + overlay_content = "_type71_reg" + num_of_magazines = 16 + magazine_type = /obj/item/ammo_magazine/pistol/t73 + +/obj/item/ammo_box/magazine/type73/empty + empty = TRUE + +/obj/item/ammo_box/magazine/type73/impact + name = "\improper magazine box (Type 73 High-Impact x 10)" + overlay_ammo_type = "_type73_impact" + overlay_content = "_type73_impact" + num_of_magazines = 10 + magazine_type = /obj/item/ammo_magazine/pistol/t73_impact + +/obj/item/ammo_box/magazine/type73/impact/empty + empty = TRUE + + +//-----------------------AR10 Rifle Mag Box----------------------- + +/obj/item/ammo_box/magazine/ar10 + name = "\improper magazine box (AR10 x 12)" + icon_state = "base_ar10" + flags_equip_slot = SLOT_BACK + overlay_gun_type = "_ar10" + overlay_content = "_reg" + num_of_magazines = 12 + magazine_type = /obj/item/ammo_magazine/rifle/ar10 + +/obj/item/ammo_box/magazine/ar10/empty + empty = TRUE + +//-----------------------MP5 Smg Mag Box----------------------- + +/obj/item/ammo_box/magazine/mp5 + name = "\improper magazine box (MP5 x 12)" + icon_state = "base_m16" + flags_equip_slot = SLOT_BACK + overlay_gun_type = "_mp5" + overlay_content = "_reg" + num_of_magazines = 12 + magazine_type = /obj/item/ammo_magazine/smg/mp5 + +/obj/item/ammo_box/magazine/mp5/empty + empty = TRUE + + +//-----------------------Desert Eagle Pistol Mag Box----------------------- + +/obj/item/ammo_box/magazine/deagle + name = "\improper magazine box (Desert Eagle x 12)" + icon_state = "base_deagle" + flags_equip_slot = SLOT_BACK + overlay_ammo_type = "_reg" + overlay_gun_type = "_deagle" + overlay_content = "_reg" + num_of_magazines = 16 + magazine_type = /obj/item/ammo_magazine/pistol/heavy + +/obj/item/ammo_box/magazine/deagle/empty + empty = TRUE + +/obj/item/ammo_box/magazine/deagle/super + name = "\improper magazine box (Heavy Desert Eagle x 8)" + overlay_ammo_type = "_hp" + overlay_content = "_hp" + num_of_magazines = 8 + magazine_type = /obj/item/ammo_magazine/pistol/heavy/super + +/obj/item/ammo_box/magazine/deagle/super/empty + empty = TRUE + +/obj/item/ammo_box/magazine/deagle/super/highimpact + name = "\improper magazine box (High Impact Desert Eagle x 8)" + overlay_ammo_type = "_impact" + overlay_content = "_impact" + magazine_type = /obj/item/ammo_magazine/pistol/heavy/super/highimpact + +/obj/item/ammo_box/magazine/deagle/super/highimpact/empty + empty = TRUE + +/obj/item/ammo_box/magazine/deagle/super/highimpact/ap + name = "\improper magazine box (High Impact Armor-Piercing Desert Eagle x 8)" + overlay_ammo_type = "_ap" + overlay_content = "_ap" + magazine_type = /obj/item/ammo_magazine/pistol/heavy/super/highimpact/ap + +/obj/item/ammo_box/magazine/deagle/super/highimpact/ap/empty + empty = TRUE diff --git a/code/modules/projectiles/ammo_boxes/misc_boxes.dm b/code/modules/projectiles/ammo_boxes/misc_boxes.dm index d09a69e5bb50..7b19555f4de5 100644 --- a/code/modules/projectiles/ammo_boxes/misc_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/misc_boxes.dm @@ -75,6 +75,15 @@ overlay_gun_type = "_m94" overlay_content = "_flares" +//------------------------M89 Signal Flare Packs Box-------------------------- + +/obj/item/ammo_box/magazine/misc/flares/signal + name = "\improper box of M89 signal flare packs" + desc = "A box of M89 signal flare packs, to mark up the way." + magazine_type = /obj/item/storage/box/m94/signal + overlay_gun_type = "_m89" + overlay_content = "_flares_signal" + //---------------------FIRE HANDLING PROCS //flare box has unique stuff @@ -139,6 +148,9 @@ /obj/item/ammo_box/magazine/misc/flares/empty empty = TRUE +/obj/item/ammo_box/magazine/misc/flares/signal/empty + empty = TRUE + //------------------------Flashlight Box-------------------------- /obj/item/ammo_box/magazine/misc/flashlight diff --git a/code/modules/projectiles/ammo_boxes/round_boxes.dm b/code/modules/projectiles/ammo_boxes/round_boxes.dm index 95115b76df43..ab1d1667c15f 100644 --- a/code/modules/projectiles/ammo_boxes/round_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/round_boxes.dm @@ -130,3 +130,43 @@ /obj/item/ammo_box/rounds/type71/heap/empty empty = TRUE + +//----------------9mm Pistol Ammunition Boxes (for mod88, M4A3 pistols)------------------ + +/obj/item/ammo_box/rounds/pistol + name = "\improper pistol ammunition box (9mm)" + desc = "A 9mm ammunition box. Used to refill M4A3 magazines. It comes with a leather strap allowing to wear it on the back." + caliber = "9mm" + icon_state = "base_m4a3" + overlay_content = "_reg" + default_ammo = /datum/ammo/bullet/pistol + +/obj/item/ammo_box/rounds/pistol/empty + empty = TRUE + +/obj/item/ammo_box/rounds/pistol/ap + name = "\improper pistol ammunition box (9mm AP)" + desc = "A 9mm armor-piercing ammunition box. Used to refill mod88 and M4A3 magazines. It comes with a leather strap allowing to wear it on the back." + overlay_content = "_ap" + default_ammo = /datum/ammo/bullet/pistol/ap + +/obj/item/ammo_box/rounds/pistol/ap/empty + empty = TRUE + +/obj/item/ammo_box/rounds/pistol/hp + name = "\improper pistol ammunition box (9mm HP)" + desc = "A 9mm hollow-point ammunition box. Used to refill M4A3 magazines. It comes with a leather strap allowing to wear it on the back." + overlay_content = "_hp" + default_ammo = /datum/ammo/bullet/pistol/hollow + +/obj/item/ammo_box/rounds/pistol/hp/empty + empty = TRUE + +/obj/item/ammo_box/rounds/pistol/incen + name = "\improper pistol ammunition box (9mm Incendiary)" + desc = "A 9mm incendiary ammunition box. Used to refill M4A3 magazines. It comes with a leather strap allowing to wear it on the back." + overlay_content = "_incen" + default_ammo = /datum/ammo/bullet/pistol/incendiary + +/obj/item/ammo_box/rounds/pistol/incen/empty + empty = TRUE diff --git a/code/modules/projectiles/magazines/shotguns.dm b/code/modules/projectiles/magazines/shotguns.dm index 9f137b1c2316..6c103aaa9677 100644 --- a/code/modules/projectiles/magazines/shotguns.dm +++ b/code/modules/projectiles/magazines/shotguns.dm @@ -46,6 +46,14 @@ GLOBAL_LIST_INIT(shotgun_boxes_12g, list( default_ammo = /datum/ammo/bullet/shotgun/incendiary handful_state = "incendiary_slug" +/obj/item/ammo_magazine/shotgun/incendiarybuck + name = "box of incendiary buckshots" + desc = "A box filled with self-detonating buckshot incendiary shotgun rounds. 12 Gauge." + icon_state = "incendiarybuck" + item_state = "incendiarybuck" + default_ammo = /datum/ammo/bullet/shotgun/buckshot/incendiary + handful_state = "incen_buckshot" + /obj/item/ammo_magazine/shotgun/buckshot name = "box of buckshot shells" desc = "A box filled with buckshot spread shotgun shells. 12 Gauge." diff --git a/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi b/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi index 6c5d741ef9b8da5098ba515391914ad8575d83fd..42e7c54bbd2b07bd8044e747131284c994ffbe98 100644 GIT binary patch literal 5456 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 diff --git a/icons/obj/items/weapons/guns/ammo_boxes/handfuls.dmi b/icons/obj/items/weapons/guns/ammo_boxes/handfuls.dmi index 3355358f72f9eec12822a57ea369e6b557dce3b0..eeef3f91412db3f4ee7bcb48093baa5a35d145b8 100644 GIT binary patch literal 2269 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 TEsvaT-}G&e_K2FJK1u%r7&Y;p diff --git a/icons/obj/items/weapons/guns/ammo_boxes/text.dmi b/icons/obj/items/weapons/guns/ammo_boxes/text.dmi index dd08bf7e69b13d9f6b792c4f6e9b2b2c196b0c4b..911b727ba5f61119d6db4b3c82b85b9b8daaeb17 100644 GIT binary patch literal 2567 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 F{{dv4(c%CA literal 1745 zcmV;?1}^!DP)3B5ouLq23iH!NUC zHvGkOcv?ijm07ohUmIBkaybBI0L+SW0ZC0MTM7yQGiHT@2OenyjYj}xGt5+3Fo6dL z0094-ni(=R8J3ooPf8Q&>gu7D9(7F#EGi7Zz`!&y568I?ZL+U^00001bW%=J06^y0 zW&i*Ip?XwUbVOxyV{&P5bZKvH004NLotDdP!Y~j;*U48{u&;QS0*fv{L?~)QrIrOd zWXP0Q#7<au## z?Sw%Fa+A5^!aCug{%p*n#k>&)sWi4;w!`4V2nDBaRaBrryTi&$9DKRuDi?ZtPk4(q9$2tD#DO{QAa`sdYejjF%^=T_ z<>I}53riyVuZGCBDsIG|;~3iAP(%Go-vgU0 znoSPB-rqt^aMox#LTvy51VTwfK~#90?cIx7+CUJ7;V}yp>bYt?)ML?FYoGT1@2(^Q z+K`HzpY%941*ski0EL*Xyn(2-r{w}{`Jy;2ZRJ}95-q@61(GU2)yp6X(BW#W4|jp3Z-njyv*|~s#Lg9$ z&|LCdlm)0<=8DU*W*!DzCesCo_||`xJKqnue8cqI&3?isn@x2!_C(0#*O0ROJa^hP zEJp5>0?dB5e}0!`u6pGfdn#O1UtRyKxM;t@%Jpm5iMj$FjTK;!PXi?%42p~T83W_4aTVfO-`M1SGqKG8l8Up|T00000&`ZNl3&WNcVe}@mOmFY!Gds0? ztj@nZ8i|bja}O*3`|;&(kH({IW#uxpyVHhpfcMAK;_B^v>-Yd89?vcwdI9X^8@GU0c6(kuK*KnGL%)lS7oVyPi)sFkX930v zng&|?{UiN*_4okm@B!WD%KtXF000000JS845Eh5waUdp#;?@iz!#*G=iUN)$e6U^LOgFm2;zUaR%&Dr?F z;EwFHvbq3((?SKzDR}GM(~I)dlc~=f%*`@#%EyPft#d zQ!T)B+fRy*ngxjEEwQg}>dY2T0Rr*1cu*9P(tdJd3p+2ug3f| za`o(Lv74jT$;;33{A{d3yM7sY=LL9qQDbBAVl{s^z5s1+|K=A!3ybCJtnD`o5dBWj zDnRs-FTn4vR{#J2peK?a1chO67zl}>uxbX8VIL3_b!gQQC(CLVpzF8PRvmM+tabsq zep9vW0+_?%#$NzqVC2{fU=EEPeF3b&(Iedn_GftfmL3NCQ-GCCiqmr!U-s$m12kgt zT7iYW{C$Atjm&ek@)`}(7zW$tFmqZ@5EVvG71nBMTED+C_wUW zi-$xJNxn4(004kw1ph_GSXjNi)`!%Tj)&A-wYjn>H@00000NkvXXu0mjfYZo!^ diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi index 51bc441aefaa5406ce921ff03bb5fc1ad80b4912..f6bddae9b0909227099e4ea98f42b653e4205a70 100644 GIT binary patch literal 23315 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 F{y#%T+718! literal 23880 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 z zk@Ws#j{Lklw6U=<W!VfBh0NB%=O4dL8T z>5K{3r4+-426+Jdc*c{G?k|7%2jE>WKZW<5&X|p0NIN)ifrJa3Qao^KO9tZd@;cr@ zs=z}k;6tYoWrvI;lOcHx5ka@4hgMD7 zqJ9w1Y%0M_Z6LBxbfH}5j78Us8APyk`O?pyeYG&l^8M{UqUxD52t>`aK3PHUS>ECo z+?G34Xtyr?IC zqnoD+?oN>sCLPA+>wDSU;}G8C(8DS==(AtLleUGgC{Ge5j!m7A&de9S6qaOAE`<6j z)1&)!lfJIVG&KTN5?vjUo0lB5Y@4LdaYOE@P~sN`z_sYEwn=^rsMDxR{W5Gpu(#&t z<1Z{gFVw@R0axch>}iJBH{~BY;n%iMlgPL@X{R!3p5_BT%|ec;)KD5ka?oQ^po*`R z(J@}JD`j@Wv-PBfjM@E$*;#rL+ci5Sg*@Anc-H8*hiLQ75+_2DiHqw_gN=H3KF(XW z`UWb%^}3eqYy!Cq9qhuq4mc_R15oujGA)g>EpTFXHoy4h=cT*r#gO-y&ICFj!Z3qz zwH4SM8+j;743HgfX>J4(yaivwWI6E&b17z|Dw-x%te4KqeNLU9rk z6FZJb1bQ9nnENedK#WL#LX@dJ&zlDlvDoK{i2zLHcbUkjpXBOcrqtL>!5nYe(3o7s z{`R(>nwYN>3t+AlAVpNG*dSip{%ec4=oi~$PJev^^ zME@)ax8r1G?a~}0ZkI&2D6izG^||>YFYR!Lf?~zfS0ldJf$Lje6l_wy|5#rfecbP> z*|g^Yh$PRZDP}BI4Y;eTAIYmv&HOwVBzrSH!|EV;%kd0Zu@(5roWXQs>SIj}PF9x0 zb~HgS$!r;Ynv2-XzZY*s%DLiwa%v?B{qqH2f5ovoxsAo!rpfcs7erWr|uIrO0g@>a zZicgg$aN20ti|iDiO9IKMFR#0#FyV%2j`5p%I|N2+7Rp?9UVL>_fygOecz5%|CaeX z)%<*X&%i=O?j>u6FxxaD*;(D#HZ-fGXdb7ENuXXb9tq>sMjx`@}%IO>P8zg4PucQ66okO`M#y zFSSS!*^_T%wMn)WU}`iA0`Ii^&_-KL>C?}6D*e8qSat zbPsRboC$h*BFBfG)QRXou?tjgJQcpVBAftaj7@)T7N-LTY1Q~$Qadv(Oqs7Whf6NS zuY69f$&7gWV3UxxtuBEO2q6k^yN6(#YT-;V_!75a(`jIVYQTsAiai$6Nj}it`u(Yoj5zF+8x*qS<>2}6NT-+lM@ADO5cQAgVUb0l3*$Et#Ih$_W z);Ilqo?-=mhf|pnZ|5a%56BQAT}F_&fVta`M`aQ;v1uuWrW4j$VblwY2dAtBQrDNz+mehPc(esNzlF1 z)S&%`fVA^dLWdU)-N&bb#K1t?`TJGG>tVC|(2!B?^`9a@d$ujr0fmdB)U$|OMuO@j z680Ds?B!@55VBu}u%Ran=U3m`#5fM0rIT1gR8+j0s@48(3<1(oUen+h<&!3_LR$-; z)ybLr-E2j@L<5q)d#*}53Vc8D&5`mwi*)F1Kf1=16;4y^q}%nI^|Qh`fIEs<@sFbt z3`T5-6?Fp1Lic%W7}7&Z{j3w-JSVT9;A65l!CINF_(;~ny?GuN%v)@yMLt>jw0avn z^1>C7MT{GkivKK2k*mh%@za5&1(?7Bwb?)rvbjBhs+C$`B0%AirSiN}_((QiZD6j%-C}21Uf#pV*jObUoid|4jbIvm z6AAm6&zfK#+uN}JmG*b_^+1h?iEc1Yjz9X?*e)7lTJ}k@^Onyt$CK(4MxQTqgky`e z19ECXC&h28*7r!OPjY-$>C{DK&CKE-7;dY6d#A|M(lVzjj7rf`MuB9+Fhk5w;D|^^ z74CzwA8XKUxtW-nsn2}7%Qm_wXUo|YHw-jo=PTXk8ZkE0sI9MKdEG6% zxwSSr(Vy3kCLee4{V_t3gM(w<@$5qaL9SP-xau~sqcp9M6W>E44>=&#NzG>?t6ZkZ zwRl?}~Ml+_stf+1tk$_uh;P^NrV2-3Ra7(GlKMFOHVhQY9qvH1rwb zQ{}t&sN`6;zqn{B|3N9YOzWFhtLC_{DBTP}oa0%e`rF0+cay18v_di@PKMQ-@$qzM zCnrFiXY4EZE2H`_9N5g#&tfCyZcs$6Vz`mDhl2U*Kzi#76n*#UFxA#etpu^a2amFR zT8VB(qa0Fnr`uP44+&(RL>-{45Vqpy$ifrJ7K$U;l}ZJaq7Pww24<78_+X~Ae2)}9 zx{kE*Bn98lI6*Eht(s0yLnW2`*I3DIUH(tQ`+xf^P#kh5*~&_opTx+vVGa|7#efqX z58b`2w0BElQdE!jT`I=mRw z^Sc3xii*mawOWwywv9fR;ur@cKPfSL&-2^F)+ievSa6U>QzwiK;6yx zp35NTtbbPj#O;rQ7evnX;21O(Pzvon}e1%m}P z?oiSeVa?{SuxHxZalRp~X9w~Er$SAVQM z`jr0API=uGu#wxU2|1-@0*SYWm)FtZ;UNGkD+6!d#MT;`^jmpMP)7NCs4x~LmNj!E zcAsj{P`Y4%O=0Qi=ZXqNM@R1IO0&vK2}Uxqm)raMIDn3>?l%P{BQ}<*>7px*Z&&dw zxxl7_BhE9{=iAD%7%p;J$=11qiW%7u)SQ8*=0;9W>m7EuI67)8$UQ2Xs4(25y}S{d zxn=;Esu}GZpF;d{Qo>07nQN~Ohq?~a7x=c0_}^_!?CwIRe>ys%0XS#7SO8f5gTW<| zMZ_y1N_R?j=g#sawyIrx;(ps!vdNs;JB+xvi`;V+Y;w%9no;oNV4#N|RVVlLXDz=! zdmtG`ziaV%pBl}1q48ZwCbjw6mCNy>N)kl;f-{qV6A}jbR9a52LV&u5Wh9G7Ne?QB z4@HW!CxkWi5D(`3BRlS%-e|L;b6_N?m<9%4{PFko4gY$L0ztob5env@F%c##ZqHiw zULv?=n&W3DVt+){EEe($><;Db*`W;|XrqL zA_72r=ii_px02>ViKq|Xv+D+$2|;vBJi1^rEm z6jnxz7y-Qs1ai9-SH+wxWAI zZdb9+z5)KoHPK2zQ8o8V#?3YSj(wMsNbVED{kYUN(pRs(hom+Tb`g)I$- zP4PcN5g7wQOzuu}gJaJ(x9xi2ZQtVB9+wgaWsqP!Rpm3yI7;6Z4%NxQS{!E7hE3|= zSGzAkuE4SYO!Yw3%=Bu(Lc6oOs70(WXk~Yx=(St69-;t1y|wib_uD4AIks2v6`jxa#-BgLB`kdD_lL~dhS}t0{+_QO zWyY&&`_QUa8~oan0YLr!cYA9Kh`;)i0?aON#+R25F7NYeIaly8 zaY$f;hzsfrJ1f`ol};Gd2IY1d4s!lMw5>wAmOl^3l?@Q zMYt^cjq*rXfOWT=MjKXSpS&C8 z<|hdXDO^kG&v7X#RMh84?%aom4rn2+7mKbTeM#Ly=wrc>6OhO+lI^W{D3+xnm?f{M z#rW9#ihpopDNb0}GrXmBx-ZIda?@w>P7bW>%l$M#NkaEWInkinUpb%kWCFHurCQZ? zL{Q>DgPapqkVf0o#+286thf$;BMFeMUW?#x7&k;E-H0o0A#xS5U zPCb>y#QZuJdCi>5C6b5tsd?v<qx+R^RxMq< zcb5KFXW;;tIJ`p)?)n54f1>;}qQ_{?2qtSO?>)M?`H>*Vud%U}`bWP`3wQwaqOM&m zY5d7)4Q1u_ldXxK%W1va#dX7v3K}!Wd@I}Fi$QJ=hnO0@6nt=L-_|-)}ner z!0hYxWWys`I6Qqy3OtFKc`-!(t+4qtVxmaHyXm_YMgpbrN(m1X4Sc{YI|OH<;I(nE z$x#<)=bl2fjPBcpx;m_u5zRsniwdu=8IOw50&f~TU(LE|g>_?8luzvku7V9$vdoao zAPk&bl_}z_ni-s!=U8$ViU{<9wcYizxQ=68KUZLTt9)OIXyl7=H{mP(fiN!H?A|cV(Sm>TwQ+} z`{E|Iwap=n@=ktA2A|z4!m^SMd+i*63@0+F7_E5%aeASHQ* zFaGc(qVdLM^$sAN6rBooXUr8pS14?75WbJvJM0rq=@fh5$^8HlN6deuF7S#Zl(-x$ zKO2Yd}(gVCG@ezJg7=+mKt(q5N?U zJ8L|}!FrYxTrgd2LIklXCoHS@LLiuYxg@MSZ7>{TjER<`qo?cu%2*8?t|j<&;K~oW zy;^m!!@{=h>3N@(QV&YRir0;5Mp%_pbO30gW0SK$u*}reg_0gn()~1hK-mmvn$Aa= z-R9Dxl8Xa*_u>iTHM}bT)aAkFliy}Yp1(IL{0k*QQ8Xw7qQr^+2ou$t=Ki{x_vQ36 zkk5b?XQ!nK`ZAXf8i=flnN)a|4^Pna1ro9oaf>E`51)MN>+c6!n(D@g8;iFxqg;!~F!J|qz)t?n0N znFy0YWDi{5FMBshyn))Lr&5T?jZ=?!@-B0{h=yq(8c+H5q3%Io;Ex#Yj;P~oc#ZDl zxqM@6Pf{3)!Hk}f(P#nS`_(I>@B!z%GIRm?CRC|ug5d;Ina5le$md=eC-=|@0qHrR6g`dO9`VRDf= z*s%3JW%=f6-@B<>P*Bikw{Aw~36TpzL*hJhUPw@|;lN>w80SO0__YvI>D0Q=QuowV zObq5^TtcQg$K2dp!n=3Y5LSnE5md$jZ`zLmZq4ngkCSM?P}))X)8~#2=I-}4^hioS z?|X=LkExg-rYxy09n4RT&vEJ^Oe9~QaB`_<$zH0=kU)w`N)Bqo_5h%{HBh3^B!Jhn z^7Hej+217d9t6@RY&`C3UoKXTrX;ehA9c6J|b_{N}W6nZvoBkniC)wVCzM%Z^J zXIW^Zt`2dfJwy^yTwWd<9~DJ?gTpM%-}{XsU_9gyq|^=ZOaBDd$+iTr?bZr(T6yf=c7jQFOxC##b9Kz&uM=@04_gA%)#D zGbCMaI;xDEzuuH~`E=4zB_Xmw@=*NyxvX>8l|;X#oBtl#OpTlQl4;xdJ#O@L_e-6f zMSb*kYd$TTSPimJe7kYTOq9c?jx? zU_a#ATI1Ye*oI|*dd1Efts!=;zgg5>w1=nFrjan|s^h6i1H(ko4qnfC@IwhMESUus`;Ua+K*3h+_k1_mu)E=0r zbLnFMzmj!6{`|RI!9#~Uj!ql`EVH>Z8(HOindSf{Hlre+D$CxsU$0S5^mrD;npB^G zlkXRRy!vX}6T-}z+dI?70|(YRML{o=r`>JnD;Mj;yX^r%$5(*gG!<*&Nlew$xqNA{ z?OYEP@phDS?)BvTXH6HDy0Ku-Es2Sb|4n{={@BDsetJE_30m&d?6Q!V?rGhKXBR5x z9XWQPsD&(7y#Vd-t~B-?;;;33+Z^i5VK;rB2p1MK$uSp~C!lr8DH zSKt0nwoP(FpVIzZY7&PA}hXr3J<-SW1c(vDxRk_MG*6Y+=m zBOgbzLkiF0LuS|Ft+w=RG=dl{8X}Z_kvD9VvC#b~A5k@&@K<<;Ne!!J=QLX_aCE^8Trm>xPE{XZm6?U>-!6wgJmgaECE$n#8RFx|5 zQ)O0QZVN-zqOb*BnI7%y*Bq!o(f1~67n_{vbxwCO{lPEIzC3k(!J zz>L;`v~)em0*rU1WgEo)SaV=3<}5A!ZE_CNq~KWI7nWN5k89Zf1ewSGbV6(1L6_MC z%E?GL`Qt`0P@Q;WwL397`1B!nQEX+D)PdlEQs@+^AIcc>c=NBtCF}CHPVTenUsVtX zx_i_O@&(q8>DtCX1IL!RC;QFZ7*D~1MO_dJF9j6XH)SLN2@9Y%eYsJT2ShV_HO3LYL zJyAg~2~G69w^WCuq@)0>I1;~GadYlXjX|{!X=Ocb)ie$)GBQ#o+*xBu*kRyJmZWaS zR$6hfvXxpE5%BZHbUbP(bk0t_^}_YUV#I)Gcy`6IyZ+0q=|Z#l!Qw@MM{@WO$y|>+J{0E8C_jM`I1^a2OZeh z+4BktsFOJ~FhS~;ozRj4Bk0@m006%62?esFUvJ*sS5Q)deCd;y=17;U871beFm~^~mLA^^hqN}7eBIu5aLXe7 zd2uGj&Wx{ShmlZ$?+umFZ|@K!G@{%?3^!6Om$_4~XVpb zVk?mJfRZDjRYMq#x-EC1*N={955UsDK|`Ec(i|_6xmq z=10-izQI8{@+~VHo9M(u8ZejF?)eBz&NGFKVR52cQlh!3bAZ?f09*qmx{|-$UylvC z1@9ys$V?@&zL`$t^W4@6Sk)UnU-5XDkdW|3SD3_3)iYh3oF-3(G@OxVZ?FOF1n=`UE94%dW2^AN{3!SU-(;)j=o)7afDx>z zr4<4$D%76l^5B%SFiyKHe_~`npiyg_ zxY5hYYTA~wp7rH)6zE>R5nj|f^-B!A*u=@g+VBwl1!DD|pH&vg_G2Gu(f8&Do*xS? z`r10S3$r>xWphqWPouU*WX+s_D*q*m2A9{$IVTaUn~*-!7jLm#O_E3aVuxR^(1oCEr#kB=#DfF9(0 z9(ced*3-wn-<^Q=@2T0A(@MrpP7jvG#yWP&vp`!3!6{K6Pa`J)Asmrq#gC zXx)MIS=NPsO6C`%g}DHbu@=`gHFALdgv&3V8cM2-Lzpwn`ag?&$gCMnFz9&Vn7_FhFHnt8GvDm`?s;@ zgYOP9t=;*@+mf&P|0~b!XO8S(_hFdn9qc>;R0rZFdigUM#~RiEIaC&VrTNlag66(n z8*2YN?tlB-H{)T1$`>T}AANt|)oWrcm46wbsW`lfnmSS1T9l*qvC`abNcrO1YYTDNVB7*w}q|I1Eb9+EbWp*Ezp@B5)FCodnS@sb51 zn*%o2=ZRxFiENU&f+q0rpHwCZ-Nl5JJUs9`BBZXgn*O#_;7feiu{e2C7?vJT%g3FM zJ64GPj-m=prRg{2=xcGjd^j!jN+WF@Q0VXS7;KS{x092`t_5@bGg+v=nOV-f$g+_D zCanphc@A!m)>0o<6~mr{M1FVGZ+xmpeEC zI7!8q7uIQJhtvNd4AWCOW)5uL6 zJ@tKygEy0SH+h}!4BT&R$$wkVEki7avvb$+m)fgm%~-sN$ju%4s89~amOcOZ_YDye z4Eb9)PSVr7rHN^2VejADJj)g*1vHKPSVkB6*E{!(!!9m-YU}DOt`&Zx0q=^q2=l-W za1P4m2j=A?qT{pG*7%?jXq@uyU0yEuPJWgB1p8p-6Yb>Rd~=sLG-H^SvfdSjp+OSI z1bfCc*xGz1SO+F;zUVK!89nFsZp_NuGL}vcC9f~y<`1^rc~w!S)P`e!hEtTb;ywDQPFvktWZ($!b`LPNgQAcy#%0X7|HQxl;vy2$$c(Ri} zh32JeDEDB)Kpr!?%{tiJEKUZ1qap(Z2$Gvh3R&6&Tg>8jyk8`P1fOU&n`H{klR;lK z_`;Q59cNAi-;%$QQ}7i0T23EY-}VYUA!90XYeLQEraUnno@z1)u%TU`!88K)^aPQ< z_(!f?=Nrp&;aFeYdg6QjkfVhcOTypyyhoI^ofScp=Z{m#dNAh??d0S_Me6h!NK^H7 z#TM$t^tKsDV^rv4wXGvsD&(HA)#qTk@?m+pd}D$Ap@DB?t6~9@(4FyKjk+lwzaaeR z#ibDIh9yGaD;O4lCMJ0jqKqGGD1GWLPST1TEV6DrvgJWoPfobunSCW&EE&W{x*h_}U<+FNMk;li%0aQt2p3b)|mQqLx^g`z!8 z0%LP!ae`Kr@Ea3(5*XWSBhw8St_v@19nyc*&$qrT;<5p&HrP{wt@HeRNu{!xWc1{Rsz8#M zGM*_LH@XKWhJ`RV;qdsOhVw@QleBghb)ZI-2tGdxe z=1;KwMQ?+$XgqI&C4cZ$Ng2Z4<=K0!LrG=*v>y^r!#kz8R?$J&hMi14e}!;}f7@lm z=xP%58TZLo_AY_Wn$~k%Srzm>{5Vg+$gxv2eKsZ}$s{MDQ&>4<>*NIbvba;9_&nPP zb3UH76iOCMdXV*N;+*g!%cHv|_nP(Y8k!*}9|)qA`>~jR-oGSF(uqICNjK_1EOI~! zAfkjXd`JN2HU%c+F#=Y~O~Wkr%#m!|Xo*wtH~#c__8gcQh!rFe3W;c2VZs&H+e00${aoztMPJ{7djL8$x1G<^yqr^}_0Y?d@bkfrZ$2I+{yMN#RI&Y=1 zqc2FfzZD82L|J-FAZnSI5Ff=BPC?;2L?&vc^-Pv7do_6LC)__}a}5 zlN=JKn|+V5sqLRXPqaxay!V0)bk1I&{x1N%BhnS+GqQoD)Sr=7L-^I(Ne@t)ZM%^X zTYomtzQ-!<>&!s|Ha2iO%gc5Ioel|u&MK-jAyz^SJ)tKw2%6Slp7^ug@00<2cHWhuk8~%CV}vMuqTQYrbZUgNm3`CdymwbYVbA!vA== zV44O^8{P-+*?^5$C6t-=r!K3HNY-Vs*|)iN+3euw@+Jn%5m^btieD(R6X-OO`t|o9 zJebES)duntq=i~x$`IEN30fbBTk(P{vIfAmv^q)PfthK$#+4Ty&2~njsA#`4m!{eL zTS8i)&z7*Rt)e*f&O{zs1C(u0a@9O&BCZ~5+Zf}j zXO5`E;~HqwK$Y=tiKmGkZC18k+Kgd_ZC9D+gU)33FX%oW12EoewDLsa$eI;cP8|?2 z79(@zy#GM%wwhW`n4gZQ61&!QMfR}3`gnb)Qz50buga%SV8Rx9^Qm&+YJ}%+b#pzf zNQeZb<-qS{A6`v4Yl&1C3S=)>yZtnwjCk@5`H>V$8;e7M^P=S*T0oUoxg9#Xs%`0) z$+oLS>wxV|HeeCoyTd2&GzGUp=}*)3AYAJCj^thSAP+ybZAX9W{h3lU=f&n(Hga?n z(ttVCsd29no**Pd4Uo_$4&EN;+)kb_PiWT;bf=S(za_N;cu_Eh$BWQ`VufM>39c&iAd) z_wo5X9>2%$@%#5ZU-SKXy`O862ok3MxX7!2ujgZcH026$e?Wu6e@i5?SQnl9)sg;+ zIOJ?0%PR~mWsQ; zzOe0_{QRdV_+yF{+5sU*iyC6P%R2sjrrb4PZeL#VkdW76KD{_37VCX#jz&}PR@(iAKSd8~0>=Q&>tnH-Xq zSF+oJKv#8+?1f*LHqtA2`BO$sjQg}wSW8gg&v-%d`IMuS7ZR*b>@ov&tLYyT@Xu{n zLCnygEen{F%?sMMPmm$2Uohkd#=`jR zq|ctvJb1D*(kU~JZx2$OC7E9j*|lN@)etKok4#|eggx$E-c7p%!!wR<#rXYOmmXUx zJgnMEfCsUf4p4!M+dCW2Q;dImMNGxVsp}CqC6#hFE15f62x=fdG4~=P+^|~##o#;- zBXr%P?wh&h~2k7F7N6Aa81-TaIkH^k4of3A0`!TLBkoB;oBiT zlaEYx4|@k~VUM$ya+pbPy?G_d%DX)`cRW>C5xcfCvw5iG#bEhU0x85yp= zzCMS>Ai@mN{|!htY;QnAt2@c(D=RC(ox;5yE4#EH`jAYtDtU_y?|OL|?K1}eGNUK^ z8E{?*sz(LnI7fodD0;q+x4sq{D$xvbM@luFJfPSu?jk+k+eh*VQ$9~FlTa751PJS` zS*0N|BZ(!pKefOLR1N0K{ZhD+)=38G64`>NP?< z$voiun(})s;YI?a-~d90C}>*q>}2_t-C;wwil?uCxvw;q`4MQX597U~<`jd*Y@lvK00qX6eI zpC9qt;MiOk$uSVOv=DuYp$WGsbzumwt+<5>w|MOyMZAUV1z0{@09INMt zm~HxXTZBvDYjcr5hbiYtZuq;9;mE7*uJJMa75Lx=VqCKQ8)HGYd{3&(fk11*Jo>ueTEFp#MqRS!aiamqW$K3B1u1p0RS8XqlU)hnmrp) z{l0p?VB?y<$&Qgthd-gHTWsil+5L%{n_g(<&56fp9TKY)my~*N^@CELR_y zFjw?X-2&AT`e&y?|Ci$|zVB;SS8hbNR6YwD8YIl9mzciFErU?N`!~hRlg5>s-t{={ zvaSfZWh8BucH{|Kkw7&|@~dxBOWN|WTFH)34hWNxwJA0V8g;IOah$qN`%v;Y8^r`t>DxmY1b#tp;_?h+8L`Hl#M3{>1MQSPVdLoXu-ma4iY8e*`KjqOkbDPmb4yEs>G-$m?)dWbZS+#Qcl$M5* zOYINpa4eSM|2)*Em;e6F{YL{qn-@c8{8qCfaLTO2_(g(gm*mW6|B~fs5wO6Z_rYcD zW5SJ7enN(;`&n?MB`+>g^}lXJnldIZ6e^S}r9GfaoY=qg{afEG9~ zlEajX4}_)v8@qAZ3Lr}TUX-em7j8{BfAiFZ-Y3mq{CV~XcKAZt-A@DA_fFass)Fp_ z1;y+pfWQ0D@NYHaJl|vYob0vcq^zH^pB#rp>KW{JqN^8+T~7~GYhBPH_O2nwJDLk8 z+~j#=*-FsrgI6XIiVmF+v;QO!v1f^16r2Ckv7r7L+8kW`_4n)Q1o9#b79mz);kSL` z%O&7VaIT8_2M{!B=% zfgNrHM+4~b@v!S;60m##ccF_oBbuvdNcW=AdA6&^Ivd zi4nQz^;vmxvW+XaBRyZqEG%ZUIHhBNNNK;-QCglrgo(gGAJoXuV)nhFqP)vKX^X`MHuiX)fY>C8&ow%lpb!Z&fy0CbJIUin z^a1~-fE5|W_crVFv7iMGe5CJ^+vVD7dzEs(auB3{@}{};oW?xc0})botJ*?jkGK`e zF=3`+FZyAG*m2k18xZG>!x z6&*!X_?!I3CCD!<9j+d>Ni@VNR1Gw^I>y z8D@n&gM{s8UfGSdF(!tt1Qiu3{JH;XpkYbZX%KRwK^1Z4;dw?^Uq91M(8(z9xZRmX z?le7$mHM)~M&q>9$LyC))=YUsu->X2f98~-mZx`QWo9OTB1JP`4J7n2vnsX$&WR*53vP{XV_hb^~fcTeZa!6T<*Zh%YJk(=0&o*FVoq}0eZF8G{Q616kkXgag>wblu{ z;r8Sabm1;6{O(&7HQJ_2b2H8a{KmnJ??tBEos8nc0*q-guWl8YnI2->H1t89jb_wtk4kKx zfC#*fyZcJb=QOABGIJ8>*M>N7mC*axG3dP2UHD5~=kuQ4t^)`$`P@PSrIqORk*?iC zd-q1bnbEAYEC;v=6xXyhj2Hh#{Jt9aVtPZ=1tvmmMO;#D?ncAr?;a!oXja~qV9MN0 zD1{1L;wF(aKodF<?toAo}Ly_9C zy{pQW!ti?BUQ_z^*$XMj7Iok#H+6Oy)Z^zDT=xP1&%q9ugKK3q*rhtv6V;XWZZ_V7 zl-6j|i&IXNBbH|^h@sSWPj5e0-4 zt{B(_5T;Z03p78AGTT#aXo`PZk%^(+e z=L|S&oCkfY6iKMQBN|VU3SLzSYS^6v6~1PoK@qm2QO@p__jd3R|HIrA_pa9nzGL6J76_mVNua{RGU2`fW{@Ot`{T4cl6Uo( z_BQGHQgz2E05X?*!cOaOlWMDQz_U&d_Bm*)z+rHl_IEbENSqLx3_AQrIHlHFFse_ zJWw?#dO;R~m=#^SCB1J{68Fb-ZG#C};{V!&7`jjy$9uig+z_9yP++>5U~332*ipYn ziyY?*64e%?Y;=jQ1*Iw&9^;7f&n+QlfsgXxM=AdzTQbyXUh9Aea%-f5YHn_LI=F9t z^|p>3lvsx=7wtBvuB57|KXC>beaZq6ck{mx+--lup=jTK05&~aF99I9SmUBPH2FS5nx&$ zLs^&zN#~(L>XFMkVwT5YTu~uKj$-~dX8cSoJC(ZLE4pWY7#x#_M)JITcx44a3>m`3 zEKqVs>)s}5+X}SslOwrFYXwQ*t}C5`SkQPb{p(|~7$a#ISJBXDcANF%Gmf*^p?Rt&wxbFc_*dXU=u`FHKl zqK_G)ayJk7=CUxzxEXZgPv1&o?WeExX%kGIt7{Kly_fjgdnyR8Ik_^LnUos-wtSLe ztlI(4(4}fnJ24?SYn-Ow8t0QWX_S)Yau5%LvS{u8cS8~F| zuV{|Qo^?4IF-g=-&yEqD@{?KIlf{if3f6e_ixHyy$65}z6@8im5K^N*t6@8}V)$#nD=K`Lw(_$*E!)=Kg?zz2JZPAyd`Yax;#npJ?KVX(voWc|bkj`~K zb{Vx@x~?(ZtU*o$m6Wvzv+EUCmzAkeXWYbpPmdwLOHZeR+tc7n_cm5HhYq&JKUmRA zj&M_5KuQHNf3$GO;Y@Zj$$vA`{|KemzS3pJ$FxqMp}pQALVWaPtc zy`K?%_l3YyKUzJwS4+f-5c*o96ZKd(oezwozAg?39io3IYu<$9+=$iy(kvGeNL_TafPgxyB@y|Cqc+?>NtbPXDnLKAF6BuQs<@lp7QZ{z&8C{^ z@rLVZbDf;!G6oE zKiS!Dxn#Z^J*tROt8qqQtUc&MS0yOfkM+M&GzU&>H{zoudEl*?cSLw;WIUup;SaQ3 z=)lZmeRp`b6P@^Q9aF--j+>qRXM?kAFL;-D&}Ldwh$&~6H_<~E3tHb7Ea_h&EZO1p8g@Aebf(6d{XGpWVXRe7rv*U9GesW03z1wh zzN_|HrnaT4Ekrown678?(i;kGD3IV7ehzK++T^Kw&Q^8owNR~IjFV1AOjczl&%B!& z#}cbNb_-b6ak|{_q229^a&QPN)>m9|$;aY0jDvYJfXDz$Dl7ZcPnQ0$PLN$+Bvg0y zax!{P`f$O~RqeEMO2}jvY3byfijgj(-PlJxlG~;KU4AS~~fe z{Z2tVANe%q!Sd3%f!yA$j(P=4E{7dwzUBWrCL4E5yGr3r`YQB~+`v1JzdJJ>pWJq)j z>;C+lCQ1i-`<7Ma4e2AzH+jLjJC}md3AcU4Hr8LnD-Gi~gxAB^U$#;e zJBL3NxF5jaiXPG<;la);53p;aPS1V0KQ&s>MfSSSd~dfQGBGi|Bn45af291II&JNY zjd#WF?nraBw6yMIWoHRj{Wz4b2Rm^>8Ct;D`gG3ByMFSg!LzD9p3haAn{9q9X<7f8 zl?`$>#n}#eeM8C6R#!}Z++4{xM5pdp)K&pe+*ZM{^()OmEiZ4;W{G<8N-zsXcHLNc zcBkO9L!S1nv#{dS6azsG%H*wS5%FFxzRCar6O*DQ-30^Pa{l|@6BY!zM; Date: Tue, 5 Dec 2023 17:28:10 +0000 Subject: [PATCH 19/38] Automatic changelog for PR #5101 [ci skip] --- html/changelogs/AutoChangeLog-pr-5101.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5101.yml diff --git a/html/changelogs/AutoChangeLog-pr-5101.yml b/html/changelogs/AutoChangeLog-pr-5101.yml new file mode 100644 index 000000000000..7f32e633a006 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5101.yml @@ -0,0 +1,4 @@ +author: "Blundir" +delete-after: True +changes: + - rscadd: "added new ammo boxes for various weapons and ammo" \ No newline at end of file From b5db91826aefc7156f081d79399a8195be571c9b Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 6 Dec 2023 01:12:24 +0000 Subject: [PATCH 20/38] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-5101.yml | 4 ---- html/changelogs/AutoChangeLog-pr-5114.yml | 4 ---- html/changelogs/archive/2023-12.yml | 5 +++++ 3 files changed, 5 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-5101.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-5114.yml diff --git a/html/changelogs/AutoChangeLog-pr-5101.yml b/html/changelogs/AutoChangeLog-pr-5101.yml deleted file mode 100644 index 7f32e633a006..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5101.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Blundir" -delete-after: True -changes: - - rscadd: "added new ammo boxes for various weapons and ammo" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5114.yml b/html/changelogs/AutoChangeLog-pr-5114.yml deleted file mode 100644 index 40d7511129e0..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5114.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - bugfix: "Fixes runtime in spiders.dm\n/🆑" \ No newline at end of file diff --git a/html/changelogs/archive/2023-12.yml b/html/changelogs/archive/2023-12.yml index 67ea37a11d6b..f6213027ce92 100644 --- a/html/changelogs/archive/2023-12.yml +++ b/html/changelogs/archive/2023-12.yml @@ -78,3 +78,8 @@ silencer_pl: - admin: Recieving prayers now makes a sound - admin: Prayers and USCM emergency messages are now better highlighted for mods/admins +2023-12-06: + Birdtalon: + - bugfix: "Fixes runtime in spiders.dm\n/\U0001F191" + Blundir: + - rscadd: added new ammo boxes for various weapons and ammo From 27bfef6d2036671fa72f7fecfd5ab1a1a9927f3f Mon Sep 17 00:00:00 2001 From: Ediblebomb <95509996+Ediblebomb@users.noreply.github.com> Date: Wed, 6 Dec 2023 00:34:53 -0600 Subject: [PATCH 21/38] Functional M5 Gasmask 2: Electric Boogaloo (#5083) # About the pull request Makes the M5 Gasmask actually work 70% NVG code 30% trial and error ### This time I *probably* won't fuck things up. #5072 # Explain why it's good for the game Consistency, the regular gasmask protects you against CN20 Nerve Gas, whereas the helmet gasmask previously did not. # Testing Photographs and Procedure
      Screenshots & Videos https://github.com/cmss13-devs/cmss13/assets/95509996/8f4c2eed-4ad6-477d-83d4-1b87630d7ff7
      # Changelog :cl: Ediblebomb add: M5 Helmet Gasmask now functions as a gasmask when in a marine helmet (and yes, gasmasks do still have some functionality) /:cl: --------- Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/game/objects/items/props/helmetgarb.dm | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/code/game/objects/items/props/helmetgarb.dm b/code/game/objects/items/props/helmetgarb.dm index 92c9f106170f..d8e65f1a3cd3 100644 --- a/code/game/objects/items/props/helmetgarb.dm +++ b/code/game/objects/items/props/helmetgarb.dm @@ -496,6 +496,30 @@ desc = "The USCM had its funding pulled for these when it became apparent that not every deployed enlisted was wearing a helmet 24/7; much to the bafflement of UA High Command." icon_state = "helmet_gasmask" +/obj/item/prop/helmetgarb/helmet_gasmask/on_enter_storage(obj/item/storage/internal/helmet_internal_inventory) + ..() + if(!istype(helmet_internal_inventory)) + return + var/obj/item/clothing/head/helmet/helmet_item = helmet_internal_inventory.master_object + + if(!istype(helmet_item)) + return + + helmet_item.flags_inventory |= BLOCKGASEFFECT + helmet_item.flags_inv_hide |= HIDEFACE + +/obj/item/prop/helmetgarb/helmet_gasmask/on_exit_storage(obj/item/storage/internal/helmet_internal_inventory) + ..() + if(!istype(helmet_internal_inventory)) + return + var/obj/item/clothing/head/helmet/helmet_item = helmet_internal_inventory.master_object + + if(!istype(helmet_item)) + return + + helmet_item.flags_inventory &= ~(BLOCKGASEFFECT) + helmet_item.flags_inv_hide &= ~(HIDEFACE) + /obj/item/prop/helmetgarb/trimmed_wire name = "trimmed barbed wire" desc = "It is a length of barbed wire that's had most of the sharp points filed down so that it is safe to handle." From 23bc6641625951b3833371954d3dd690f6e6843b Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 6 Dec 2023 06:43:24 +0000 Subject: [PATCH 22/38] Automatic changelog for PR #5083 [ci skip] --- html/changelogs/AutoChangeLog-pr-5083.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5083.yml diff --git a/html/changelogs/AutoChangeLog-pr-5083.yml b/html/changelogs/AutoChangeLog-pr-5083.yml new file mode 100644 index 000000000000..8688793c2ffb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5083.yml @@ -0,0 +1,4 @@ +author: "Ediblebomb" +delete-after: True +changes: + - rscadd: "M5 Helmet Gasmask now functions as a gasmask when in a marine helmet (and yes, gasmasks do still have some functionality)" \ No newline at end of file From 74887d9b1e59a3d6c39d1978e67321960f0b44ee Mon Sep 17 00:00:00 2001 From: SabreML <57483089+SabreML@users.noreply.github.com> Date: Wed, 6 Dec 2023 06:40:10 +0000 Subject: [PATCH 23/38] Fixes the the majority of "The the" in chat messages (Part 2) (#5121) # About the pull request Fixes instances of `"The the item"` and `"A the item"` in chat messages so that they display as `"The item"` and `"A item"` instead. See #5087 for more details. # Explain why it's good for the game Better english I guess. # Testing Photographs and Procedure
      Screenshots **Before:** ![old](https://github.com/cmss13-devs/cmss13/assets/57483089/649bf896-e712-4f8c-9e7f-d64403a1e45a) ![pizza before](https://github.com/cmss13-devs/cmss13/assets/57483089/d00a158f-fcab-4aec-b044-f5d591b12aad) ![cigarette before](https://github.com/cmss13-devs/cmss13/assets/57483089/463a0b36-1ee9-4b3b-bf63-36326edd04c3) ![barricade before](https://github.com/cmss13-devs/cmss13/assets/57483089/92bffce0-c2f4-47c9-8358-b9c36474c787) **After:** ![new](https://github.com/cmss13-devs/cmss13/assets/57483089/991a230c-2e5a-4dac-8d32-4af91b957715) ![pizza after](https://github.com/cmss13-devs/cmss13/assets/57483089/9bfb1388-d712-4386-beca-0c924e4f1adf) ![cigarette after](https://github.com/cmss13-devs/cmss13/assets/57483089/fd707f3e-583e-49da-97c9-9972f9013de3) ![barricade after](https://github.com/cmss13-devs/cmss13/assets/57483089/65d8d0c3-921a-41c2-a640-27f184db01d8)
      # Changelog :cl: spellcheck: Fixed instances of "The the" and "A the" in chat messages so that they're just "The" instead. (Part 2) /:cl: --- .../items/reagent_containers/food/snacks.dm | 14 ++++----- .../objects/items/reagent_containers/glass.dm | 12 +++---- .../objects/items/robot/robot_upgrades.dm | 2 +- .../objects/items/storage/large_holster.dm | 4 +-- code/game/objects/items/tools/flame_tools.dm | 31 +++++++++---------- .../game/objects/items/tools/kitchen_tools.dm | 2 +- .../objects/items/tools/maintenance_tools.dm | 4 +-- code/game/objects/items/tools/misc_tools.dm | 2 +- code/game/objects/items/toys/toys.dm | 10 +++--- code/game/objects/items/weapons/stunbaton.dm | 8 ++--- code/game/objects/items/weapons/weaponry.dm | 2 +- code/game/objects/structures.dm | 2 +- .../objects/structures/barricade/metal.dm | 4 +-- .../objects/structures/barricade/plasteel.dm | 6 ++-- .../structures/crates_lockers/closets.dm | 2 +- code/game/objects/structures/flora.dm | 3 +- code/game/objects/structures/grille.dm | 2 +- code/game/objects/structures/props.dm | 5 ++- code/game/objects/structures/watercloset.dm | 4 +-- code/game/turfs/auto_turf.dm | 2 +- code/game/turfs/open.dm | 4 +-- code/game/turfs/snow.dm | 5 +-- code/game/verbs/who.dm | 2 +- code/modules/admin/tabs/event_tab.dm | 6 ++-- code/modules/admin/topic/topic.dm | 6 ++-- code/modules/clothing/head/misc_special.dm | 4 +-- code/modules/clothing/under/under.dm | 2 +- code/modules/cm_aliens/XenoStructures.dm | 4 +-- .../modules/cm_marines/NonLethalRestraints.dm | 2 +- code/modules/cm_preds/yaut_bracers.dm | 2 +- code/modules/cm_tech/implements/engi_czsp.dm | 2 +- 31 files changed, 77 insertions(+), 83 deletions(-) diff --git a/code/game/objects/items/reagent_containers/food/snacks.dm b/code/game/objects/items/reagent_containers/food/snacks.dm index 2892eb1113e7..eb33ca6b1d0f 100644 --- a/code/game/objects/items/reagent_containers/food/snacks.dm +++ b/code/game/objects/items/reagent_containers/food/snacks.dm @@ -217,10 +217,10 @@ if(isanimal(M)) if(iscorgi(M)) if(bitecount == 0 || prob(50)) - M.emote("nibbles away at the [src]") + M.emote("nibbles away at [src]") bitecount++ if(bitecount >= 5) - var/sattisfaction_text = pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where the [src] was") + var/sattisfaction_text = pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where [src] was") if(sattisfaction_text) M.emote("[sattisfaction_text]") qdel(src) @@ -2801,7 +2801,7 @@ if( open && pizza ) user.put_in_hands( pizza ) - to_chat(user, SPAN_DANGER("You take the [src.pizza] out of the [src].")) + to_chat(user, SPAN_DANGER("You take the [src.pizza] out of [src].")) src.pizza = null update_icon() return @@ -2852,11 +2852,11 @@ box.update_icon() update_icon() - to_chat(user, SPAN_DANGER("You put the [box] ontop of the [src]!")) + to_chat(user, SPAN_DANGER("You put [box] ontop of [src]!")) else to_chat(user, SPAN_DANGER("The stack is too high!")) else - to_chat(user, SPAN_DANGER("Close the [box] first!")) + to_chat(user, SPAN_DANGER("Close [box] first!")) return @@ -2868,9 +2868,9 @@ update_icon() - to_chat(user, SPAN_DANGER("You put the [I] in the [src]!")) + to_chat(user, SPAN_DANGER("You put [I] in [src]!")) else - to_chat(user, SPAN_DANGER("You try to push the [I] through the lid but it doesn't work!")) + to_chat(user, SPAN_DANGER("You try to push [I] through the lid but it doesn't work!")) return if( istype(I, /obj/item/tool/pen/) ) diff --git a/code/game/objects/items/reagent_containers/glass.dm b/code/game/objects/items/reagent_containers/glass.dm index e2a9ba537b0d..2a7bde748fba 100644 --- a/code/game/objects/items/reagent_containers/glass.dm +++ b/code/game/objects/items/reagent_containers/glass.dm @@ -237,7 +237,7 @@ overlays += lid /obj/item/reagent_container/glass/minitank - name = "MS-11 Smart Refill Tank" + name = "\improper MS-11 Smart Refill Tank" desc = "A robust little tank capable of refilling autoinjectors that previously required a nanomed system to refill. Using the wonders of microchips, it automatically sorts the correct chemicals into most single reagent autoinjectors. It is unable to partially fill them however. A valve exists on the top to transfer reagents to another container or to flush it entirely." icon = 'icons/obj/items/tank.dmi' icon_state = "mini_reagent_tank" @@ -277,7 +277,7 @@ if(istype(W, /obj/item/reagent_container/hypospray/autoinjector)) var/obj/item/reagent_container/hypospray/autoinjector/A = W if(A.mixed_chem) - to_chat(user, SPAN_WARNING("The autoinjector doesn't fit into the [src]'s valve. It's probably not compatible.")) + to_chat(user, SPAN_WARNING("The autoinjector doesn't fit into [src]'s valve. It's probably not compatible.")) return if(reagents.has_reagent(A.chemname, A.volume)) reagents.trans_id_to(A, A.chemname, A.volume) @@ -285,10 +285,10 @@ A.update_icon() playsound(src.loc, 'sound/effects/refill.ogg', 25, 1, 3) else - to_chat(user, SPAN_WARNING("A small LED on \the [src] blinks. The tank can't refill \the [A] - it's either incompatible or out of chemicals to fill it with!")) + to_chat(user, SPAN_WARNING("A small LED on [src] blinks. The tank can't refill [A] - it's either incompatible or out of chemicals to fill it with!")) . = ..() return - to_chat(user,SPAN_INFO("You successfully refill \the [W.name] with \the [src]!")) + to_chat(user, SPAN_INFO("You successfully refill [A] with [src]!")) /obj/item/reagent_container/glass/minitank/verb/flush_tank(mob/user) set category = "Object" @@ -299,7 +299,7 @@ to_chat(user, SPAN_WARNING("It's already empty!")) return playsound(src.loc, 'sound/effects/slosh.ogg', 25, 1, 3) - to_chat(user, SPAN_WARNING("You work the flush valve and successfully flush \the [src]'s contents!")) + to_chat(user, SPAN_WARNING("You work the flush valve and successfully flush [src]'s contents!")) reagents.clear_reagents() update_icon() // just to be sure return @@ -672,5 +672,5 @@ if(istype(AM) && (src in user)) user.visible_message("[user] starts to wipe down [AM] with [src]!") if(do_after(user,30, INTERRUPT_ALL, BUSY_ICON_GENERIC)) - user.visible_message("[user] finishes wiping off the [AM]!") + user.visible_message("[user] finishes wiping off [AM]!") AM.clean_blood() diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 34debd7c60cf..de2daa9a3009 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -12,7 +12,7 @@ /obj/item/robot/upgrade/proc/action(mob/living/silicon/robot/R) if(R.stat == DEAD) - to_chat(usr, SPAN_DANGER("The [src] will not function on a deceased robot.")) + to_chat(usr, SPAN_DANGER("[src] will not function on a deceased robot.")) return 1 return 0 diff --git a/code/game/objects/items/storage/large_holster.dm b/code/game/objects/items/storage/large_holster.dm index 76f98c423974..b02dff1bdbcc 100644 --- a/code/game/objects/items/storage/large_holster.dm +++ b/code/game/objects/items/storage/large_holster.dm @@ -250,12 +250,12 @@ return FALSE if(user.back != src) - to_chat(user, "The [src] must be equipped before you can switch types") + to_chat(user, SPAN_WARNING("[src] must be equipped before you can switch types.")) return var/obj/item/weapon/gun/flamer/M240T/flamer = user.get_active_hand() if(!istype(flamer)) - to_chat(user, "You must be holding the M240-T incinerator unit to use [src]") + to_chat(user, SPAN_WARNING("You must be holding [flamer] to use [src].")) return if(!active_fuel) diff --git a/code/game/objects/items/tools/flame_tools.dm b/code/game/objects/items/tools/flame_tools.dm index 7681e74a1d88..82870f7ed8d1 100644 --- a/code/game/objects/items/tools/flame_tools.dm +++ b/code/game/objects/items/tools/flame_tools.dm @@ -233,12 +233,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM light(SPAN_NOTICE("[user] fiddles with [W], and manages to light their [name].")) else if(istype(W, /obj/item/attachable/attached_gun/flamer)) - light(SPAN_NOTICE("[user] lights their [src] with the [W].")) + light(SPAN_NOTICE("[user] lights their [name] with [W].")) else if(istype(W, /obj/item/weapon/gun/flamer)) var/obj/item/weapon/gun/flamer/F = W if(!(F.flags_gun_features & GUN_TRIGGER_SAFETY)) - light(SPAN_NOTICE("[user] lights their [src] with the pilot light of the [F].")) + light(SPAN_NOTICE("[user] lights their [name] with the pilot light of [F].")) else to_chat(user, SPAN_WARNING("Turn on the pilot light first!")) @@ -246,20 +246,20 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/obj/item/weapon/gun/G = W for(var/slot in G.attachments) if(istype(G.attachments[slot], /obj/item/attachable/attached_gun/flamer)) - light(SPAN_NOTICE("[user] lights their [src] with [G.attachments[slot]].")) + light(SPAN_NOTICE("[user] lights their [name] with [G.attachments[slot]].")) break else if(istype(W, /obj/item/tool/surgery/cautery)) - light(SPAN_NOTICE("[user] lights their [src] with the [W].")) + light(SPAN_NOTICE("[user] lights their [name] with [W].")) else if(istype(W, /obj/item/clothing/mask/cigarette)) var/obj/item/clothing/mask/cigarette/C = W if(C.item_state == icon_on) - light(SPAN_NOTICE("[user] lights their [src] with the [C] after a few attempts.")) + light(SPAN_NOTICE("[user] lights their [name] with [C] after a few attempts.")) else if(istype(W, /obj/item/tool/candle)) if(W.heat_source > 200) - light(SPAN_NOTICE("[user] lights their [src] with the [W] after a few attempts.")) + light(SPAN_NOTICE("[user] lights their [name] with [W] after a few attempts.")) return @@ -529,12 +529,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM light(SPAN_NOTICE("[user] fiddles with [W], and manages to light their [name] with the power of science.")) else if(istype(W, /obj/item/attachable/attached_gun/flamer)) - light(SPAN_NOTICE("[user] lights their [src] with the [W], bet that would have looked cooler if it was attached to something first!")) + light(SPAN_NOTICE("[user] lights their [name] with [W], bet that would have looked cooler if it was attached to something first!")) else if(istype(W, /obj/item/weapon/gun/flamer)) var/obj/item/weapon/gun/flamer/F = W if(!(F.flags_gun_features & GUN_TRIGGER_SAFETY)) - light(SPAN_NOTICE("[user] lights their [src] with the pilot light of the [F], the glint of pyromania in their eye.")) + light(SPAN_NOTICE("[user] lights their [name] with the pilot light of [F], the glint of pyromania in their eye.")) else to_chat(user, SPAN_WARNING("Turn on the pilot light first!")) @@ -546,16 +546,16 @@ CIGARETTE PACKETS ARE IN FANCY.DM break else if(istype(W, /obj/item/tool/surgery/cautery)) - light(SPAN_NOTICE("[user] lights their [src] with the [W], that can't be sterile!")) + light(SPAN_NOTICE("[user] lights their [name] with [W], that can't be sterile!")) else if(istype(W, /obj/item/clothing/mask/cigarette)) var/obj/item/clothing/mask/cigarette/C = W if(C.item_state == icon_on) - light(SPAN_NOTICE("[user] lights their [src] with the [C] after a few attempts.")) + light(SPAN_NOTICE("[user] lights their [name] with [C] after a few attempts.")) else if(istype(W, /obj/item/tool/candle)) if(W.heat_source > 200) - light(SPAN_NOTICE("[user] lights their [src] with the [W] after a few attempts.")) + light(SPAN_NOTICE("[user] lights their [name] with [W] after a few attempts.")) ///////////////// //SMOKING PIPES// @@ -751,7 +751,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM else playsound(src.loc,"lighter",10, 1, 3) if(prob(95)) - user.visible_message(SPAN_NOTICE("After a few attempts, [user] manages to light the [src].")) + user.visible_message(SPAN_NOTICE("After a few attempts, [user] manages to light [src].")) else to_chat(user, SPAN_WARNING("You burn yourself while lighting the lighter.")) @@ -759,7 +759,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM user.apply_damage(2,BURN,"l_hand") else user.apply_damage(2,BURN,"r_hand") - user.visible_message(SPAN_NOTICE("After a few attempts, [user] manages to light the [src], they however burn their finger in the process.")) + user.visible_message(SPAN_NOTICE("After a few attempts, [user] manages to light [src], they however burn their finger in the process.")) set_light_range(2) set_light_on(TRUE) @@ -777,10 +777,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM item_state = icon_off if(!silent) if(istype(src, /obj/item/tool/lighter/zippo) ) - bearer.visible_message("You hear a quiet click, as [bearer] shuts off [src] without even looking at what they're doing.") + bearer.visible_message(SPAN_ROSE("You hear a quiet click, as [bearer] shuts off [src] without even looking at what they're doing.")) playsound(src.loc,"zippo_close",10, 1, 3) else - bearer.visible_message(SPAN_NOTICE("[bearer] quietly shuts off the [src].")) + bearer.visible_message(SPAN_NOTICE("[bearer] quietly shuts off [src].")) set_light_on(FALSE) STOP_PROCESSING(SSobj, src) @@ -805,4 +805,3 @@ CIGARETTE PACKETS ARE IN FANCY.DM cig.light(SPAN_NOTICE("[user] holds the [name] out for [M], and lights the [cig.name].")) else ..() - diff --git a/code/game/objects/items/tools/kitchen_tools.dm b/code/game/objects/items/tools/kitchen_tools.dm index bb763ada9911..2cff941be8d6 100644 --- a/code/game/objects/items/tools/kitchen_tools.dm +++ b/code/game/objects/items/tools/kitchen_tools.dm @@ -218,7 +218,7 @@ var/cooldown = 0 /obj/item/tool/kitchen/tray/attack(mob/living/carbon/M, mob/living/carbon/user) - to_chat(user, SPAN_WARNING("You accidentally slam yourself with the [src]!")) + to_chat(user, SPAN_WARNING("You accidentally slam yourself with [src]!")) user.apply_effect(1, WEAKEN) user.take_limb_damage(2) diff --git a/code/game/objects/items/tools/maintenance_tools.dm b/code/game/objects/items/tools/maintenance_tools.dm index a326808bf491..a02536800f15 100644 --- a/code/game/objects/items/tools/maintenance_tools.dm +++ b/code/game/objects/items/tools/maintenance_tools.dm @@ -96,8 +96,8 @@ if(E) var/safety = H.get_eye_protection() if(!safety) - to_chat(user, SPAN_DANGER("You stab [H] in the eyes with the [src]!")) - visible_message(SPAN_DANGER("[user] stabs [H] in the eyes with the [src]!")) + user.visible_message(SPAN_DANGER("[user] stabs [H] in the eyes with [src]!"), + SPAN_DANGER("You stab [H] in the eyes with [src]!")) E.take_damage(rand(8,20)) return ..() /obj/item/tool/screwdriver/tactical diff --git a/code/game/objects/items/tools/misc_tools.dm b/code/game/objects/items/tools/misc_tools.dm index f70f93497021..44aaab771db8 100644 --- a/code/game/objects/items/tools/misc_tools.dm +++ b/code/game/objects/items/tools/misc_tools.dm @@ -132,7 +132,7 @@ qdel(I) //delete the paper item labels_left = initial(labels_left) else - to_chat(user, SPAN_NOTICE("The [src] is already full.")) + to_chat(user, SPAN_NOTICE("[src] is already full.")) /* Instead of updating labels_left to user every label used, diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm index 88946f5fa446..65234c59b89b 100644 --- a/code/game/objects/items/toys/toys.dm +++ b/code/game/objects/items/toys/toys.dm @@ -44,7 +44,7 @@ if(!proximity) return if (istype(A, /obj/structure/reagent_dispensers/watertank) && get_dist(src,A) <= 1) A.reagents.trans_to(src, 10) - to_chat(user, SPAN_NOTICE(" You fill the balloon with the contents of [A].")) + to_chat(user, SPAN_NOTICE("You fill the balloon with the contents of [A].")) src.desc = "A translucent balloon with some form of liquid sloshing around in it." src.update_icon() return @@ -53,22 +53,22 @@ if(istype(O, /obj/item/reagent_container/glass)) if(O.reagents) if(O.reagents.total_volume < 1) - to_chat(user, "The [O] is empty.") + to_chat(user, SPAN_WARNING("[O] is empty.")) else if(O.reagents.total_volume >= 1) if(O.reagents.has_reagent("pacid", 1)) - to_chat(user, "The acid chews through the balloon!") + to_chat(user, SPAN_WARNING("The acid chews through the balloon!")) O.reagents.reaction(user) qdel(src) else src.desc = "A translucent balloon with some form of liquid sloshing around in it." - to_chat(user, SPAN_NOTICE(" You fill the balloon with the contents of [O].")) + to_chat(user, SPAN_NOTICE("You fill the balloon with the contents of [O].")) O.reagents.trans_to(src, 10) src.update_icon() return /obj/item/toy/balloon/launch_impact(atom/hit_atom) if(src.reagents.total_volume >= 1) - src.visible_message(SPAN_DANGER("The [src] bursts!"),"You hear a pop and a splash.") + src.visible_message(SPAN_DANGER("[src] bursts!"),"You hear a pop and a splash.") src.reagents.reaction(get_turf(hit_atom)) for(var/atom/A in get_turf(hit_atom)) src.reagents.reaction(A) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 82fdf30f0fc4..310c53dd5d0f 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -106,7 +106,7 @@ bcell.update_icon() bcell.forceMove(get_turf(src.loc)) bcell = null - to_chat(user, SPAN_NOTICE("You remove the cell from the [src].")) + to_chat(user, SPAN_NOTICE("You remove the cell from [src].")) status = 0 update_icon() return @@ -183,10 +183,10 @@ // Logging if(user == L) - user.attack_log += "\[[time_stamp()]\] [key_name(user)] stunned themselves with the [src] in [get_area(user)]" + user.attack_log += "\[[time_stamp()]\] [key_name(user)] stunned themselves with [src] in [get_area(user)]" else - msg_admin_attack("[key_name(user)] stunned [key_name(L)] with the [src] in [get_area(user)] ([user.loc.x],[user.loc.y],[user.loc.z]).", user.loc.x, user.loc.y, user.loc.z) - var/logentry = "\[[time_stamp()]\] [key_name(user)] stunned [key_name(L)] with the [src] in [get_area(user)]" + msg_admin_attack("[key_name(user)] stunned [key_name(L)] with [src] in [get_area(user)] ([user.loc.x],[user.loc.y],[user.loc.z]).", user.loc.x, user.loc.y, user.loc.z) + var/logentry = "\[[time_stamp()]\] [key_name(user)] stunned [key_name(L)] with [src] in [get_area(user)]" L.attack_log += logentry user.attack_log += logentry diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 0baa83f8e791..f3c76bcff638 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -113,7 +113,7 @@ w_class = SIZE_MEDIUM attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") else - to_chat(user, SPAN_NOTICE("The [src] can now be concealed.")) + to_chat(user, SPAN_NOTICE("[src] can now be concealed.")) force = initial(force) edge = 0 sharp = 0 diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 95998d5de79a..2519ed2940d5 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -209,7 +209,7 @@ /obj/structure/proc/toggle_anchored(obj/item/W, mob/user) if(!wrenchable) - to_chat(user, SPAN_WARNING("The [src] cannot be [anchored ? "un" : ""]anchored.")) + to_chat(user, SPAN_WARNING("[src] cannot be [anchored ? "un" : ""]anchored.")) return FALSE else // Wrenching is faster if we are better at engineering diff --git a/code/game/objects/structures/barricade/metal.dm b/code/game/objects/structures/barricade/metal.dm index 4056ac9021f8..4f250eed50e9 100644 --- a/code/game/objects/structures/barricade/metal.dm +++ b/code/game/objects/structures/barricade/metal.dm @@ -110,7 +110,7 @@ to_chat(user, SPAN_NOTICE("You lack the required metal.")) return if((usr.get_active_hand()) != metal) - to_chat(user, SPAN_WARNING("You must be holding the [metal] to upgrade \the [src]!")) + to_chat(user, SPAN_WARNING("You must be holding [metal] to upgrade [src]!")) return switch(choice) @@ -150,7 +150,7 @@ to_chat(user, SPAN_NOTICE("You lack the required metal.")) return if((usr.get_active_hand()) != metal) - to_chat(user, SPAN_WARNING("You must be holding the [metal] to upgrade \the [src]!")) + to_chat(user, SPAN_WARNING("You must be holding [metal] to upgrade [src]!")) return switch(choice) diff --git a/code/game/objects/structures/barricade/plasteel.dm b/code/game/objects/structures/barricade/plasteel.dm index 85057f9a0596..dd95aa3f1baf 100644 --- a/code/game/objects/structures/barricade/plasteel.dm +++ b/code/game/objects/structures/barricade/plasteel.dm @@ -125,7 +125,7 @@ user.visible_message(SPAN_NOTICE("[user] sets up [src] for linking."), SPAN_NOTICE("You set up [src] for linking.")) else - to_chat(user, SPAN_WARNING("The [src] has no linking points...")) + to_chat(user, SPAN_WARNING("[src] has no linking points...")) return linked = !linked for(var/direction in GLOB.cardinals) @@ -210,7 +210,7 @@ if(closed) if(recentlyflipped) - to_chat(user, SPAN_NOTICE("The [src] has been flipped too recently!")) + to_chat(user, SPAN_NOTICE("[src] has been flipped too recently!")) return user.visible_message(SPAN_NOTICE("[user] flips [src] open."), SPAN_NOTICE("You flip [src] open.")) @@ -222,7 +222,7 @@ else if(recentlyflipped) - to_chat(user, SPAN_NOTICE("The [src] has been flipped too recently!")) + to_chat(user, SPAN_NOTICE("[src] has been flipped too recently!")) return user.visible_message(SPAN_NOTICE("[user] flips [src] closed."), SPAN_NOTICE("You flip [src] closed.")) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 2efd8e4e81e9..fa87cd6b2b71 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -200,7 +200,7 @@ /obj/structure/closet/attack_animal(mob/living/user) if(user.wall_smash) - visible_message(SPAN_DANGER("[user] destroys the [src]. ")) + visible_message(SPAN_DANGER("[user] destroys [src].")) for(var/atom/movable/A as mob|obj in src) A.forceMove(src.loc) qdel(src) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index f1c9daa514c1..0e4a20cf989a 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -725,7 +725,7 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE. //this bush marks the edge of the map, you can't destroy it to_chat(user, SPAN_DANGER("You flail away at the undergrowth, but it's too thick here.")) else - user.visible_message(SPAN_DANGER("[user] flails away at the [src] with [I]."),SPAN_DANGER("You flail away at the [src] with [I].")) + user.visible_message(SPAN_DANGER("[user] flails away at [src] with [I]."), SPAN_DANGER("You flail away at [src] with [I].")) playsound(src.loc, 'sound/effects/vegetation_hit.ogg', 25, 1) health -= damage if(health < 0) @@ -758,4 +758,3 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE. desc = "Looks like some of that fruit might be edible." icon_tag = "plant" variations = 7 - diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 0f864ee2f116..063f6a337290 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -166,7 +166,7 @@ if (ST.use(1)) var/obj/structure/window/WD = new wtype(loc) WD.set_constructed_window(dir_to_set) - to_chat(user, SPAN_NOTICE("You place the [WD] on [src].")) + to_chat(user, SPAN_NOTICE("You place [WD] on [src].")) return //window placing end diff --git a/code/game/objects/structures/props.dm b/code/game/objects/structures/props.dm index 6e6f6d5f8247..e14eee13b1dd 100644 --- a/code/game/objects/structures/props.dm +++ b/code/game/objects/structures/props.dm @@ -1187,7 +1187,7 @@ var/obj/item/dogtag/dog = W if(!tagged) tagged = TRUE - user.visible_message(SPAN_NOTICE("[user] drapes the [W] around the [src].")) + user.visible_message(SPAN_NOTICE("[user] drapes [W] around [src].")) dogtag_name = popleft(dog.fallen_names) dogtag_assign = popleft(dog.fallen_assgns) dogtag_blood = popleft(dog.fallen_blood_types) @@ -1198,7 +1198,7 @@ else return else - to_chat(user, SPAN_WARNING("There's already a dog tag on the [src]!")) + to_chat(user, SPAN_WARNING("There's already a dog tag on [src]!")) balloon_alert(user, "already a tag here!") if(istype(W, /obj/item/clothing/head)) @@ -1372,4 +1372,3 @@ if(initial(emote.sound)) playsound(loc, initial(emote.sound), 50, FALSE) return TRUE - diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 60c37fcdc607..daf4a47a8ef6 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -151,7 +151,7 @@ GM.apply_damage(5, OXY) swirlie = null else - user.visible_message(SPAN_DANGER("[user] slams [GM.name] into the [src]!"), SPAN_NOTICE("You slam [GM.name] into the [src]!")) + user.visible_message(SPAN_DANGER("[user] slams [GM.name] into [src]!"), SPAN_NOTICE("You slam [GM.name] into [src]!")) GM.apply_damage(8, BRUTE) else to_chat(user, SPAN_NOTICE("You need a tighter grip.")) @@ -189,7 +189,7 @@ if(!GM.loc == get_turf(src)) to_chat(user, SPAN_NOTICE("[GM.name] needs to be on the urinal.")) return - user.visible_message(SPAN_DANGER("[user] slams [GM.name] into the [src]!"), SPAN_NOTICE("You slam [GM.name] into the [src]!")) + user.visible_message(SPAN_DANGER("[user] slams [GM.name] into [src]!"), SPAN_NOTICE("You slam [GM.name] into [src]!")) GM.apply_damage(8, BRUTE) else to_chat(user, SPAN_NOTICE("You need a tighter grip.")) diff --git a/code/game/turfs/auto_turf.dm b/code/game/turfs/auto_turf.dm index 75501a1a7ecd..e07f7324bcc2 100644 --- a/code/game/turfs/auto_turf.dm +++ b/code/game/turfs/auto_turf.dm @@ -169,7 +169,7 @@ if(istype(I, /obj/item/lightstick)) var/obj/item/lightstick/L = I if(locate(/obj/item/lightstick) in get_turf(src)) - to_chat(user, "There's already a [L] at this position!") + to_chat(user, "There's already \a [L] at this position!") return to_chat(user, "Now planting \the [L].") diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 72624aff99c8..7d9dd6303c64 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -292,7 +292,7 @@ if(istype(I, /obj/item/lightstick)) var/obj/item/lightstick/L = I if(locate(/obj/item/lightstick) in get_turf(src)) - to_chat(user, "There's already a [L] at this position!") + to_chat(user, "There's already \a [L] at this position!") return to_chat(user, "Now planting \the [L].") @@ -787,7 +787,7 @@ if(istype(I, /obj/item/lightstick)) var/obj/item/lightstick/L = I if(locate(/obj/item/lightstick) in get_turf(src)) - to_chat(user, "There's already a [L] at this position!") + to_chat(user, "There's already \a [L] at this position!") return to_chat(user, "Now planting \the [L].") diff --git a/code/game/turfs/snow.dm b/code/game/turfs/snow.dm index 42cc9bd544c5..f7fb746cfbbc 100644 --- a/code/game/turfs/snow.dm +++ b/code/game/turfs/snow.dm @@ -16,7 +16,7 @@ if(istype(I, /obj/item/lightstick)) var/obj/item/lightstick/L = I if(locate(/obj/item/lightstick) in get_turf(src)) - to_chat(user, "There's already a [L] at this position!") + to_chat(user, "There's already \a [L] at this position!") return to_chat(user, "Now planting \the [L].") @@ -148,6 +148,3 @@ /turf/open/snow/layer3 icon_state = "snow_3" bleed_layer = 3 - - - diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index 45590c3fa006..9cad56cdabe8 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -182,7 +182,7 @@ for(var/category in listings) dat += "
      Current [category] ([length(listings[category])]):
      \n" for(var/client/entry in listings[category]) - dat += "\t[entry.key] is a [entry.admin_holder.rank]" + dat += "\t[entry.key] is \a [entry.admin_holder.rank]" if(entry.admin_holder.extra_titles?.len) for(var/srank in entry.admin_holder.extra_titles) dat += " & [srank]" diff --git a/code/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm index 7a6359ccf090..ff558c341c4b 100644 --- a/code/modules/admin/tabs/event_tab.dm +++ b/code/modules/admin/tabs/event_tab.dm @@ -441,8 +441,8 @@ GLOB.supply_controller.shoppinglist += new_order marine_announcement("A nuclear device has been supplied and will be delivered to requisitions via ASRS.", "NUCLEAR ARSENAL ACQUIRED", 'sound/misc/notice2.ogg') - message_admins("[key_name_admin(usr)] admin-spawned a [encrypt] nuke.") - log_game("[key_name_admin(usr)] admin-spawned a [encrypt] nuke.") + message_admins("[key_name_admin(usr)] admin-spawned \a [encrypt] nuke.") + log_game("[key_name_admin(usr)] admin-spawned \a [encrypt] nuke.") /client/proc/turn_everyone_into_primitives() var/random_names = FALSE @@ -524,7 +524,7 @@ else marine_announcement(input, customname, 'sound/AI/commandreport.ogg', faction) - message_admins("[key_name_admin(src)] has created a [faction] command report") + message_admins("[key_name_admin(src)] has created \a [faction] command report") log_admin("[key_name_admin(src)] [faction] command report: [input]") /client/proc/cmd_admin_xeno_report() diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm index ca756cc78781..10ba5b0f1091 100644 --- a/code/modules/admin/topic/topic.dm +++ b/code/modules/admin/topic/topic.dm @@ -1786,7 +1786,7 @@ var/prompt = tgui_alert(usr, "Do you want the nuke to be Encrypted?", "Nuke Type", list("Encrypted", "Decrypted"), 20 SECONDS) if(prompt == "Decrypted") nuketype = "Decrypted Operational Nuke" - prompt = tgui_alert(usr, "Are you sure you want to authorize a [nuketype] to the marines? This will greatly affect the round!", "DEFCON 1", list("No", "Yes")) + prompt = tgui_alert(usr, "Are you sure you want to authorize \a [nuketype] to the marines? This will greatly affect the round!", "DEFCON 1", list("No", "Yes")) if(prompt != "Yes") return @@ -1803,8 +1803,8 @@ GLOB.ares_datacore.nuke_available = FALSE marine_announcement("A nuclear device has been authorized by High Command and will be delivered to requisitions via ASRS.", "NUCLEAR ORDNANCE AUTHORIZED", 'sound/misc/notice2.ogg', logging = ARES_LOG_MAIN) - log_game("[key_name_admin(usr)] has authorized a [nuketype], requested by [key_name_admin(ref_person)]") - message_admins("[key_name_admin(usr)] has authorized a [nuketype], requested by [key_name_admin(ref_person)]") + log_game("[key_name_admin(usr)] has authorized \a [nuketype], requested by [key_name_admin(ref_person)]") + message_admins("[key_name_admin(usr)] has authorized \a [nuketype], requested by [key_name_admin(ref_person)]") if(href_list["nukedeny"]) var/mob/ref_person = locate(href_list["nukedeny"]) diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index afc8e0a7cbba..edc4a81b364a 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -54,14 +54,14 @@ flags_inv_hide |= HIDEEARS|HIDEEYES|HIDEFACE icon_state = initial(icon_state) eye_protection = initial(eye_protection) - to_chat(usr, "You flip the [src] down to protect your eyes.") + to_chat(usr, SPAN_NOTICE("You flip [src] down to protect your eyes.")) else vision_impair = VISION_IMPAIR_NONE flags_inventory &= ~(COVEREYES|COVERMOUTH|BLOCKSHARPOBJ) flags_inv_hide &= ~(HIDEEARS|HIDEEYES|HIDEFACE) icon_state = "[initial(icon_state)]up" eye_protection = EYE_PROTECTION_NONE - to_chat(usr, "You push the [src] up out of your face.") + to_chat(usr, SPAN_NOTICE("You push [src] up out of your face.")) up = !up if(ishuman(loc)) diff --git a/code/modules/clothing/under/under.dm b/code/modules/clothing/under/under.dm index ebfac5216330..a48967d88538 100644 --- a/code/modules/clothing/under/under.dm +++ b/code/modules/clothing/under/under.dm @@ -326,7 +326,7 @@ return update_rollsuit_status() //we need the _d version of the sprite anyways. In the future we might need to make a different version of the sprite to accomodate for rolling sleeves and hoods. if(user.head && !istype(user.head, hood_state)) - to_chat(user, SPAN_WARNING("You can't wear a hood while also wearing the [user.head]!")) + to_chat(user, SPAN_WARNING("You can't wear a hood while also wearing [user.head]!")) return if(!HAS_TRAIT(src, TRAIT_CLOTHING_HOOD)) diff --git a/code/modules/cm_aliens/XenoStructures.dm b/code/modules/cm_aliens/XenoStructures.dm index 340fabdf1973..81978bb01ba0 100644 --- a/code/modules/cm_aliens/XenoStructures.dm +++ b/code/modules/cm_aliens/XenoStructures.dm @@ -781,7 +781,7 @@ /obj/effect/alien/resin/resin_pillar/proc/brittle() //playsound(granite cracking) - visible_message(SPAN_DANGER("You hear cracking sounds from the [src] as splinters start falling off from the structure! It seems brittle now.")) + visible_message(SPAN_DANGER("You hear cracking sounds from [src] as splinters start falling off from the structure! It seems brittle now.")) health = vulnerable_health for(var/i in walls) var/turf/closed/wall/T = i @@ -814,7 +814,7 @@ /obj/effect/alien/resin/resin_pillar/hitby(atom/movable/AM) if(!brittle) - visible_message(SPAN_DANGER("[AM] harmlessly bounces off the [src]!")) + visible_message(SPAN_DANGER("[AM] harmlessly bounces off [src]!")) return return ..() diff --git a/code/modules/cm_marines/NonLethalRestraints.dm b/code/modules/cm_marines/NonLethalRestraints.dm index a7f0277c8aaa..3b2439a22a82 100644 --- a/code/modules/cm_marines/NonLethalRestraints.dm +++ b/code/modules/cm_marines/NonLethalRestraints.dm @@ -45,7 +45,7 @@ if(status) M.apply_effect(6, WEAKEN) charges -= 2 - M.visible_message(SPAN_DANGER("[M] has been prodded with the [src] by [user]!")) + M.visible_message(SPAN_DANGER("[M] has been prodded with [src] by [user]!")) user.attack_log += "\[[time_stamp()]\] Stunned [key_name(M)] with [src.name]" M.attack_log += "\[[time_stamp()]\] Stunned by [key_name(user)] with [src.name]" diff --git a/code/modules/cm_preds/yaut_bracers.dm b/code/modules/cm_preds/yaut_bracers.dm index 111a95d1089c..df8ab136ea18 100644 --- a/code/modules/cm_preds/yaut_bracers.dm +++ b/code/modules/cm_preds/yaut_bracers.dm @@ -928,7 +928,7 @@ addtimer(VARSET_CALLBACK(src, disc_timer, FALSE), 10 SECONDS) for(var/mob/living/simple_animal/hostile/smartdisc/S in range(7)) - to_chat(caller, SPAN_WARNING("The [S] skips back towards you!")) + to_chat(caller, SPAN_WARNING("[S] skips back towards you!")) new /obj/item/explosive/grenade/spawnergrenade/smartdisc(S.loc) qdel(S) diff --git a/code/modules/cm_tech/implements/engi_czsp.dm b/code/modules/cm_tech/implements/engi_czsp.dm index 8e1ab8248c19..f3024129b3eb 100644 --- a/code/modules/cm_tech/implements/engi_czsp.dm +++ b/code/modules/cm_tech/implements/engi_czsp.dm @@ -35,7 +35,7 @@ return if((user.get_active_hand()) != src) - to_chat(user, SPAN_WARNING("You must be holding the [src] to upgrade \the [D]!")) + to_chat(user, SPAN_WARNING("You must be holding [src] to upgrade [D]!")) return var/type_to_change_to = D.upgrade_string_to_type(chosen_upgrade) From f7d0d363464b9934c1e714fbe01129b968ed403c Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 6 Dec 2023 06:56:29 +0000 Subject: [PATCH 24/38] Automatic changelog for PR #5121 [ci skip] --- html/changelogs/AutoChangeLog-pr-5121.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5121.yml diff --git a/html/changelogs/AutoChangeLog-pr-5121.yml b/html/changelogs/AutoChangeLog-pr-5121.yml new file mode 100644 index 000000000000..5daa315b8e9f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5121.yml @@ -0,0 +1,4 @@ +author: "SabreML" +delete-after: True +changes: + - spellcheck: "Fixed instances of \"The the\" and \"A the\" in chat messages so that they're just \"The\" instead. (Part 2)" \ No newline at end of file From 16e010fd363f0d5893edb8fc3c8f09fefee27c30 Mon Sep 17 00:00:00 2001 From: zzzmike <85382350+zzzmike@users.noreply.github.com> Date: Tue, 5 Dec 2023 23:14:32 -0800 Subject: [PATCH 25/38] More lifeboat launch options (#4976) # About the pull request The default option when launching lifeboats will now have ARES make an announcement, followed by a 10 second delay before doors close. The current functionality where it instantly launches is also preserved as the Emergency Launch option. # Explain why it's good for the game It's sad that currently someone can't make an announcement that they are about to launch a lifeboat if they don't have the command tablet. This gives them the option. # Testing Photographs and Procedure
      Screenshots & Videos I did test it, triggered hijack and launched lifeboat using the new option. It worked on local server.
      # Changelog :cl: zzzmike, drathek, ihatethisengine2 add: Lifeboat launch now has an ARES announcement followed by a 10 second delay before doors close. The current launch functionality is preserved as Emergency Launch. /:cl: --------- Co-authored-by: BeagleGaming1 <56142455+BeagleGaming1@users.noreply.github.com> --- code/modules/shuttle/computer.dm | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm index 3d0c8fca142d..4d94ae05f8c9 100644 --- a/code/modules/shuttle/computer.dm +++ b/code/modules/shuttle/computer.dm @@ -281,6 +281,8 @@ icon_state = "terminal" req_access = list() breakable = FALSE + ///If true, the lifeboat is in the process of launching, and so the code will not allow another launch. + var/launch_initiated = FALSE /obj/structure/machinery/computer/shuttle/lifeboat/attack_hand(mob/user) . = ..() @@ -293,23 +295,40 @@ switch(lifeboat.mode) if(SHUTTLE_IDLE) if(!istype(user, /mob/living/carbon/human)) - to_chat(user, SPAN_NOTICE("[src]'s screen says \"Awaiting confirmation of the evacuation order\".")) + to_chat(user, SPAN_NOTICE("[src]'s screen says \"Unauthorized access. Please inform your supervisor\".")) return var/mob/living/carbon/human/human_user = user - if(!(ACCESS_MARINE_COMMAND in human_user.wear_id?.access)) - to_chat(user, SPAN_NOTICE("[src]'s screen says \"Awaiting confirmation of the evacuation order\".")) + if(!(ACCESS_MARINE_SENIOR in human_user.wear_id?.access) && !(ACCESS_MARINE_DROPSHIP in human_user.wear_id?.access)) + to_chat(user, SPAN_NOTICE("[src]'s screen says \"Unauthorized access. Please inform your supervisor\".")) return if(SShijack.current_progress < SShijack.early_launch_required_progress) to_chat(user, SPAN_NOTICE("[src]'s screen says \"Unable to launch, fuel insufficient\".")) return - if(tgui_alert(user, "Early launch the lifeboat?", "Confirm", list("Yes", "No"), 10 SECONDS) == "Yes") - to_chat(user, SPAN_NOTICE("[src]'s screen blinks and says \"Early launch accepted\".")) - lifeboat.evac_launch() + if(launch_initiated) + to_chat(user, SPAN_NOTICE("[src]'s screen blinks and says \"Launch sequence already initiated\".")) return + var/response = tgui_alert(user, "Launch the lifeboat?", "Confirm", list("Yes", "No", "Emergency Launch"), 10 SECONDS) + if(launch_initiated) + to_chat(user, SPAN_NOTICE("[src]'s screen blinks and says \"Launch sequence already initiated\".")) + return + switch(response) + if ("Yes") + launch_initiated = TRUE + to_chat(user, "[src]'s screen blinks and says \"Launch command accepted\".") + shipwide_ai_announcement("Launch command received. [lifeboat.id == MOBILE_SHUTTLE_LIFEBOAT_PORT ? "Port" : "Starboard"] Lifeboat doors will close in 10 seconds.") + addtimer(CALLBACK(lifeboat, TYPE_PROC_REF(/obj/docking_port/mobile/crashable/lifeboat, evac_launch)), 10 SECONDS) + return + if ("Emergency Launch") + launch_initiated = TRUE + to_chat(user, "[src]'s screen blinks and says \"Emergency Launch command accepted\".") + lifeboat.evac_launch() + shipwide_ai_announcement("Emergency Launch command received. Launching [lifeboat.id == MOBILE_SHUTTLE_LIFEBOAT_PORT ? "Port" : "Starboard"] Lifeboat.") + return + if(SHUTTLE_IGNITING) to_chat(user, SPAN_NOTICE("[src]'s screen says \"Engines firing\".")) if(SHUTTLE_CALL) From 8b6933438cb4d3e5c0a4e83dc20001c3a3ebc6b0 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 6 Dec 2023 07:22:59 +0000 Subject: [PATCH 26/38] Automatic changelog for PR #4976 [ci skip] --- html/changelogs/AutoChangeLog-pr-4976.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4976.yml diff --git a/html/changelogs/AutoChangeLog-pr-4976.yml b/html/changelogs/AutoChangeLog-pr-4976.yml new file mode 100644 index 000000000000..2a0de1ec20d0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4976.yml @@ -0,0 +1,4 @@ +author: "zzzmike, drathek, ihatethisengine2" +delete-after: True +changes: + - rscadd: "Lifeboat launch now has an ARES announcement followed by a 10 second delay before doors close. The current launch functionality is preserved as Emergency Launch." \ No newline at end of file From fe35cc5927f873f7a3497d02a6389c9678a61a7f Mon Sep 17 00:00:00 2001 From: forest2001 <41653574+realforest2001@users.noreply.github.com> Date: Wed, 6 Dec 2023 09:44:50 +0000 Subject: [PATCH 27/38] Forest Bugfix Bundle (#5127) # About the pull request Forest is stupid. # Explain why it's good for the game # Testing Photographs and Procedure
      Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
      ` tags.
      # Changelog :cl: fix: Fixes custom sent ERTs broadcasting when they shouldn't. fix: Fixes UPP friendly ERT telling staff it's hostile. /:cl: --- code/datums/emergency_calls/emergency_call.dm | 2 +- code/modules/admin/tabs/event_tab.dm | 21 ++++++++--------- code/modules/admin/topic/topic_events.dm | 23 ++++++++----------- .../mob/living/carbon/human/inventory.dm | 2 ++ 4 files changed, 22 insertions(+), 26 deletions(-) diff --git a/code/datums/emergency_calls/emergency_call.dm b/code/datums/emergency_calls/emergency_call.dm index 9db46955a5ea..c6f71382b877 100644 --- a/code/datums/emergency_calls/emergency_call.dm +++ b/code/datums/emergency_calls/emergency_call.dm @@ -200,7 +200,7 @@ SSticker.mode.picked_calls += src show_join_message() //Show our potential candidates the message to let them join. - message_admins("Distress beacon: '[name]' activated [src.hostility? "[SPAN_WARNING("(THEY ARE HOSTILE)")]":"(they are friendly)"]. Looking for candidates.") + message_admins("Distress beacon: '[name]' activated [hostility? "[SPAN_WARNING("(THEY ARE HOSTILE)")]":"(they are friendly)"]. Looking for candidates.") if(!quiet_launch) marine_announcement("A distress beacon has been launched from the [MAIN_SHIP_NAME].", "Priority Alert", 'sound/AI/distressbeacon.ogg', logging = ARES_LOG_SECURITY) diff --git a/code/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm index ff558c341c4b..6ae974d2faea 100644 --- a/code/modules/admin/tabs/event_tab.dm +++ b/code/modules/admin/tabs/event_tab.dm @@ -217,18 +217,15 @@ if(!istype(chosen_ert)) return - - var/launch_broadcast = tgui_alert(usr, "Would you like to broadcast the beacon launch? This will reveal the distress beacon to all players.", "Announce distress beacon?", list("Yes", "No"), 20 SECONDS) - if(launch_broadcast == "Yes") - launch_broadcast = TRUE - else - launch_broadcast = FALSE - - var/announce_receipt = tgui_alert(usr, "Would you like to announce the beacon received message? This will reveal the distress beacon to all players.", "Announce beacon received?", list("Yes", "No"), 20 SECONDS) - if(announce_receipt == "Yes") + var/quiet_launch = TRUE + var/ql_prompt = tgui_alert(usr, "Would you like to broadcast the beacon launch? This will reveal the distress beacon to all players.", "Announce distress beacon?", list("Yes", "No"), 20 SECONDS) + if(ql_prompt == "Yes") + quiet_launch = FALSE + + var/announce_receipt = FALSE + var/ar_prompt = tgui_alert(usr, "Would you like to announce the beacon received message? This will reveal the distress beacon to all players.", "Announce beacon received?", list("Yes", "No"), 20 SECONDS) + if(ar_prompt == "Yes") announce_receipt = TRUE - else - announce_receipt = FALSE var/turf/override_spawn_loc var/prompt = tgui_alert(usr, "Spawn at their assigned spawn, or at your location?", "Spawnpoint Selection", list("Spawn", "Current Location"), 0) @@ -238,7 +235,7 @@ if(prompt == "Current Location") override_spawn_loc = get_turf(usr) - chosen_ert.activate(quiet_launch = launch_broadcast, announce_incoming = announce_receipt, override_spawn_loc = override_spawn_loc) + chosen_ert.activate(quiet_launch, announce_receipt, override_spawn_loc) message_admins("[key_name_admin(usr)] admin-called a [choice == "Randomize" ? "randomized ":""]distress beacon: [chosen_ert.name]") diff --git a/code/modules/admin/topic/topic_events.dm b/code/modules/admin/topic/topic_events.dm index 5e59ba4835f5..0c37e81f2641 100644 --- a/code/modules/admin/topic/topic_events.dm +++ b/code/modules/admin/topic/topic_events.dm @@ -205,20 +205,17 @@ em_call.mob_max = humans.len em_call.players_to_offer = humans em_call.owner = owner - - var/launch_broadcast = tgui_alert(usr, "Would you like to broadcast the beacon launch? This will reveal the distress beacon to all players.", "Announce distress beacon?", list("Yes", "No"), 20 SECONDS) - if(launch_broadcast == "Yes") - launch_broadcast = TRUE - else - launch_broadcast = FALSE - - var/announce_receipt = tgui_alert(usr, "Would you like to announce the beacon received message? This will reveal the distress beacon to all players.", "Announce beacon received?", list("Yes", "No"), 20 SECONDS) - if(announce_receipt == "Yes") + var/quiet_launch = TRUE + var/ql_prompt = tgui_alert(usr, "Would you like to broadcast the beacon launch? This will reveal the distress beacon to all players.", "Announce distress beacon?", list("Yes", "No"), 20 SECONDS) + if(ql_prompt == "Yes") + quiet_launch = FALSE + + var/announce_receipt = FALSE + var/ar_prompt = tgui_alert(usr, "Would you like to announce the beacon received message? This will reveal the distress beacon to all players.", "Announce beacon received?", list("Yes", "No"), 20 SECONDS) + if(ar_prompt == "Yes") announce_receipt = TRUE - else - announce_receipt = FALSE - - em_call.activate(launch_broadcast, announce_receipt) + log_debug("ERT DEBUG (CUSTOM SET): [quiet_launch] - [announce_receipt]") + em_call.activate(quiet_launch, announce_receipt) message_admins("[key_name_admin(usr)] created [humans_to_spawn] humans as [job_name] at [get_area(initial_spot)]") diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index b86a6a625f57..b54f03e2ce7d 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -550,6 +550,7 @@ to_chat(src, SPAN_WARNING("You can't put \the [interact_item.name] on [target_mob]!")) return visible_message(SPAN_NOTICE("[src] tries to put \the [interact_item.name] on [target_mob]."), null, null, 5) + log_interact(src, target_mob, "[key_name(src)] attempted to put [interact_item.name] on [key_name(target_mob)]'s ([slot_to_process]).") if(do_after(src, get_strip_delay(src, target_mob), INTERRUPT_ALL, BUSY_ICON_GENERIC, target_mob, INTERRUPT_MOVED, BUSY_ICON_GENERIC)) if(interact_item == get_active_hand() && !target_mob.get_item_by_slot(slot_to_process) && Adjacent(target_mob)) if(interact_item.flags_item & WIELDED) //to prevent re-wielding it during the do_after @@ -558,6 +559,7 @@ drop_inv_item_on_ground(interact_item) if(interact_item && !QDELETED(interact_item)) //Might be self-deleted? target_mob.equip_to_slot_if_possible(interact_item, slot_to_process, 1, 0, 1, 1) + log_interact(src, target_mob, "[key_name(src)] put [interact_item.name] on [key_name(target_mob)]'s ([slot_to_process]) successfully.") if(ishuman(target_mob) && target_mob.stat == DEAD) var/mob/living/carbon/human/human_target = target_mob human_target.disable_lights() // take that powergamers -spookydonut From fbb5cff339eb5ed000ab07169740ba7865ddd27d Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 6 Dec 2023 09:53:18 +0000 Subject: [PATCH 28/38] Automatic changelog for PR #5127 [ci skip] --- html/changelogs/AutoChangeLog-pr-5127.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5127.yml diff --git a/html/changelogs/AutoChangeLog-pr-5127.yml b/html/changelogs/AutoChangeLog-pr-5127.yml new file mode 100644 index 000000000000..6aa332377bce --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5127.yml @@ -0,0 +1,5 @@ +author: "realforest2001" +delete-after: True +changes: + - bugfix: "Fixes custom sent ERTs broadcasting when they shouldn't." + - bugfix: "Fixes UPP friendly ERT telling staff it's hostile." \ No newline at end of file From 48e26a8ad1186a39c9f0b75e82eaa3e6becfc5a7 Mon Sep 17 00:00:00 2001 From: SabreML <57483089+SabreML@users.noreply.github.com> Date: Wed, 6 Dec 2023 09:55:13 +0000 Subject: [PATCH 29/38] Fixes a freeze when opening the 'Create Object' panel (#5125) # About the pull request Removes the long freeze when opening the 'Create Object' interface through the game panel. This was caused by line 40 of `create_object.html`, which attempts to fill the object list with every subtype of `/obj` when the interface is first opened. The "fix" was just removing that line. https://github.com/cmss13-devs/cmss13/blob/0b133929724c569aff3945749c65559c4e65e4c5/html/create_object.html#L33-L42 This does mean that the user has to search for a type before anything shows up, but I would consider that a pretty minor trade-off.
      I also increased the window size so that the 'Spawn' button is on the screen by default, removed a couple of empty `value`s, and added some spaces so that the HTML code lines up a bit more with the final UI. # Explain why it's good for the game Fixes a 30ish second freeze for admins. (Give or take a bit, but it's still long either way.) # Testing Photographs and Procedure
      Videos **Before:** https://github.com/cmss13-devs/cmss13/assets/57483089/6d5d0aa7-74a9-4fbc-b78f-4bd6a960af87 **After:** https://github.com/cmss13-devs/cmss13/assets/57483089/93fc0f99-41a5-4df6-9061-38740aa0e751
      # Changelog :cl: admin: Fixed a freeze when opening the the 'Create Object' interface. admin: Adjusted the size and positioning of the 'Create Object/Mob/Turf' panels so that everything fits into the window. /:cl: --- code/modules/admin/create_mob.dm | 2 +- code/modules/admin/create_object.dm | 4 ++-- code/modules/admin/create_turf.dm | 2 +- html/create_object.html | 13 +++++++------ 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index 9ac4c5f807ea..910bafd50a9b 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -8,4 +8,4 @@ create_mob_html = replacetext(create_mob_html, "null /* object types */", "\"[mobjs]\"") create_mob_html = replacetext(create_mob_html, "/* href token */", RawHrefToken(forceGlobal = TRUE)) - show_browser(user, replacetext(create_mob_html, "/* ref src */", "\ref[src]"), "Create Mob", "create_mob", "size=425x475") + show_browser(user, replacetext(create_mob_html, "/* ref src */", "\ref[src]"), "Create Mob", "create_mob", "size=450x525") diff --git a/code/modules/admin/create_object.dm b/code/modules/admin/create_object.dm index 3b1f978dd50a..054fc20aef5e 100644 --- a/code/modules/admin/create_object.dm +++ b/code/modules/admin/create_object.dm @@ -8,7 +8,7 @@ create_object_html = replacetext(create_object_html, "null /* object types */", "\"[objectjs]\"") create_object_html = replacetext(create_object_html, "/* href token */", RawHrefToken(forceGlobal = TRUE)) - show_browser(user, replacetext(create_object_html, "/* ref src */", "\ref[src]"), "Create Object", "create_object", "size=425x475") + show_browser(user, replacetext(create_object_html, "/* ref src */", "\ref[src]"), "Create Object", "create_object", "size=450x525") /datum/admins/proc/quick_create_object(mob/user) @@ -46,4 +46,4 @@ quick_create_object_html = replacetext(quick_create_object_html, "null /* object types */", "\"[objectjs]\"") quick_create_object_html = replacetext(quick_create_object_html, "/* href token */", RawHrefToken(forceGlobal = TRUE)) - show_browser(user, replacetext(quick_create_object_html, "/* ref src */", "\ref[src]"), "Quick Create Object", "quick_create_object", "size=425x475") + show_browser(user, replacetext(quick_create_object_html, "/* ref src */", "\ref[src]"), "Quick Create Object", "quick_create_object", "size=450x525") diff --git a/code/modules/admin/create_turf.dm b/code/modules/admin/create_turf.dm index 1535c303bcd9..cc8bd1a5ec77 100644 --- a/code/modules/admin/create_turf.dm +++ b/code/modules/admin/create_turf.dm @@ -8,4 +8,4 @@ create_turf_html = replacetext(create_turf_html, "null /* object types */", "\"[turfjs]\"") create_turf_html = replacetext(create_turf_html, "/* href token */", RawHrefToken(forceGlobal = TRUE)) - show_browser(usr, replacetext(create_turf_html, "/* ref src */", "\ref[src]"), "Create Turf", "create_turf", "size=425x475") + show_browser(usr, replacetext(create_turf_html, "/* ref src */", "\ref[src]"), "Create Turf", "create_turf", "size=450x525") diff --git a/html/create_object.html b/html/create_object.html index a4c3085a9ac6..8e67b99aebca 100644 --- a/html/create_object.html +++ b/html/create_object.html @@ -9,16 +9,17 @@
      - Type
      - Offset: + Offset: A R
      Number: Dir: - Name:
      + Name:
      + Where:

      +
      @@ -37,13 +39,11 @@ var objects = object_paths == null ? new Array() : object_paths.split(";"); document.spawner.filter.focus(); - populateList(objects); function populateList(from_list) { object_list.options.length = 0; - var i; - for (i in from_list) { + for (var i in from_list) { var new_option = document.createElement("option"); new_option.value = from_list[i]; new_option.text = from_list[i]; @@ -71,6 +71,7 @@ return false; } + // Carriage return if (event.keyCode == 13 || event.which == 13) { object_list.options[0].selected = 'true'; } From 464bae1f4b529639acf28b9390c1c983ea0bd5d5 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 6 Dec 2023 10:03:54 +0000 Subject: [PATCH 30/38] Automatic changelog for PR #5125 [ci skip] --- html/changelogs/AutoChangeLog-pr-5125.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5125.yml diff --git a/html/changelogs/AutoChangeLog-pr-5125.yml b/html/changelogs/AutoChangeLog-pr-5125.yml new file mode 100644 index 000000000000..236ad26c2f8d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5125.yml @@ -0,0 +1,5 @@ +author: "SabreML" +delete-after: True +changes: + - admin: "Fixed a freeze when opening the the 'Create Object' interface." + - admin: "Adjusted the size and positioning of the 'Create Object/Mob/Turf' panels so that everything fits into the window." \ No newline at end of file From 8152651ec39936722c9e60362877b935e3a865c0 Mon Sep 17 00:00:00 2001 From: Drathek <76988376+Drulikar@users.noreply.github.com> Date: Wed, 6 Dec 2023 01:56:48 -0800 Subject: [PATCH 31/38] Check_keybindings now only saves keybinds rather than everything (#5120) # About the pull request This PR is a followup to #5110 and #2926 making it so we only save the `key_bindings` value rather than all preferences. I'd be inclined to just not save at all, but the initial commit on the ported input system has us saving `remembered_key_bindings` just a few lines down anyways so no matter what we're writing something. # Explain why it's good for the game Should better future proof this trampling preferences, but still retain existing behavior where any automatically rebound keys are immediately saved. # Testing Photographs and Procedure
      Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
      ` tags.
      # Changelog :cl: Drathek code: Reduced most preference re-saving when preferences are initially loaded /:cl: --- code/modules/client/preferences_savefile.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 4ba42c0e39c3..c67effe90eb1 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -274,6 +274,7 @@ vars["fps"] = fps check_keybindings() + S["key_bindings"] << key_bindings if(remembered_key_bindings) for(var/i in GLOB.keybindings_by_name) @@ -652,7 +653,7 @@ addedbind = TRUE if(!addedbind) notadded += kb - save_preferences() + if(length(notadded)) addtimer(CALLBACK(src, PROC_REF(announce_conflict), notadded), 5 SECONDS) From f1bd5420e83f2d9056a2fd0d64429e2f21d2d059 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 6 Dec 2023 10:16:51 +0000 Subject: [PATCH 32/38] Automatic changelog for PR #5120 [ci skip] --- html/changelogs/AutoChangeLog-pr-5120.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5120.yml diff --git a/html/changelogs/AutoChangeLog-pr-5120.yml b/html/changelogs/AutoChangeLog-pr-5120.yml new file mode 100644 index 000000000000..eb9c6fc96e9a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5120.yml @@ -0,0 +1,4 @@ +author: "Drathek" +delete-after: True +changes: + - code_imp: "Reduced most preference re-saving when preferences are initially loaded" \ No newline at end of file From cc21f9b32a38617376813f7e25c5a745fce22ea5 Mon Sep 17 00:00:00 2001 From: Drathek <76988376+Drulikar@users.noreply.github.com> Date: Wed, 6 Dec 2023 01:58:58 -0800 Subject: [PATCH 33/38] Fix Nano Subsystem Init Error (#5119) # About the pull request This PR fixes an unintended change made in #4940 where the flag for the nano subsystem was changed. If Initialize was used instead of New this change would be correct, but using New is intentional. # Explain why it's good for the game Fixes: `Initialized Nano UI subsystem with errors within 0 seconds!` and `[20:19:57]WARNING: Nano UI subsystem does not implement Initialize() or it returns ..(). If the former is true, the SS_NO_INIT flag should be set for this subsystem.` # Testing Photographs and Procedure
      Screenshots & Videos ![image](https://github.com/cmss13-devs/cmss13/assets/76988376/5b32237a-cc7e-4bd6-95fc-1a3ac41c382b)
      # Changelog :cl: Drathek fix: Fix some errors regarding the nano subystem /:cl: --- code/controllers/subsystem/nanoui.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/controllers/subsystem/nanoui.dm b/code/controllers/subsystem/nanoui.dm index d89474dd50f1..85ad0d32aaf4 100644 --- a/code/controllers/subsystem/nanoui.dm +++ b/code/controllers/subsystem/nanoui.dm @@ -1,5 +1,6 @@ SUBSYSTEM_DEF(nano) name = "Nano UI" + flags = SS_NO_INIT wait = 2 SECONDS priority = SS_PRIORITY_NANOUI runlevels = RUNLEVELS_DEFAULT|RUNLEVEL_LOBBY From fdb95cb3e1465e3440e7be0cfba1704295d18a44 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 6 Dec 2023 10:34:52 +0000 Subject: [PATCH 34/38] Automatic changelog for PR #5119 [ci skip] --- html/changelogs/AutoChangeLog-pr-5119.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5119.yml diff --git a/html/changelogs/AutoChangeLog-pr-5119.yml b/html/changelogs/AutoChangeLog-pr-5119.yml new file mode 100644 index 000000000000..5ec2e0a33e33 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5119.yml @@ -0,0 +1,4 @@ +author: "Drathek" +delete-after: True +changes: + - bugfix: "Fix some errors regarding the nano subystem" \ No newline at end of file From 8d379bfc81d456265041a3a3471b9c363818c948 Mon Sep 17 00:00:00 2001 From: forest2001 <41653574+realforest2001@users.noreply.github.com> Date: Wed, 6 Dec 2023 10:22:50 +0000 Subject: [PATCH 35/38] Datacore Maintenance (#5099) # About the pull request A bit of maintenance for the generic datacore, changes one letter vars & makes it so that when viewing the list of datacore entries for human players it is possible to determine who's entry is who's without opening up a hundred of them one by one. # Explain why it's good for the game QOL # Testing Photographs and Procedure
      Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
      ` tags.
      # Changelog :cl: code: Cleaned up 1 letter vars in the global datacore. Also made the entry names reflect the real name of who they relate to, for VV purposes. /:cl: --- code/__HELPERS/unsorted.dm | 7 +- code/datums/datacore.dm | 192 +++++++++++++++++----------------- code/defines/procs/records.dm | 90 ++++++++-------- 3 files changed, 148 insertions(+), 141 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index a7af9d7f6324..0782826a4dc9 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -281,9 +281,10 @@ //update the datacore records! This is goig to be a bit costly. var/mob_ref = WEAKREF(src) for(var/list/L in list(GLOB.data_core.general, GLOB.data_core.medical, GLOB.data_core.security, GLOB.data_core.locked)) - for(var/datum/data/record/R in L) - if(R.fields["ref"] == mob_ref) - R.fields["name"] = newname + for(var/datum/data/record/record_entry in L) + if(record_entry.fields["ref"] == mob_ref) + record_entry.fields["name"] = newname + record_entry.name = newname break //update our pda and id if we have them on our person diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 02cbc5b2d019..933b547aa1f2 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -32,12 +32,12 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) ) departments += marines_by_squad var/list/manifest_out = list() - for(var/datum/data/record/t in GLOB.data_core.general) - if(t.fields["mob_faction"] != FACTION_MARINE) //we process only USCM humans + for(var/datum/data/record/record_entry in GLOB.data_core.general) + if(record_entry.fields["mob_faction"] != FACTION_MARINE) //we process only USCM humans continue - var/name = t.fields["name"] - var/rank = t.fields["rank"] - var/squad = t.fields["squad"] + var/name = record_entry.fields["name"] + var/rank = record_entry.fields["rank"] + var/squad = record_entry.fields["squad"] if(isnull(name) || isnull(rank)) continue var/has_department = FALSE @@ -85,14 +85,14 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) var/dept_flags = NO_FLAGS //Is there anybody in the department?. var/list/squad_sublists = GLOB.ROLES_SQUAD_ALL.Copy() //Are there any marines in the squad? - for(var/datum/data/record/t in GLOB.data_core.general) - if(t.fields["mob_faction"] != FACTION_MARINE) //we process only USCM humans + for(var/datum/data/record/record_entry in GLOB.data_core.general) + if(record_entry.fields["mob_faction"] != FACTION_MARINE) //we process only USCM humans continue - var/name = t.fields["name"] - var/rank = t.fields["rank"] - var/real_rank = t.fields["real_rank"] - var/squad_name = t.fields["squad"] + var/name = record_entry.fields["name"] + var/rank = record_entry.fields["rank"] + var/real_rank = record_entry.fields["real_rank"] + var/squad_name = record_entry.fields["squad"] if(isnull(name) || isnull(rank) || isnull(real_rank)) continue @@ -104,7 +104,7 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) break isactive[name] = active ? "Active" : "Inactive" else - isactive[name] = t.fields["p_stat"] + isactive[name] = record_entry.fields["p_stat"] //cael - to prevent multiple appearances of a player/job combination, add a continue after each line if(real_rank in GLOB.ROLES_CIC) @@ -216,14 +216,14 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) var/datum/data/record/foundrecord var/use_name = isnull(ref) - for(var/datum/data/record/t in GLOB.data_core.general) + for(var/datum/data/record/record_entry in GLOB.data_core.general) if(use_name) - if(t.fields["name"] == name) - foundrecord = t + if(record_entry.fields["name"] == name) + foundrecord = record_entry break else - if(t.fields["ref"] == ref) - foundrecord = t + if(record_entry.fields["ref"] == ref) + foundrecord = record_entry break if(foundrecord) @@ -239,102 +239,106 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) return TRUE return FALSE -/datum/datacore/proc/manifest_inject(mob/living/carbon/human/H) +/datum/datacore/proc/manifest_inject(mob/living/carbon/human/target) var/assignment - if(H.job) - assignment = H.job + if(target.job) + assignment = target.job else assignment = "Unassigned" - var/id = add_zero(num2hex(H.gid), 6) //this was the best they could come up with? A large random number? *sigh* + var/id = add_zero(num2hex(target.gid), 6) //this was the best they could come up with? A large random number? *sigh* //var/icon/front = new(get_id_photo(H), dir = SOUTH) //var/icon/side = new(get_id_photo(H), dir = WEST) //General Record - var/datum/data/record/G = new() - G.fields["id"] = id - G.fields["name"] = H.real_name - G.fields["real_rank"] = H.job - G.fields["rank"] = assignment - G.fields["squad"] = H.assigned_squad ? H.assigned_squad.name : null - G.fields["age"] = H.age - G.fields["p_stat"] = "Active" - G.fields["m_stat"] = "Stable" - G.fields["sex"] = H.gender - G.fields["species"] = H.get_species() - G.fields["origin"] = H.origin - G.fields["faction"] = H.personal_faction - G.fields["mob_faction"] = H.faction - G.fields["religion"] = H.religion - G.fields["ref"] = WEAKREF(H) - //G.fields["photo_front"] = front - //G.fields["photo_side"] = side - - if(H.gen_record && !jobban_isbanned(H, "Records")) - G.fields["notes"] = H.gen_record + var/datum/data/record/record_general = new() + record_general.fields["id"] = id + record_general.fields["name"] = target.real_name + record_general.name = target.real_name + record_general.fields["real_rank"] = target.job + record_general.fields["rank"] = assignment + record_general.fields["squad"] = target.assigned_squad ? target.assigned_squad.name : null + record_general.fields["age"] = target.age + record_general.fields["p_stat"] = "Active" + record_general.fields["m_stat"] = "Stable" + record_general.fields["sex"] = target.gender + record_general.fields["species"] = target.get_species() + record_general.fields["origin"] = target.origin + record_general.fields["faction"] = target.personal_faction + record_general.fields["mob_faction"] = target.faction + record_general.fields["religion"] = target.religion + record_general.fields["ref"] = WEAKREF(target) + //record_general.fields["photo_front"] = front + //record_general.fields["photo_side"] = side + + if(target.gen_record && !jobban_isbanned(target, "Records")) + record_general.fields["notes"] = target.gen_record else - G.fields["notes"] = "No notes found." - general += G + record_general.fields["notes"] = "No notes found." + general += record_general //Medical Record - var/datum/data/record/M = new() - M.fields["id"] = id - M.fields["name"] = H.real_name - M.fields["b_type"] = H.blood_type - M.fields["mi_dis"] = "None" - M.fields["mi_dis_d"] = "No minor disabilities have been declared." - M.fields["ma_dis"] = "None" - M.fields["ma_dis_d"] = "No major disabilities have been diagnosed." - M.fields["alg"] = "None" - M.fields["alg_d"] = "No allergies have been detected in this patient." - M.fields["cdi"] = "None" - M.fields["cdi_d"] = "No diseases have been diagnosed at the moment." - M.fields["last_scan_time"] = null - M.fields["last_scan_result"] = "No scan data on record" // body scanner results - M.fields["autodoc_data"] = list() - M.fields["autodoc_manual"] = list() - M.fields["ref"] = WEAKREF(H) - - if(H.med_record && !jobban_isbanned(H, "Records")) - M.fields["notes"] = H.med_record + var/datum/data/record/record_medical = new() + record_medical.fields["id"] = id + record_medical.fields["name"] = target.real_name + record_medical.name = target.name + record_medical.fields["b_type"] = target.blood_type + record_medical.fields["mi_dis"] = "None" + record_medical.fields["mi_dis_d"] = "No minor disabilities have been declared." + record_medical.fields["ma_dis"] = "None" + record_medical.fields["ma_dis_d"] = "No major disabilities have been diagnosed." + record_medical.fields["alg"] = "None" + record_medical.fields["alg_d"] = "No allergies have been detected in this patient." + record_medical.fields["cdi"] = "None" + record_medical.fields["cdi_d"] = "No diseases have been diagnosed at the moment." + record_medical.fields["last_scan_time"] = null + record_medical.fields["last_scan_result"] = "No scan data on record" // body scanner results + record_medical.fields["autodoc_data"] = list() + record_medical.fields["autodoc_manual"] = list() + record_medical.fields["ref"] = WEAKREF(target) + + if(target.med_record && !jobban_isbanned(target, "Records")) + record_medical.fields["notes"] = target.med_record else - M.fields["notes"] = "No notes found." - medical += M + record_medical.fields["notes"] = "No notes found." + medical += record_medical //Security Record - var/datum/data/record/S = new() - S.fields["id"] = id - S.fields["name"] = H.real_name - S.fields["criminal"] = "None" - S.fields["incident"] = "" - S.fields["ref"] = WEAKREF(H) + var/datum/data/record/record_security = new() + record_security.fields["id"] = id + record_security.fields["name"] = target.real_name + record_security.name = target.real_name + record_security.fields["criminal"] = "None" + record_security.fields["incident"] = "" + record_security.fields["ref"] = WEAKREF(target) - if(H.sec_record && !jobban_isbanned(H, "Records")) - var/new_comment = list("entry" = H.sec_record, "created_by" = list("name" = "\[REDACTED\]", "rank" = "Military Police"), "deleted_by" = null, "deleted_at" = null, "created_at" = "Pre-Deployment") - S.fields["comments"] = list("1" = new_comment) - S.fields["notes"] = H.sec_record - security += S + if(target.sec_record && !jobban_isbanned(target, "Records")) + var/new_comment = list("entry" = target.sec_record, "created_by" = list("name" = "\[REDACTED\]", "rank" = "Military Police"), "deleted_by" = null, "deleted_at" = null, "created_at" = "Pre-Deployment") + record_security.fields["comments"] = list("1" = new_comment) + record_security.fields["notes"] = target.sec_record + security += record_security //Locked Record - var/datum/data/record/L = new() - L.fields["id"] = md5("[H.real_name][H.job]") - L.fields["name"] = H.real_name - L.fields["rank"] = H.job - L.fields["age"] = H.age - L.fields["sex"] = H.gender - L.fields["b_type"] = H.b_type - L.fields["species"] = H.get_species() - L.fields["origin"] = H.origin - L.fields["faction"] = H.personal_faction - L.fields["religion"] = H.religion - L.fields["ref"] = WEAKREF(H) - - if(H.exploit_record && !jobban_isbanned(H, "Records")) - L.fields["exploit_record"] = H.exploit_record + var/datum/data/record/record_locked = new() + record_locked.fields["id"] = md5("[target.real_name][target.job]") + record_locked.fields["name"] = target.real_name + record_locked.name = target.real_name + record_locked.fields["rank"] = target.job + record_locked.fields["age"] = target.age + record_locked.fields["sex"] = target.gender + record_locked.fields["b_type"] = target.b_type + record_locked.fields["species"] = target.get_species() + record_locked.fields["origin"] = target.origin + record_locked.fields["faction"] = target.personal_faction + record_locked.fields["religion"] = target.religion + record_locked.fields["ref"] = WEAKREF(target) + + if(target.exploit_record && !jobban_isbanned(target, "Records")) + record_locked.fields["exploit_record"] = target.exploit_record else - L.fields["exploit_record"] = "No additional information acquired." - locked += L + record_locked.fields["exploit_record"] = "No additional information acquired." + locked += record_locked /proc/get_id_photo(mob/living/carbon/human/H) diff --git a/code/defines/procs/records.dm b/code/defines/procs/records.dm index a1e2ade2b709..a9d40f993629 100644 --- a/code/defines/procs/records.dm +++ b/code/defines/procs/records.dm @@ -1,48 +1,50 @@ /proc/CreateGeneralRecord() - var/datum/data/record/G = new /datum/data/record() - G.fields["name"] = "New Record" - G.fields["id"] = text("[]", add_zero(num2hex(rand(1, 1.6777215E7)), 6)) - G.fields["rank"] = "Unassigned" - G.fields["real_rank"] = "Unassigned" - G.fields["sex"] = "Male" - G.fields["age"] = "Unknown" - G.fields["ethnicity"] = "Unknown" - G.fields["p_stat"] = "Active" - G.fields["m_stat"] = "Stable" - G.fields["species"] = "Human" - G.fields["origin"] = "Unknown" - G.fields["faction"] = "Unknown" - G.fields["mob_faction"] = "Unknown" - G.fields["religion"] = "Unknown" - GLOB.data_core.general += G - return G + var/datum/data/record/general_record = new /datum/data/record() + general_record.fields["name"] = "New Record" + general_record.name = "New Record" + general_record.fields["id"] = text("[]", add_zero(num2hex(rand(1, 1.6777215E7)), 6)) + general_record.fields["rank"] = "Unassigned" + general_record.fields["real_rank"] = "Unassigned" + general_record.fields["sex"] = "Male" + general_record.fields["age"] = "Unknown" + general_record.fields["ethnicity"] = "Unknown" + general_record.fields["p_stat"] = "Active" + general_record.fields["m_stat"] = "Stable" + general_record.fields["species"] = "Human" + general_record.fields["origin"] = "Unknown" + general_record.fields["faction"] = "Unknown" + general_record.fields["mob_faction"] = "Unknown" + general_record.fields["religion"] = "Unknown" + GLOB.data_core.general += general_record + return general_record /proc/CreateSecurityRecord(name as text, id as text) - var/datum/data/record/R = new /datum/data/record() - R.fields["name"] = name - R.fields["id"] = id - R.name = text("Security Record #[id]") - R.fields["incidents"] = "None" - GLOB.data_core.security += R - return R + var/datum/data/record/security_record = new /datum/data/record() + security_record.fields["name"] = name + security_record.fields["id"] = id + security_record.name = text("Security Record #[id]") + security_record.fields["incidents"] = "None" + GLOB.data_core.security += security_record + return security_record -/proc/create_medical_record(mob/living/carbon/human/H) - var/datum/data/record/M = new /datum/data/record() - M.fields["id"] = null - M.fields["name"] = H.real_name - M.fields["b_type"] = H.b_type - M.fields["mi_dis"] = "None" - M.fields["mi_dis_d"] = "No minor disabilities have been declared." - M.fields["ma_dis"] = "None" - M.fields["ma_dis_d"] = "No major disabilities have been diagnosed." - M.fields["alg"] = "None" - M.fields["alg_d"] = "No allergies have been detected in this patient." - M.fields["cdi"] = "None" - M.fields["cdi_d"] = "No diseases have been diagnosed at the moment." - M.fields["last_scan_time"] = null - M.fields["last_scan_result"] = "No scan data on record" - M.fields["autodoc_data"] = list() - M.fields["autodoc_manual"] = list() - M.fields["ref"] = WEAKREF(H) - GLOB.data_core.medical += M - return M +/proc/create_medical_record(mob/living/carbon/human/person) + var/datum/data/record/medical_record = new /datum/data/record() + medical_record.fields["id"] = null + medical_record.fields["name"] = person.real_name + medical_record.name = person.real_name + medical_record.fields["b_type"] = person.b_type + medical_record.fields["mi_dis"] = "None" + medical_record.fields["mi_dis_d"] = "No minor disabilities have been declared." + medical_record.fields["ma_dis"] = "None" + medical_record.fields["ma_dis_d"] = "No major disabilities have been diagnosed." + medical_record.fields["alg"] = "None" + medical_record.fields["alg_d"] = "No allergies have been detected in this patient." + medical_record.fields["cdi"] = "None" + medical_record.fields["cdi_d"] = "No diseases have been diagnosed at the moment." + medical_record.fields["last_scan_time"] = null + medical_record.fields["last_scan_result"] = "No scan data on record" + medical_record.fields["autodoc_data"] = list() + medical_record.fields["autodoc_manual"] = list() + medical_record.fields["ref"] = WEAKREF(person) + GLOB.data_core.medical += medical_record + return medical_record From f1cfdbdd508f8fa0241e1376727a47040755fb2b Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 6 Dec 2023 10:48:09 +0000 Subject: [PATCH 36/38] Automatic changelog for PR #5099 [ci skip] --- html/changelogs/AutoChangeLog-pr-5099.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5099.yml diff --git a/html/changelogs/AutoChangeLog-pr-5099.yml b/html/changelogs/AutoChangeLog-pr-5099.yml new file mode 100644 index 000000000000..bbdd8c2954be --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5099.yml @@ -0,0 +1,4 @@ +author: "realforest2001" +delete-after: True +changes: + - code_imp: "Cleaned up 1 letter vars in the global datacore. Also made the entry names reflect the real name of who they relate to, for VV purposes." \ No newline at end of file From f4f334de22e5d2782f35115a9b1461326e1c4a8c Mon Sep 17 00:00:00 2001 From: Doubleumc Date: Wed, 6 Dec 2023 05:38:20 -0500 Subject: [PATCH 37/38] Vehicle autofire (#4959) # About the pull request Convert vehicle hardpoints from using their bespoke firing system to one structured closely on handheld guns and deployables such as the M2C. Now using the `autofire` component. Much like handheld weapons it is capable of different firemodes (semi/burst/auto) and changing targets during fire. Hardpoints were converted to match their old effectiveness as closely as possible; this is intended as a quality of life improvement, not a rebalance. Damage, AP, range, ammo, etc were not touched. Fire rates were copied over directly. Single-fire weapons with long delays were made semi-auto (e.g. LTB), and those with short delays were made full-auto (e.g. autocannon). Burst-fire weapons with significant extra delays after the burst remained burst-fire (cupola, smokescreen), and the rest were converted to full-auto (e.g. dual cannon). While changing firemodes is easily implemented, no weapon seemed a good candidate for more than one firemode and so that is omitted for now. Scatter was approximated. The existing `accuracy` functioned as a percent chance the shot would stray one tile from the target. Gun-style `scatter` is instead a cone of fire in degrees. No direct conversion is possible, so scatter values are roughly set such that firing at a tile at the edge of the screen should "feel" about as accurate. Closer ranges would experience less spread than before, longer ranges more. The buffing weapon sensor module was adjusted to work with the new firing system, and effects hardpoint scatter angle and firing rate. Vehicle buffs still use multipliers instead of adding/subtracting as handheld guns do, as a flat +/- adjustment to fire delay would have a significantly different effect on slow firing weapons (e.g. LTB) vs fast firing (e.g. autocannon). One major difference is that burstfire delays are effected and buffs increases the burst density. Before, there was a single cooldown initiated at the start of the burst, and only that cooldown was modified by the buff. Now, since the inter-burst delay is needed by the `autofire` component both the inter-burst delay and the after-burst delay are modified by buffs. Activating non-selected hardpoints was removed as not compatible. The issue is that tracking a single click's modifiers is no longer sufficient, it has to track through the whole mousedown-to-mouseup period and the user can change multiple click modifiers in that time. I could not find a method that was satisfactory without a much bigger overhaul of vehicle controls than I'd like to take on in a PR not meant for it. I'm sure it can be done, but that brings up the question of if that's even the control scheme we'd want, in a PR that was never meant to ask that question let alone answer it. # Explain why it's good for the game Vehicle weapons using `gun`-like code makes them easier and more familiar to use, and more code commonality makes maintenance just a little bit easier. # Testing Photographs and Procedure
      Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
      ` tags.
      # Changelog :cl: refactor: vehicle weapons can fire full-auto del: no more controls for firing vehicle non-selected weapons /:cl: --- code/modules/vehicles/hardpoints/hardpoint.dm | 441 ++++++++++++------ .../vehicles/hardpoints/holder/holder.dm | 24 +- .../vehicles/hardpoints/holder/tank_turret.dm | 46 +- .../vehicles/hardpoints/primary/autocannon.dm | 9 +- .../hardpoints/primary/dual_cannon.dm | 29 +- .../vehicles/hardpoints/primary/flamer.dm | 37 +- .../vehicles/hardpoints/primary/ltb.dm | 5 +- .../vehicles/hardpoints/primary/minigun.dm | 86 ++-- .../vehicles/hardpoints/secondary/cupola.dm | 31 +- .../vehicles/hardpoints/secondary/flamer.dm | 47 +- .../hardpoints/secondary/frontal_cannon.dm | 29 +- .../hardpoints/secondary/grenade_launcher.dm | 41 +- .../vehicles/hardpoints/secondary/tow.dm | 6 +- .../hardpoints/special/firing_port_weapon.dm | 93 ++-- .../vehicles/hardpoints/support/artillery.dm | 9 +- .../vehicles/hardpoints/support/flare.dm | 5 +- .../vehicles/interior/interactable/seats.dm | 6 +- code/modules/vehicles/multitile/multitile.dm | 9 + .../multitile/multitile_hardpoints.dm | 44 -- .../multitile/multitile_interaction.dm | 111 ++--- .../vehicles/multitile/multitile_verbs.dm | 13 +- 21 files changed, 550 insertions(+), 571 deletions(-) diff --git a/code/modules/vehicles/hardpoints/hardpoint.dm b/code/modules/vehicles/hardpoints/hardpoint.dm index 5963b0b4e36b..acdefca18fd2 100644 --- a/code/modules/vehicles/hardpoints/hardpoint.dm +++ b/code/modules/vehicles/hardpoints/hardpoint.dm @@ -1,22 +1,20 @@ -/* - Hardpoints are any items that attach to a base vehicle, such as wheels/treads, support systems and guns -*/ - +/** + * Hardpoints are any items that attach to a base vehicle, such as wheels/treads, support systems and guns + */ /obj/item/hardpoint //------MAIN VARS---------- - // Which slot is this hardpoint in - // Purely to check for conflicting hardpoints + /// Which slot is this hardpoint in. Purely to check for conflicting hardpoints. var/slot - // The vehicle this hardpoint is installed on + /// The vehicle this hardpoint is installed on. var/obj/vehicle/multitile/owner health = 100 w_class = SIZE_LARGE - // Determines how much of any incoming damage is actually taken + /// Determines how much of any incoming damage is actually taken. var/damage_multiplier = 1 - // Origin coords of the hardpoint relative to the vehicle + /// Origin coords of the hardpoint relative to the vehicle. var/list/origins = list(0, 0) var/list/buff_multipliers @@ -32,13 +30,13 @@ var/disp_icon //This also differentiates tank vs apc vs other var/disp_icon_state - // List of pixel offsets for each direction + /// List of pixel offsets for each direction. var/list/px_offsets - //visual layer of hardpoint when on vehicle + /// Visual layer of hardpoint when on vehicle. var/hdpt_layer = HDPT_LAYER_WHEELS - // List of offsets for where to place the muzzle flash for each direction + /// List of offsets for where to place the muzzle flash for each direction. var/list/muzzle_flash_pos = list( "1" = list(0, 0), "2" = list(0, 0), @@ -54,33 +52,23 @@ var/const_mz_offset_y = 0 //------SOUNDS VARS---------- - // Sounds to play when the module activated/fired + /// Sounds to play when the module activated/fired. var/list/activation_sounds //------INTERACTION VARS---------- - //which seat can use this module + /// Which seat can use this module. var/allowed_seat = VEHICLE_GUNNER - //Cooldown on use of the hardpoint - var/cooldown = 100 - var/next_use = 0 - - //whether hardpoint has activatable ability like shooting or zooming + /// Whether hardpoint has activatable ability like shooting or zooming. var/activatable = 0 - //used to prevent welder click spam + /// Used to prevent welder click spam. var/being_repaired = FALSE - //current user. We can have only one user at a time. Better never change that - var/user - - //Accuracy of the hardpoint. (which is, in fact, a scatter. Need to change this system) - var/accuracy = 1 - - // The firing arc of this hardpoint + /// The firing arc of this hardpoint. var/firing_arc = 0 //in degrees. 0 skips whole arc of fire check // Muzzleflash @@ -91,17 +79,53 @@ //------AMMUNITION VARS---------- - //Currently loaded ammo that we shoot from + /// Currently loaded ammo that we shoot from. var/obj/item/ammo_magazine/hardpoint/ammo - //spare magazines that we can reload from + /// Spare magazines that we can reload from. var/list/backup_clips - //maximum amount of spare mags + /// Maximum amount of spare mags. var/max_clips = 0 /// An assoc list in the format list(/datum/element/bullet_trait_to_give = list(...args)) - /// that will be given to a projectile fired from the hardpoint + /// that will be given to a projectile fired from the hardpoint. var/list/list/traits_to_give + /// How much the bullet scatters when fired, in degrees. + var/scatter = 0 + /// How many bullets the gun fired while burst firing/auto firing. + var/shots_fired = 0 + /// Delay before a new firing sequence can start. + COOLDOWN_DECLARE(fire_cooldown) + + // Firemodes. + /// Current selected firemode of the gun. + var/gun_firemode = GUN_FIREMODE_SEMIAUTO + /// List of allowed firemodes. + var/list/gun_firemode_list = list( + GUN_FIREMODE_SEMIAUTO, + ) + + // Semi-auto and full-auto. + /// For regular shots, how long to wait before firing again. Use modify_fire_delay and set_fire_delay instead of modifying this on the fly + var/fire_delay = 0 + /// The multiplier for how much slower this should fire in automatic mode. 1 is normal, 1.2 is 20% slower, 2 is 100% slower, etc. Protected due to it never needing to be edited. + var/autofire_slow_mult = 1 + /// If the gun is currently auto firing. + var/auto_firing = FALSE + + // Burst fire. + /// How many shots can the weapon shoot in burst? Anything less than 2 and you cannot toggle burst. Use modify_burst_amount and set_burst_amount instead of modifying this + var/burst_amount = 1 + /// The delay in between shots. Lower = less delay = faster. Use modify_burst_delay and set_burst_delay instead of modifying this + var/burst_delay = 1 + /// When burst-firing, this number is extra time before the weapon can fire again. + var/extra_delay = 0 + /// If the gun is currently burst firing. + var/burst_firing = FALSE + + /// Currently selected target to fire at. Set with set_target(). + var/atom/target + //----------------------------- //------GENERAL PROCS---------- //----------------------------- @@ -109,6 +133,7 @@ /obj/item/hardpoint/Initialize() . = ..() set_bullet_traits() + AddComponent(/datum/component/automatedfire/autofire, fire_delay, burst_delay, burst_amount, gun_firemode, autofire_slow_mult, CALLBACK(src, PROC_REF(set_burst_firing)), CALLBACK(src, PROC_REF(reset_fire)), CALLBACK(src, PROC_REF(fire_wrapper)), callback_set_firing = CALLBACK(src, PROC_REF(set_auto_firing))) /obj/item/hardpoint/Destroy() if(owner) @@ -117,7 +142,7 @@ owner = null QDEL_NULL_LIST(backup_clips) QDEL_NULL(ammo) - + set_target(null) return ..() /obj/item/hardpoint/ex_act(severity) @@ -166,37 +191,64 @@ /obj/item/hardpoint/proc/get_integrity_percent() return 100.0*health/initial(health) -/obj/item/hardpoint/proc/on_install(obj/vehicle/multitile/V) - apply_buff(V) - return +/// Apply hardpoint effects to vehicle and self. +/obj/item/hardpoint/proc/on_install(obj/vehicle/multitile/vehicle) + if(!vehicle) //in loose holder + return + RegisterSignal(vehicle, COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES, PROC_REF(recalculate_hardpoint_bonuses)) + apply_buff(vehicle) -/obj/item/hardpoint/proc/on_uninstall(obj/vehicle/multitile/V) - remove_buff(V) - return +/// Remove hardpoint effects from vehicle and self. +/obj/item/hardpoint/proc/on_uninstall(obj/vehicle/multitile/vehicle) + if(!vehicle) //in loose holder + return + UnregisterSignal(vehicle, COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES) + remove_buff(vehicle) + //resetting values like set_gun_config_values() would be tidy, but unnecessary as it gets recalc'd on install anyway -//applying passive buffs like damage type resistance, speed, accuracy, cooldowns -/obj/item/hardpoint/proc/apply_buff(obj/vehicle/multitile/V) +/// Applying passive buffs like damage type resistance, speed, accuracy, cooldowns. +/obj/item/hardpoint/proc/apply_buff(obj/vehicle/multitile/vehicle) if(buff_applied) return if(LAZYLEN(type_multipliers)) for(var/type in type_multipliers) - V.dmg_multipliers[type] *= LAZYACCESS(type_multipliers, type) + vehicle.dmg_multipliers[type] *= LAZYACCESS(type_multipliers, type) if(LAZYLEN(buff_multipliers)) for(var/type in buff_multipliers) - V.misc_multipliers[type] *= LAZYACCESS(buff_multipliers, type) + vehicle.misc_multipliers[type] *= LAZYACCESS(buff_multipliers, type) buff_applied = TRUE + SEND_SIGNAL(vehicle, COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES) -//removing buffs -/obj/item/hardpoint/proc/remove_buff(obj/vehicle/multitile/V) +/// Removing passive buffs like damage type resistance, speed, accuracy, cooldowns. +/obj/item/hardpoint/proc/remove_buff(obj/vehicle/multitile/vehicle) if(!buff_applied) return if(LAZYLEN(type_multipliers)) for(var/type in type_multipliers) - V.dmg_multipliers[type] *= 1 / LAZYACCESS(type_multipliers, type) + vehicle.dmg_multipliers[type] *= 1 / LAZYACCESS(type_multipliers, type) if(LAZYLEN(buff_multipliers)) for(var/type in buff_multipliers) - V.misc_multipliers[type] *= 1 / LAZYACCESS(buff_multipliers, type) + vehicle.misc_multipliers[type] *= 1 / LAZYACCESS(buff_multipliers, type) buff_applied = FALSE + SEND_SIGNAL(vehicle, COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES) + +/// Recalculates hardpoint values based on vehicle modifiers. +/obj/item/hardpoint/proc/recalculate_hardpoint_bonuses() + scatter = initial(scatter) / owner.misc_multipliers["accuracy"] + var/cooldown_mult = owner.misc_multipliers["cooldown"] + set_fire_delay(initial(fire_delay) * cooldown_mult) + set_burst_delay(initial(burst_delay) * cooldown_mult) + extra_delay = initial(extra_delay) * cooldown_mult + +/// Setter for fire_delay. +/obj/item/hardpoint/proc/set_fire_delay(value) + fire_delay = value + SEND_SIGNAL(src, COMSIG_GUN_AUTOFIREDELAY_MODIFIED, fire_delay) + +/// Setter for burst_delay. +/obj/item/hardpoint/proc/set_burst_delay(value) + burst_delay = value + SEND_SIGNAL(src, COMSIG_GUN_BURST_SHOT_DELAY_MODIFIED, burst_delay) //this proc called on each move of vehicle /obj/item/hardpoint/proc/on_move(turf/old, turf/new_turf, move_dir) @@ -253,13 +305,12 @@ return data -// Traces backwards from the gun origin to the vehicle to check for obstacles between the vehicle and the muzzle -/obj/item/hardpoint/proc/clear_los(atom/A) - +/// Traces backwards from the gun origin to the vehicle to check for obstacles between the vehicle and the muzzle. +/obj/item/hardpoint/proc/clear_los() if(origins[1] == 0 && origins[2] == 0) //skipping check for modules we don't need this return TRUE - var/turf/muzzle_turf = locate(owner.x + origins[1], owner.y + origins[2], owner.z) + var/turf/muzzle_turf = get_origin_turf() var/turf/checking_turf = muzzle_turf while(!(owner in checking_turf)) @@ -268,24 +319,24 @@ return FALSE // Ensure that we can pass over all objects in the turf - for(var/obj/O in checking_turf) + for(var/obj/object in checking_turf) // Since vehicles are multitile the - if(O == owner) + if(object == owner) continue // Non-dense objects are irrelevant - if(!O.density) + if(!object.density) continue // Make sure we can pass object from all directions - if(!(O.pass_flags.flags_can_pass_all & PASS_OVER_THROW_ITEM)) - if(!(O.flags_atom & ON_BORDER)) + if(!HAS_FLAG(object.pass_flags.flags_can_pass_all, PASS_OVER_THROW_ITEM)) + if(!HAS_FLAG(object.flags_atom, ON_BORDER)) return FALSE //If we're behind the object, check the behind pass flags - else if(dir == O.dir && !(O.pass_flags.flags_can_pass_behind & PASS_OVER_THROW_ITEM)) + else if(dir == object.dir && !HAS_FLAG(object.pass_flags.flags_can_pass_behind, PASS_OVER_THROW_ITEM)) return FALSE //If we're in front, check front pass flags - else if(dir == turn(O.dir, 180) && !(O.pass_flags.flags_can_pass_front & PASS_OVER_THROW_ITEM)) + else if(dir == turn(object.dir, 180) && !HAS_FLAG(object.pass_flags.flags_can_pass_front, PASS_OVER_THROW_ITEM)) return FALSE // Trace back towards the vehicle @@ -297,47 +348,6 @@ //------INTERACTION PROCS---------- //----------------------------- -//If the hardpoint can be activated by current user -/obj/item/hardpoint/proc/can_activate(mob/user, atom/A) - if(!owner) - return - - var/seat = owner.get_mob_seat(user) - if(!seat) - return - - if(seat != allowed_seat) - to_chat(user, SPAN_WARNING("Only [allowed_seat] can use [name].")) - return - - if(health <= 0) - to_chat(user, SPAN_WARNING("\The [name] is broken!")) - return FALSE - - if(world.time < next_use) - if(cooldown >= 20) //filter out guns with high firerate to prevent message spam. - to_chat(user, SPAN_WARNING("You need to wait [SPAN_HELPFUL((next_use - world.time) / 10)] seconds before [name] can be used again.")) - return FALSE - - if(ammo && ammo.current_rounds <= 0) - to_chat(user, SPAN_WARNING("\The [name] is out of ammo! Magazines: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) - return FALSE - - if(!in_firing_arc(A)) - to_chat(user, SPAN_WARNING("The target is not within your firing arc!")) - return FALSE - - if(!clear_los(A)) - to_chat(user, SPAN_WARNING("You don't have a clear line of sight to the target!")) - return FALSE - - return TRUE - -//Called when you want to activate the hardpoint, by default firing a gun -//This can also be used for some type of temporary buff or toggling mode, up to you -/obj/item/hardpoint/proc/activate(mob/user, atom/A) - fire(user, A) - /obj/item/hardpoint/proc/deactivate() return @@ -490,76 +500,201 @@ user.visible_message(SPAN_NOTICE("[user] stops repairing \the [name]."), SPAN_NOTICE("You stop repairing \the [name]. The integrity of the module is at [SPAN_HELPFUL(round(get_integrity_percent()))]%.")) return -//determines whether something is in firing arc of a hardpoint -/obj/item/hardpoint/proc/in_firing_arc(atom/A) - if(!owner) - return FALSE +/// Setter proc for the automatic firing flag. +/obj/item/hardpoint/proc/set_auto_firing(auto = FALSE) + if(auto_firing != auto) + auto_firing = auto + if(!auto_firing) //end-of-fire, show changed ammo + display_ammo() + +/// Setter proc for the burst firing flag. +/obj/item/hardpoint/proc/set_burst_firing(burst = FALSE) + if(burst_firing != burst) + burst_firing = burst + if(!burst_firing) //end-of-fire, show changed ammo + display_ammo() + +/// Clean all firing references. +/obj/item/hardpoint/proc/reset_fire() + shots_fired = 0 + set_target(null) + set_auto_firing(FALSE) //on abnormal exits automatic fire doesn't call set_auto_firing() + +/// Set the target and take care of hard delete. +/obj/item/hardpoint/proc/set_target(atom/object) + if(object == target || object == loc) + return + if(target) + UnregisterSignal(target, COMSIG_PARENT_QDELETING) + target = object + if(target) + RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(clean_target)) + +/// Set the target to its turf, so we keep shooting even when it was qdeled. +/obj/item/hardpoint/proc/clean_target() + SIGNAL_HANDLER + target = get_turf(target) + +/// Print how much ammo is left to chat. +/obj/item/hardpoint/proc/display_ammo(mob/user) + if(!user) + user = owner.get_seat_mob(allowed_seat) + if(!user) + return - if(!firing_arc) - return TRUE + if(ammo) + to_chat(user, SPAN_WARNING("[name] Ammo: [SPAN_HELPFUL(ammo ? ammo.current_rounds : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds : 0)] | Mags: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) - var/turf/T = get_turf(A) - if(!T) - return FALSE +/// Reset variables used in firing and remove the gun from the autofire system. +/obj/item/hardpoint/proc/stop_fire(datum/source, atom/object, turf/location, control, params) + SEND_SIGNAL(src, COMSIG_GUN_STOP_FIRE) + if(auto_firing) + reset_fire() //automatic fire doesn't reset itself from COMSIG_GUN_STOP_FIRE - var/dx = T.x - (owner.x + origins[1]/2) - var/dy = T.y - (owner.y + origins[2]/2) - - var/deg = 0 - switch(dir) - if(EAST) - deg = 0 - if(NORTH) - deg = -90 - if(WEST) - deg = 180 - if(SOUTH) - deg = 90 - - var/nx = dx * cos(deg) - dy * sin(deg) - var/ny = dx * sin(deg) + dy * cos(deg) - if(nx == 0) - return firing_arc >= 90 - - var/angle = arctan(ny/nx) - if(nx < 0) - angle += 180 - - return abs(angle) <= (firing_arc/2) - -//doing last preparation before actually firing gun -/obj/item/hardpoint/proc/fire(mob/user, atom/A) - if(!ammo) //Prevents a runtime +/// Update the target if you dragged your mouse. +/obj/item/hardpoint/proc/change_target(datum/source, atom/src_object, atom/over_object, turf/src_location, turf/over_location, src_control, over_control, params) + set_target(get_turf_on_clickcatcher(over_object, source, params)) + +/// Check if the gun can fire and add it to bucket autofire system if needed, or just fire the gun if not. +/obj/item/hardpoint/proc/start_fire(datum/source, atom/object, turf/location, control, params) + if(istype(object, /atom/movable/screen)) return - if(ammo.current_rounds <= 0) + + if(QDELETED(object)) return - next_use = world.time + cooldown * owner.misc_multipliers["cooldown"] - if(!prob((accuracy * 100) / owner.misc_multipliers["accuracy"])) - A = get_step(get_turf(A), pick(GLOB.cardinals)) + if(!auto_firing && !burst_firing && !COOLDOWN_FINISHED(src, fire_cooldown)) + if(max(fire_delay, burst_delay + extra_delay) >= 2.0 SECONDS) //filter out guns with high firerate to prevent message spam. + to_chat(source, SPAN_WARNING("You need to wait [SPAN_HELPFUL(COOLDOWN_SECONDSLEFT(src, fire_cooldown))] seconds before [name] can be used again.")) + return - if(LAZYLEN(activation_sounds)) - playsound(get_turf(src), pick(activation_sounds), 60, 1) + set_target(get_turf_on_clickcatcher(object, source, params)) - fire_projectile(user, A) + if(gun_firemode == GUN_FIREMODE_SEMIAUTO) + var/fire_return = try_fire(object, source, params) + //end-of-fire, show ammo (if changed) + if(fire_return == AUTOFIRE_CONTINUE) + reset_fire() + display_ammo(source) + else + SEND_SIGNAL(src, COMSIG_GUN_FIRE) + +/// Wrapper proc for the autofire system to ensure the important args aren't null. +/obj/item/hardpoint/proc/fire_wrapper(atom/target, mob/living/user, params) + SHOULD_NOT_OVERRIDE(TRUE) + if(!target) + target = src.target + if(!user) + user = owner.get_seat_mob(allowed_seat) + if(!target || !user) + return NONE + + return try_fire(target, user, params) + +/// Tests if firing should be interrupted, otherwise fires. +/obj/item/hardpoint/proc/try_fire(atom/target, mob/living/user, params) + if(health <= 0) + to_chat(user, SPAN_WARNING("\The [name] is broken!")) + return NONE - to_chat(user, SPAN_WARNING("[name] Ammo: [SPAN_HELPFUL(ammo ? ammo.current_rounds : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds : 0)] | Mags: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) + if(ammo && ammo.current_rounds <= 0) + click_empty(user) + return NONE -//finally firing the gun -/obj/item/hardpoint/proc/fire_projectile(mob/user, atom/A) - set waitfor = 0 + if(!in_firing_arc(target)) + to_chat(user, SPAN_WARNING("The target is not within your firing arc!")) + return NONE - var/turf/origin_turf = get_turf(src) - origin_turf = locate(origin_turf.x + origins[1], origin_turf.y + origins[2], origin_turf.z) + if(!clear_los()) + to_chat(user, SPAN_WARNING("The muzzle is obstructed!")) + return NONE - var/obj/projectile/P = generate_bullet(user, origin_turf) - SEND_SIGNAL(P, COMSIG_BULLET_USER_EFFECTS, user) - P.fire_at(A, user, src, P.ammo.max_range, P.ammo.shell_speed) + return handle_fire(target, user, params) - if(use_muzzle_flash) - muzzle_flash(Get_Angle(origin_turf, A)) +/// Actually fires the gun, sets up the projectile and fires it. +/obj/item/hardpoint/proc/handle_fire(atom/target, mob/living/user, params) + var/turf/origin_turf = get_origin_turf() + var/obj/projectile/projectile_to_fire = generate_bullet(user, origin_turf) ammo.current_rounds-- + SEND_SIGNAL(projectile_to_fire, COMSIG_BULLET_USER_EFFECTS, user) + + // turf-targeted projectiles are fired without scatter, because proc would raytrace them further away + var/ammo_flags = projectile_to_fire.ammo.flags_ammo_behavior | projectile_to_fire.projectile_override_flags + if(!HAS_FLAG(ammo_flags, AMMO_HITS_TARGET_TURF) && !HAS_FLAG(ammo_flags, AMMO_EXPLOSIVE)) //AMMO_EXPLOSIVE is also a turf-targeted projectile + projectile_to_fire.scatter = scatter + target = simulate_scatter(projectile_to_fire, target, origin_turf, get_turf(target), user) + + INVOKE_ASYNC(projectile_to_fire, TYPE_PROC_REF(/obj/projectile, fire_at), target, user, src, projectile_to_fire.ammo.max_range, projectile_to_fire.ammo.shell_speed) + projectile_to_fire = null + + shots_fired++ + play_firing_sounds() + if(use_muzzle_flash) + muzzle_flash(Get_Angle(origin_turf, target)) + + set_fire_cooldown(gun_firemode) + + return AUTOFIRE_CONTINUE + +/// Start cooldown to respect delay of firemode. +/obj/item/hardpoint/proc/set_fire_cooldown(firemode) + var/cooldown_time = 0 + switch(firemode) + if(GUN_FIREMODE_SEMIAUTO) + cooldown_time = fire_delay + if(GUN_FIREMODE_BURSTFIRE) + cooldown_time = burst_delay + extra_delay + if(GUN_FIREMODE_AUTOMATIC) + cooldown_time = fire_delay + COOLDOWN_START(src, fire_cooldown, cooldown_time) + +/// Adjust target based on random scatter angle. +/obj/item/hardpoint/proc/simulate_scatter(obj/projectile/projectile_to_fire, atom/target, turf/curloc, turf/targloc) + var/fire_angle = Get_Angle(curloc, targloc) + var/total_scatter_angle = projectile_to_fire.scatter + + //Not if the gun doesn't scatter at all, or negative scatter. + if(total_scatter_angle > 0) + fire_angle += rand(-total_scatter_angle, total_scatter_angle) + target = get_angle_target_turf(curloc, fire_angle, 30) + + return target + +/// Get turf at hardpoint origin offset, used as the muzzle. +/obj/item/hardpoint/proc/get_origin_turf() + return get_offset_target_turf(get_turf(src), origins[1], origins[2]) + +/// Plays 'click' noise and announced to chat. Usually called when weapon empty. +/obj/item/hardpoint/proc/click_empty(mob/user) + playsound(src, 'sound/weapons/gun_empty.ogg', 25, 1, 5) + if(user) + to_chat(user, SPAN_WARNING("*click*")) + +/// Selects and plays a firing sound from the list. +/obj/item/hardpoint/proc/play_firing_sounds() + if(LAZYLEN(activation_sounds)) + playsound(get_turf(src), pick(activation_sounds), 60, 1) + +/// Determines whether something is in firing arc of a hardpoint. +/obj/item/hardpoint/proc/in_firing_arc(atom/target) + if(!firing_arc || !ISINRANGE_EX(firing_arc, 0, 360)) + return TRUE + + var/turf/muzzle_turf = get_origin_turf() + var/turf/target_turf = get_turf(target) + + //same tile angle returns EAST, returning FALSE to ensure consistency + if(muzzle_turf == target_turf) + return FALSE + + var/angle_diff = SIMPLIFY_DEGREES(dir2angle(dir) - get_angle(muzzle_turf, target_turf)) + if(angle_diff < -180) + angle_diff += 360 + else if(angle_diff > 180) + angle_diff -= 360 + + return abs(angle_diff) <= (firing_arc * 0.5) //----------------------------- //------ICON PROCS---------- diff --git a/code/modules/vehicles/hardpoints/holder/holder.dm b/code/modules/vehicles/hardpoints/holder/holder.dm index b14e078a3997..fc8e849d105c 100644 --- a/code/modules/vehicles/hardpoints/holder/holder.dm +++ b/code/modules/vehicles/hardpoints/holder/holder.dm @@ -43,10 +43,21 @@ for(var/obj/item/hardpoint/H in hardpoints) H.take_damage(damage) -/obj/item/hardpoint/holder/on_install(obj/vehicle/multitile/V) - for(var/obj/item/hardpoint/HP in hardpoints) - HP.owner = V - return +/obj/item/hardpoint/holder/on_install(obj/vehicle/multitile/vehicle) + ..() + if(!vehicle) //in loose holder + return + for(var/obj/item/hardpoint/hardpoint in hardpoints) + hardpoint.owner = vehicle + hardpoint.on_install(vehicle) + +/obj/item/hardpoint/holder/on_uninstall(obj/vehicle/multitile/vehicle) + if(!vehicle) //in loose holder + return + for(var/obj/item/hardpoint/hardpoint in hardpoints) + hardpoint.on_uninstall(vehicle) + hardpoint.owner = null + ..() /obj/item/hardpoint/holder/proc/can_install(obj/item/hardpoint/H) // Can only have 1 hardpoint of each slot type @@ -121,16 +132,17 @@ H.forceMove(src) LAZYADD(hardpoints, H) + H.on_install(owner) H.rotate(turning_angle(H.dir, dir)) /obj/item/hardpoint/holder/proc/remove_hardpoint(obj/item/hardpoint/H, turf/uninstall_to) if(!hardpoints) return - hardpoints -= H H.forceMove(uninstall_to ? uninstall_to : get_turf(src)) + H.on_uninstall(owner) H.reset_rotation() - + hardpoints -= H H.owner = null if(H.health <= 0) diff --git a/code/modules/vehicles/hardpoints/holder/tank_turret.dm b/code/modules/vehicles/hardpoints/holder/tank_turret.dm index 27ab6c95404c..896628e609bb 100644 --- a/code/modules/vehicles/hardpoints/holder/tank_turret.dm +++ b/code/modules/vehicles/hardpoints/holder/tank_turret.dm @@ -13,8 +13,6 @@ density = TRUE //come on, it's huge activatable = TRUE - cooldown = 150 - accuracy = 0.8 ammo = new /obj/item/ammo_magazine/hardpoint/turret_smoke max_clips = 2 @@ -60,6 +58,15 @@ // Used during the windup var/rotating = FALSE + scatter = 4 + gun_firemode = GUN_FIREMODE_BURSTFIRE + gun_firemode_list = list( + GUN_FIREMODE_BURSTFIRE, + ) + burst_amount = 2 + burst_delay = 1.0 SECONDS + extra_delay = 13.0 SECONDS + /obj/item/hardpoint/holder/tank_turret/update_icon() var/broken = (health <= 0) icon_state = "tank_turret_[broken]" @@ -182,12 +189,7 @@ user.client.pixel_x = -1 * AM.view_tile_offset * 32 user.client.pixel_y = 0 -/obj/item/hardpoint/holder/tank_turret/fire(mob/user, atom/A) - if(ammo.current_rounds <= 0) - return - - next_use = world.time + cooldown - +/obj/item/hardpoint/holder/tank_turret/try_fire(atom/target, mob/living/user, params) var/turf/L var/turf/R switch(owner.dir) @@ -204,26 +206,14 @@ L = locate(owner.x - 4, owner.y + 2, owner.z) R = locate(owner.x - 4, owner.y - 2, owner.z) - if(LAZYLEN(activation_sounds)) - playsound(get_turf(src), pick(activation_sounds), 60, 1) - fire_projectile(user, L) + if(shots_fired) + target = R + else + target = L - sleep(10) + return ..() - if(LAZYLEN(activation_sounds)) - playsound(get_turf(src), pick(activation_sounds), 60, 1) - fire_projectile(user, R) - - to_chat(user, SPAN_WARNING("Smoke Screen uses left: [SPAN_HELPFUL(ammo ? ammo.current_rounds / 2 : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds / 2 : 0)] | Mags: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) - -/obj/item/hardpoint/holder/tank_turret/fire_projectile(mob/user, atom/A) - set waitfor = 0 - - var/turf/origin_turf = get_turf(src) - origin_turf = locate(origin_turf.x + origins[1], origin_turf.y + origins[2], origin_turf.z) +/obj/item/hardpoint/holder/tank_turret/get_origin_turf() + var/origin_turf = ..() origin_turf = get_step(get_step(origin_turf, owner.dir), owner.dir) //this should get us tile in front of tank to prevent grenade being stuck under us. - - var/obj/projectile/P = generate_bullet(user, origin_turf) - SEND_SIGNAL(P, COMSIG_BULLET_USER_EFFECTS, owner.seats[VEHICLE_GUNNER]) - P.fire_at(A, owner.seats[VEHICLE_GUNNER], src, get_dist(origin_turf, A) + 1, P.ammo.shell_speed) - ammo.current_rounds-- + return origin_turf diff --git a/code/modules/vehicles/hardpoints/primary/autocannon.dm b/code/modules/vehicles/hardpoints/primary/autocannon.dm index df9224011b32..b6dc2cedc674 100644 --- a/code/modules/vehicles/hardpoints/primary/autocannon.dm +++ b/code/modules/vehicles/hardpoints/primary/autocannon.dm @@ -8,8 +8,6 @@ activation_sounds = list('sound/weapons/vehicles/autocannon_fire.ogg') health = 500 - cooldown = 7 - accuracy = 0.98 firing_arc = 60 origins = list(0, -3) @@ -23,3 +21,10 @@ "4" = list(32, 0), "8" = list(-32, 0) ) + + scatter = 1 + gun_firemode = GUN_FIREMODE_AUTOMATIC + gun_firemode_list = list( + GUN_FIREMODE_AUTOMATIC, + ) + fire_delay = 0.7 SECONDS diff --git a/code/modules/vehicles/hardpoints/primary/dual_cannon.dm b/code/modules/vehicles/hardpoints/primary/dual_cannon.dm index ad57e20e8456..4033a4bffb2a 100644 --- a/code/modules/vehicles/hardpoints/primary/dual_cannon.dm +++ b/code/modules/vehicles/hardpoints/primary/dual_cannon.dm @@ -12,10 +12,7 @@ damage_multiplier = 0.2 health = 500 - cooldown = 7 - accuracy = 0.98 firing_arc = 60 - var/burst_amount = 2 origins = list(0, -2) @@ -33,27 +30,15 @@ "8" = list(14, 9) ) + scatter = 1 + gun_firemode = GUN_FIREMODE_AUTOMATIC + gun_firemode_list = list( + GUN_FIREMODE_AUTOMATIC, + ) + fire_delay = 0.3 SECONDS + /obj/item/hardpoint/primary/dualcannon/set_bullet_traits() ..() LAZYADD(traits_to_give, list( BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) )) - -/obj/item/hardpoint/primary/dualcannon/fire(mob/user, atom/A) - if(ammo.current_rounds <= 0) - return - - next_use = world.time + cooldown * owner.misc_multipliers["cooldown"] - - for(var/bullets_fired = 1, bullets_fired <= burst_amount, bullets_fired++) - var/atom/T = A - if(!prob((accuracy * 100) / owner.misc_multipliers["accuracy"])) - T = get_step(get_turf(A), pick(GLOB.cardinals)) - if(LAZYLEN(activation_sounds)) - playsound(get_turf(src), pick(activation_sounds), 60, 1) - fire_projectile(user, T) - if(ammo.current_rounds <= 0) - break - if(bullets_fired < burst_amount) //we need to sleep only if there are more bullets to shoot in the burst - sleep(3) - to_chat(user, SPAN_WARNING("[src] Ammo: [SPAN_HELPFUL(ammo ? ammo.current_rounds : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds : 0)] | Mags: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) diff --git a/code/modules/vehicles/hardpoints/primary/flamer.dm b/code/modules/vehicles/hardpoints/primary/flamer.dm index 929842df2307..13beee9dd2c2 100644 --- a/code/modules/vehicles/hardpoints/primary/flamer.dm +++ b/code/modules/vehicles/hardpoints/primary/flamer.dm @@ -8,8 +8,6 @@ activation_sounds = list('sound/weapons/vehicles/flamethrower.ogg') health = 400 - cooldown = 20 - accuracy = 0.75 firing_arc = 90 origins = list(0, -3) @@ -26,36 +24,19 @@ use_muzzle_flash = FALSE + scatter = 5 + fire_delay = 2.0 SECONDS + /obj/item/hardpoint/primary/flamer/set_bullet_traits() ..() LAZYADD(traits_to_give, list( BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) )) -/obj/item/hardpoint/primary/flamer/can_activate(mob/user, atom/A) - if(!..()) - return FALSE - - var/turf/origin_turf = get_turf(src) - origin_turf = locate(origin_turf.x + origins[1], origin_turf.y + origins[2], origin_turf.z) - if(origin_turf == get_turf(A)) - return FALSE - - return TRUE - -/obj/item/hardpoint/primary/flamer/fire_projectile(mob/user, atom/A) - set waitfor = 0 - - var/turf/origin_turf = get_turf(src) - origin_turf = locate(origin_turf.x + origins[1], origin_turf.y + origins[2], origin_turf.z) - - var/range = get_dist(origin_turf, A) + 1 - - var/obj/projectile/P = generate_bullet(user, origin_turf) - SEND_SIGNAL(P, COMSIG_BULLET_USER_EFFECTS, owner.seats[VEHICLE_GUNNER]) - P.fire_at(A, owner.seats[VEHICLE_GUNNER], src, range < P.ammo.max_range ? range : P.ammo.max_range, P.ammo.shell_speed) - - if(use_muzzle_flash) - muzzle_flash(Get_Angle(owner, A)) +/obj/item/hardpoint/primary/flamer/try_fire(target, user, params) + var/turf/origin_turf = get_origin_turf() + if(origin_turf == get_turf(target)) + to_chat(user, SPAN_WARNING("The target is too close.")) + return NONE - ammo.current_rounds-- + return ..() diff --git a/code/modules/vehicles/hardpoints/primary/ltb.dm b/code/modules/vehicles/hardpoints/primary/ltb.dm index 7c663dc27fbc..19b5c7e7b9b4 100644 --- a/code/modules/vehicles/hardpoints/primary/ltb.dm +++ b/code/modules/vehicles/hardpoints/primary/ltb.dm @@ -8,8 +8,6 @@ activation_sounds = list('sound/weapons/vehicles/cannon_fire1.ogg', 'sound/weapons/vehicles/cannon_fire2.ogg') health = 500 - cooldown = 200 - accuracy = 0.97 firing_arc = 60 origins = list(0, -3) @@ -30,3 +28,6 @@ "4" = list(89, -4), "8" = list(-89, -4) ) + + scatter = 2 + fire_delay = 20.0 SECONDS diff --git a/code/modules/vehicles/hardpoints/primary/minigun.dm b/code/modules/vehicles/hardpoints/primary/minigun.dm index a6e44d2dbf2c..3acf37eec268 100644 --- a/code/modules/vehicles/hardpoints/primary/minigun.dm +++ b/code/modules/vehicles/hardpoints/primary/minigun.dm @@ -7,8 +7,6 @@ disp_icon_state = "ltaaap_minigun" health = 350 - cooldown = 8 - accuracy = 0.6 firing_arc = 90 origins = list(0, -3) @@ -30,46 +28,58 @@ "8" = list(-77, 0) ) - //changed minigun mechanic so instead of having lowered cooldown with each shot it now has increased burst size. - //While it's still spammy, user doesn't have to click as fast as possible anymore and has margin of 2 seconds before minigun will start slowing down - - var/chained_shots = 1 //how many quick succession shots we've fired, 1 by default - var/last_shot_time = 0 //when was last shot fired, after 3 seconds we stop barrel - var/list/chain_bursts = list(1, 1, 2, 2, 3, 3, 3, 4, 4, 4) //how many shots per click we do + scatter = 7 + gun_firemode = GUN_FIREMODE_AUTOMATIC + gun_firemode_list = list( + GUN_FIREMODE_AUTOMATIC, + ) + fire_delay = 0.8 SECONDS //base fire rate, modified by stage_delay_mult + activation_sounds = list('sound/weapons/gun_minigun.ogg') + /// Active firing time to reach max spin_stage. + var/spinup_time = 8 SECONDS + /// Grace period before losing spin_stage. + var/spindown_grace_time = 2 SECONDS + COOLDOWN_DECLARE(spindown_grace_cooldown) + /// Cooldown time to reach min spin_stage. + var/spindown_time = 3 SECONDS + /// Index of stage_rate. + var/spin_stage = 1 + /// Shots fired per fire_delay at a particular spin_stage. + var/list/stage_rate = list(1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 5) + /// Fire delay multiplier for current spin_stage. + var/stage_delay_mult = 1 + /// When it was last fired, related to world.time. + var/last_fired = 0 -/obj/item/hardpoint/primary/minigun/fire(mob/user, atom/A) +/obj/item/hardpoint/primary/minigun/set_fire_delay(value) + fire_delay = value + SEND_SIGNAL(src, COMSIG_GUN_AUTOFIREDELAY_MODIFIED, fire_delay * stage_delay_mult) - var/S = 'sound/weapons/vehicles/minigun_stop.ogg' - //check how much time since last shot. 2 seconds are grace period before minigun starts to lose rotation momentum - var/t = world.time - last_shot_time - 2 SECONDS - t = round(t / 10) - if(t > 0) - chained_shots = max(chained_shots - t * 3, 1) //we lose 3 chained_shots per second - else - if(chained_shots < 11) - chained_shots++ - S = 'sound/weapons/vehicles/minigun_loop.ogg' +/obj/item/hardpoint/primary/minigun/set_fire_cooldown() + calculate_stage_delay_mult() //needs to check grace_cooldown before refreshed + last_fired = world.time + COOLDOWN_START(src, spindown_grace_cooldown, spindown_grace_time) + COOLDOWN_START(src, fire_cooldown, fire_delay * stage_delay_mult) - if(chained_shots == 1) - playsound(get_turf(src), 'sound/weapons/vehicles/minigun_start.ogg', 40, 1) +/obj/item/hardpoint/primary/minigun/proc/calculate_stage_delay_mult() + var/stage_rate_len = stage_rate.len + var/delta_time = world.time - last_fired - next_use = world.time + cooldown * owner.misc_multipliers["cooldown"] - - //how many rounds we will shoot in this burst - if(chained_shots > LAZYLEN(chain_bursts)) //5 shots at maximum rotation - t = 5 + var/old_spin_stage = spin_stage + if(auto_firing || burst_firing) //spinup if continuing fire + var/delta_stage = delta_time * (stage_rate_len - 1) + spin_stage += delta_stage / spinup_time + else if(COOLDOWN_FINISHED(src, spindown_grace_cooldown)) //spindown if initiating fire after grace + var/delta_stage = (delta_time - spindown_grace_time) * (stage_rate_len - 1) + spin_stage -= delta_stage / spindown_time else - t = LAZYACCESS(chain_bursts, chained_shots) - for(var/i = 1; i <= t; i++) - var/atom/T = A - if(!prob((accuracy * 100) / owner.misc_multipliers["accuracy"])) - T = get_step(get_turf(T), pick(GLOB.cardinals)) - fire_projectile(user, T) - if(ammo.current_rounds <= 0) - break - sleep(2) - to_chat(user, SPAN_WARNING("[src] Ammo: [SPAN_HELPFUL(ammo ? ammo.current_rounds : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds : 0)] | Mags: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) + return + spin_stage = Clamp(spin_stage, 1, stage_rate_len) + + var/old_stage_rate = stage_rate[Floor(old_spin_stage)] + var/new_stage_rate = stage_rate[Floor(spin_stage)] - playsound(get_turf(src), S, 40, 1) - last_shot_time = world.time + if(old_stage_rate != new_stage_rate) + stage_delay_mult = 1 / new_stage_rate + SEND_SIGNAL(src, COMSIG_GUN_AUTOFIREDELAY_MODIFIED, fire_delay * stage_delay_mult) diff --git a/code/modules/vehicles/hardpoints/secondary/cupola.dm b/code/modules/vehicles/hardpoints/secondary/cupola.dm index 3c329e135855..f259d6ea2623 100644 --- a/code/modules/vehicles/hardpoints/secondary/cupola.dm +++ b/code/modules/vehicles/hardpoints/secondary/cupola.dm @@ -8,10 +8,7 @@ activation_sounds = list('sound/weapons/gun_smartgun1.ogg', 'sound/weapons/gun_smartgun2.ogg', 'sound/weapons/gun_smartgun3.ogg', 'sound/weapons/gun_smartgun4.ogg') health = 350 - cooldown = 15 - accuracy = 0.9 firing_arc = 120 - var/burst_amount = 3 origins = list(0, -2) @@ -25,27 +22,17 @@ "8" = list(-5, 7) ) + scatter = 3 + gun_firemode = GUN_FIREMODE_BURSTFIRE + gun_firemode_list = list( + GUN_FIREMODE_BURSTFIRE, + ) + burst_amount = 3 + burst_delay = 0.3 SECONDS + extra_delay = 0.6 SECONDS + /obj/item/hardpoint/secondary/m56cupola/set_bullet_traits() ..() LAZYADD(traits_to_give, list( BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) )) - -/obj/item/hardpoint/secondary/m56cupola/fire(mob/user, atom/A) - if(ammo.current_rounds <= 0) - return - - next_use = world.time + cooldown * owner.misc_multipliers["cooldown"] - - for(var/bullets_fired = 1, bullets_fired <= burst_amount, bullets_fired++) - var/atom/T = A - if(!prob((accuracy * 100) / owner.misc_multipliers["accuracy"])) - T = get_step(get_turf(A), pick(GLOB.cardinals)) - if(LAZYLEN(activation_sounds)) - playsound(get_turf(src), pick(activation_sounds), 60, 1) - fire_projectile(user, T) - if(ammo.current_rounds <= 0) - break - if(bullets_fired < burst_amount) //we need to sleep only if there are more bullets to shoot in the burst - sleep(3) - to_chat(user, SPAN_WARNING("[src] Ammo: [SPAN_HELPFUL(ammo ? ammo.current_rounds : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds : 0)] | Mags: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) diff --git a/code/modules/vehicles/hardpoints/secondary/flamer.dm b/code/modules/vehicles/hardpoints/secondary/flamer.dm index 10f7453d8c95..5557cfb24e17 100644 --- a/code/modules/vehicles/hardpoints/secondary/flamer.dm +++ b/code/modules/vehicles/hardpoints/secondary/flamer.dm @@ -8,8 +8,6 @@ activation_sounds = list('sound/weapons/vehicles/flamethrower.ogg') health = 300 - cooldown = 30 - accuracy = 0.68 firing_arc = 120 origins = list(0, -2) @@ -28,31 +26,20 @@ "8" = list(-3, 18) ) -/obj/item/hardpoint/secondary/small_flamer/fire_projectile(mob/user, atom/A) - set waitfor = 0 - - var/turf/origin_turf = get_turf(src) - origin_turf = locate(origin_turf.x + origins[1], origin_turf.y + origins[2], origin_turf.z) - var/list/turf/turfs = getline2(origin_turf, A) - var/distance = 0 - var/turf/prev_T - - for(var/turf/T in turfs) - if(T == loc) - prev_T = T - continue - if(!ammo.current_rounds) break - if(distance >= max_range) break - if(prev_T && LinkBlocked(prev_T, T)) - break - ammo.current_rounds-- - flame_turf(T, user) - distance++ - prev_T = T - sleep(1) - -/obj/item/hardpoint/secondary/small_flamer/proc/flame_turf(turf/T, mob/user) - if(!istype(T)) return - - if(!locate(/obj/flamer_fire) in T) // No stacking flames! - new/obj/flamer_fire(T, create_cause_data(initial(name), user)) + scatter = 6 + fire_delay = 3.0 SECONDS + +/obj/item/hardpoint/secondary/small_flamer/handle_fire(atom/target, mob/living/user, params) + var/turf/origin_turf = get_origin_turf() + + var/distance = get_dist(origin_turf, get_turf(target)) + var/fire_amount = min(ammo.current_rounds, distance+1, max_range) + ammo.current_rounds -= fire_amount + + new /obj/flamer_fire(origin_turf, create_cause_data(initial(name), user), null, fire_amount, null, FLAMESHAPE_LINE, target, CALLBACK(src, PROC_REF(display_ammo), user)) + + play_firing_sounds() + + COOLDOWN_START(src, fire_cooldown, fire_delay) + + return AUTOFIRE_CONTINUE diff --git a/code/modules/vehicles/hardpoints/secondary/frontal_cannon.dm b/code/modules/vehicles/hardpoints/secondary/frontal_cannon.dm index a4d7370935fe..536b5742cfcd 100644 --- a/code/modules/vehicles/hardpoints/secondary/frontal_cannon.dm +++ b/code/modules/vehicles/hardpoints/secondary/frontal_cannon.dm @@ -11,10 +11,7 @@ damage_multiplier = 0.11 health = 350 - cooldown = 16 - accuracy = 0.8 firing_arc = 120 - var/burst_amount = 4 origins = list(0, -2) @@ -32,27 +29,15 @@ "8" = list(-62, -26) ) + scatter = 4 + gun_firemode = GUN_FIREMODE_AUTOMATIC + gun_firemode_list = list( + GUN_FIREMODE_AUTOMATIC, + ) + fire_delay = 0.3 SECONDS + /obj/item/hardpoint/secondary/frontalcannon/set_bullet_traits() ..() LAZYADD(traits_to_give, list( BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) )) - -/obj/item/hardpoint/secondary/frontalcannon/fire(mob/user, atom/A) - if(ammo.current_rounds <= 0) - return - - next_use = world.time + cooldown * owner.misc_multipliers["cooldown"] - - for(var/bullets_fired = 1, bullets_fired <= burst_amount, bullets_fired++) - var/atom/T = A - if(!prob((accuracy * 100) / owner.misc_multipliers["accuracy"])) - T = get_step(get_turf(A), pick(GLOB.cardinals)) - if(LAZYLEN(activation_sounds)) - playsound(get_turf(src), pick(activation_sounds), 60, 1) - fire_projectile(user, T) - if(ammo.current_rounds <= 0) - break - if(bullets_fired < burst_amount) //we need to sleep only if there are more bullets to shoot in the burst - sleep(3) - to_chat(user, SPAN_WARNING("[src] Ammo: [SPAN_HELPFUL(ammo ? ammo.current_rounds : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds : 0)] | Mags: [SPAN_HELPFUL(LAZYLEN(backup_clips))]/[SPAN_HELPFUL(max_clips)]")) diff --git a/code/modules/vehicles/hardpoints/secondary/grenade_launcher.dm b/code/modules/vehicles/hardpoints/secondary/grenade_launcher.dm index 8151a1ee50c1..efd151e93cb3 100644 --- a/code/modules/vehicles/hardpoints/secondary/grenade_launcher.dm +++ b/code/modules/vehicles/hardpoints/secondary/grenade_launcher.dm @@ -8,8 +8,6 @@ activation_sounds = list('sound/weapons/gun_m92_attachable.ogg') health = 500 - cooldown = 30 - accuracy = 0.4 firing_arc = 90 var/max_range = 7 @@ -27,40 +25,19 @@ "8" = list(-6, 17) ) + scatter = 10 + fire_delay = 3.0 SECONDS + /obj/item/hardpoint/secondary/grenade_launcher/set_bullet_traits() ..() LAZYADD(traits_to_give, list( BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) )) -/obj/item/hardpoint/secondary/grenade_launcher/can_activate(mob/user, atom/A) - if(!..()) - return FALSE - - var/turf/origin_turf = get_turf(src) - origin_turf = locate(origin_turf.x + origins[1], origin_turf.y + origins[2], origin_turf.z) - if(get_dist(origin_turf, A) < 1) - to_chat(usr, SPAN_WARNING("The target is too close.")) - return FALSE - - return TRUE - -/obj/item/hardpoint/secondary/grenade_launcher/fire_projectile(mob/user, atom/A) - set waitfor = 0 - - var/turf/origin_turf = get_turf(src) - origin_turf = locate(origin_turf.x + origins[1], origin_turf.y + origins[2], origin_turf.z) - - //getting distance between supposed target and tank center. - var/range = get_dist(origin_turf, A) + 1 //otherwise nade falls one tile shorter - if(range > max_range) - range = max_range - - var/obj/projectile/P = generate_bullet(user, origin_turf) - SEND_SIGNAL(P, COMSIG_BULLET_USER_EFFECTS, owner.seats[VEHICLE_GUNNER]) - P.fire_at(A, owner.seats[VEHICLE_GUNNER], src, P.ammo.max_range, P.ammo.shell_speed) - - if(use_muzzle_flash) - muzzle_flash(Get_Angle(owner, A)) +/obj/item/hardpoint/secondary/grenade_launcher/try_fire(mob/user, atom/A) + var/turf/origin_turf = get_origin_turf() + if(origin_turf == get_turf(A)) + to_chat(user, SPAN_WARNING("The target is too close.")) + return NONE - ammo.current_rounds-- + return ..() diff --git a/code/modules/vehicles/hardpoints/secondary/tow.dm b/code/modules/vehicles/hardpoints/secondary/tow.dm index 4bdbc6f417fb..7c58f7970c7b 100644 --- a/code/modules/vehicles/hardpoints/secondary/tow.dm +++ b/code/modules/vehicles/hardpoints/secondary/tow.dm @@ -7,8 +7,6 @@ disp_icon_state = "towlauncher" health = 500 - cooldown = 150 - accuracy = 0.8 firing_arc = 60 origins = list(0, -2) @@ -29,3 +27,7 @@ "4" = list(5, -8), "8" = list(-5, 10) ) + + scatter = 4 + fire_delay = 15.0 SECONDS + diff --git a/code/modules/vehicles/hardpoints/special/firing_port_weapon.dm b/code/modules/vehicles/hardpoints/special/firing_port_weapon.dm index b6f3daed9f4e..780c195f00be 100644 --- a/code/modules/vehicles/hardpoints/special/firing_port_weapon.dm +++ b/code/modules/vehicles/hardpoints/special/firing_port_weapon.dm @@ -10,10 +10,7 @@ activation_sounds = list('sound/weapons/gun_smartgun1.ogg', 'sound/weapons/gun_smartgun2.ogg', 'sound/weapons/gun_smartgun3.ogg', 'sound/weapons/gun_smartgun4.ogg') health = 100 - cooldown = 10 - accuracy = 0.9 firing_arc = 120 - var/burst_amount = 3 //FPWs reload automatically var/reloading = FALSE var/reload_time = 10 SECONDS @@ -30,6 +27,13 @@ underlayer_north_muzzleflash = TRUE + scatter = 3 + gun_firemode = GUN_FIREMODE_AUTOMATIC + gun_firemode_list = list( + GUN_FIREMODE_AUTOMATIC, + ) + fire_delay = 0.3 SECONDS + /obj/item/hardpoint/special/firing_port_weapon/set_bullet_traits() ..() LAZYADD(traits_to_give, list( @@ -49,46 +53,6 @@ return data - -/obj/item/hardpoint/special/firing_port_weapon/can_activate(mob/user, atom/A) - if(!owner) - return FALSE - - var/seat = owner.get_mob_seat(user) - if(!seat) - return FALSE - - if(seat != allowed_seat) - to_chat(user, SPAN_WARNING("Only [allowed_seat] can use [name].")) - return FALSE - - //FPW stop working at 50% hull - if(owner.health < initial(owner.health) * 0.5) - to_chat(user, SPAN_WARNING("\The [owner]'s hull is too damaged!")) - return FALSE - - if(world.time < next_use) - if(cooldown >= 20) //filter out guns with high firerate to prevent message spam. - to_chat(user, SPAN_WARNING("You need to wait [SPAN_HELPFUL((next_use - world.time) / 10)] seconds before [name] can be used again.")) - return FALSE - - if(reloading) - to_chat(user, SPAN_NOTICE("\The [name] is reloading. Wait [SPAN_HELPFUL("[((reload_time_started + reload_time - world.time) / 10)]")] seconds.")) - return FALSE - - if(ammo && ammo.current_rounds <= 0) - if(reloading) - to_chat(user, SPAN_WARNING("\The [name] is out of ammo! You have to wait [(reload_time_started + reload_time - world.time) / 10] seconds before it reloads!")) - else - start_auto_reload(user) - return FALSE - - if(!in_firing_arc(A)) - to_chat(user, SPAN_WARNING("The target is not within your firing arc!")) - return FALSE - - return TRUE - /obj/item/hardpoint/special/firing_port_weapon/reload(mob/user) if(!ammo) ammo = new /obj/item/ammo_magazine/hardpoint/firing_port_weapon @@ -116,27 +80,32 @@ to_chat(user, SPAN_NOTICE("\The [name] reloads automatically.")) return FALSE +/obj/item/hardpoint/special/firing_port_weapon/try_fire(atom/target, mob/living/user, params) + if(!owner) + return NONE + + //FPW stop working at 50% hull + if(owner.health < initial(owner.health) * 0.5) + to_chat(user, SPAN_WARNING("\The [owner]'s hull is too damaged!")) + return NONE -/obj/item/hardpoint/special/firing_port_weapon/fire(mob/user, atom/A) if(user.get_active_hand()) to_chat(user, SPAN_WARNING("You need a free hand to use \the [name].")) - return + return NONE - if(ammo.current_rounds <= 0) - start_auto_reload(user) - return + if(reloading) + to_chat(user, SPAN_NOTICE("\The [name] is reloading. Wait [SPAN_HELPFUL("[((reload_time_started + reload_time - world.time) / 10)]")] seconds.")) + return NONE + + if(ammo && ammo.current_rounds <= 0) + if(reloading) + to_chat(user, SPAN_WARNING("\The [name] is out of ammo! You have to wait [(reload_time_started + reload_time - world.time) / 10] seconds before it reloads!")) + else + start_auto_reload(user) + return NONE + + if(!in_firing_arc(target)) + to_chat(user, SPAN_WARNING("The target is not within your firing arc!")) + return NONE - next_use = world.time + cooldown * owner.misc_multipliers["cooldown"] - - for(var/bullets_fired = 1, bullets_fired <= burst_amount, bullets_fired++) - var/atom/T = A - if(!prob((accuracy * 100) / owner.misc_multipliers["accuracy"])) - T = get_step(get_turf(A), pick(GLOB.cardinals)) - if(LAZYLEN(activation_sounds)) - playsound(get_turf(src), pick(activation_sounds), 60, 1) - fire_projectile(user, T) - if(ammo.current_rounds <= 0) - break - if(bullets_fired < burst_amount) //we need to sleep only if there are more bullets to shoot in the burst - sleep(3) - to_chat(user, SPAN_WARNING("[src] Ammo: [SPAN_HELPFUL(ammo ? ammo.current_rounds : 0)]/[SPAN_HELPFUL(ammo ? ammo.max_rounds : 0)]")) + return handle_fire(target, user, params) diff --git a/code/modules/vehicles/hardpoints/support/artillery.dm b/code/modules/vehicles/hardpoints/support/artillery.dm index aacb83fcf383..dfcdcaf73f74 100644 --- a/code/modules/vehicles/hardpoints/support/artillery.dm +++ b/code/modules/vehicles/hardpoints/support/artillery.dm @@ -14,7 +14,7 @@ var/view_buff = 10 //This way you can VV for more or less fun var/view_tile_offset = 7 -/obj/item/hardpoint/support/artillery_module/activate(mob/user, atom/A) +/obj/item/hardpoint/support/artillery_module/handle_fire(atom/target, mob/living/user, params) if(!user.client) return @@ -62,8 +62,9 @@ user.client.pixel_y = 0 is_active = FALSE -/obj/item/hardpoint/support/artillery_module/can_activate() +/obj/item/hardpoint/support/artillery_module/try_fire(target, user, params) if(health <= 0) to_chat(usr, SPAN_WARNING("\The [src] is broken!")) - return FALSE - return TRUE + return NONE + + return handle_fire(target, user, params) diff --git a/code/modules/vehicles/hardpoints/support/flare.dm b/code/modules/vehicles/hardpoints/support/flare.dm index 00dcd3ac1886..432c9636dadd 100644 --- a/code/modules/vehicles/hardpoints/support/flare.dm +++ b/code/modules/vehicles/hardpoints/support/flare.dm @@ -13,8 +13,6 @@ activatable = TRUE health = 500 - cooldown = 30 - accuracy = 0.7 firing_arc = 120 origins = list(0, -2) @@ -33,6 +31,9 @@ "8" = list(14, -6) ) + scatter = 6 + fire_delay = 3.0 SECONDS + /obj/item/hardpoint/support/flare_launcher/set_bullet_traits() ..() LAZYADD(traits_to_give, list( diff --git a/code/modules/vehicles/interior/interactable/seats.dm b/code/modules/vehicles/interior/interactable/seats.dm index ea961bc72593..253b4a066b4f 100644 --- a/code/modules/vehicles/interior/interactable/seats.dm +++ b/code/modules/vehicles/interior/interactable/seats.dm @@ -40,8 +40,8 @@ return if(QDELETED(buckled_mob)) - vehicle.set_seated_mob(seat, null) M.unset_interaction() + vehicle.set_seated_mob(seat, null) if(M.client) M.client.change_view(GLOB.world_view_size, vehicle) M.client.pixel_x = 0 @@ -174,8 +174,8 @@ return if(QDELETED(buckled_mob)) - vehicle.set_seated_mob(seat, null) M.unset_interaction() + vehicle.set_seated_mob(seat, null) if(M.client) M.client.change_view(GLOB.world_view_size, vehicle) M.client.pixel_x = 0 @@ -252,8 +252,8 @@ return if(QDELETED(buckled_mob)) - vehicle.set_seated_mob(seat, null) M.unset_interaction() + vehicle.set_seated_mob(seat, null) if(M.client) M.client.change_view(GLOB.world_view_size, vehicle) M.client.pixel_x = 0 diff --git a/code/modules/vehicles/multitile/multitile.dm b/code/modules/vehicles/multitile/multitile.dm index c8138c5b8f86..f3b7be510b08 100644 --- a/code/modules/vehicles/multitile/multitile.dm +++ b/code/modules/vehicles/multitile/multitile.dm @@ -340,15 +340,24 @@ M.reset_view(src) give_action(M, /datum/action/human_action/vehicle_unbuckle) +/// Get crewmember of seat. /obj/vehicle/multitile/proc/get_seat_mob(seat) return seats[seat] +/// Get seat of crewmember. /obj/vehicle/multitile/proc/get_mob_seat(mob/M) for(var/seat in seats) if(seats[seat] == M) return seat return null +/// Get active hardpoint of crewmember. +/obj/vehicle/multitile/proc/get_mob_hp(mob/crew) + var/seat = get_mob_seat(crew) + if(seat) + return active_hp[seat] + return null + /obj/vehicle/multitile/proc/get_passengers() if(interior) return interior.get_passengers() diff --git a/code/modules/vehicles/multitile/multitile_hardpoints.dm b/code/modules/vehicles/multitile/multitile_hardpoints.dm index 2c5a343b802a..a6014c6cf2cd 100644 --- a/code/modules/vehicles/multitile/multitile_hardpoints.dm +++ b/code/modules/vehicles/multitile/multitile_hardpoints.dm @@ -230,47 +230,3 @@ qdel(old) update_icon() - -//proc that fires non selected weaponry -/obj/vehicle/multitile/proc/shoot_other_weapon(mob/living/carbon/human/M, seat, atom/A) - - if(!istype(M)) - return - - var/list/usable_hps = get_hardpoints_with_ammo(seat) - for(var/obj/item/hardpoint/HP in usable_hps) - if(HP == active_hp[seat] || HP.slot != HDPT_PRIMARY && HP.slot != HDPT_SECONDARY) - usable_hps.Remove(HP) - - if(!LAZYLEN(usable_hps)) - to_chat(M, SPAN_WARNING("No other working weapons detected.")) - return - - for(var/obj/item/hardpoint/HP in usable_hps) - if(!HP.can_activate(M, A)) - return - HP.activate(M, A) - break - return - -//proc that activates support module if it can be activated and you meet requirements -/obj/vehicle/multitile/proc/activate_support_module(mob/living/carbon/human/M, seat, atom/A) - - if(!istype(M)) - return - - var/list/usable_hps = get_activatable_hardpoints(seat) - for(var/obj/item/hardpoint/HP in usable_hps) - if(HP.slot != HDPT_SUPPORT) - usable_hps.Remove(HP) - - if(!LAZYLEN(usable_hps)) - to_chat(M, SPAN_WARNING("No activatable support modules detected.")) - return - - for(var/obj/item/hardpoint/HP in usable_hps) - if(!HP.can_activate(M, A)) - return - HP.activate(M, A) - break - return diff --git a/code/modules/vehicles/multitile/multitile_interaction.dm b/code/modules/vehicles/multitile/multitile_interaction.dm index 42b141327bd8..aa2025d151b5 100644 --- a/code/modules/vehicles/multitile/multitile_interaction.dm +++ b/code/modules/vehicles/multitile/multitile_interaction.dm @@ -330,80 +330,61 @@ healthcheck() -/obj/vehicle/multitile/handle_click(mob/living/user, atom/A, list/mods) - - var/seat - for(var/vehicle_seat in seats) - if(seats[vehicle_seat] == user) - seat = vehicle_seat - break - - if(istype(A, /atom/movable/screen) || !seat) +/obj/vehicle/multitile/on_set_interaction(mob/user) + RegisterSignal(user, COMSIG_MOB_MOUSEDOWN, PROC_REF(crew_mousedown)) + RegisterSignal(user, COMSIG_MOB_MOUSEDRAG, PROC_REF(crew_mousedrag)) + RegisterSignal(user, COMSIG_MOB_MOUSEUP, PROC_REF(crew_mouseup)) + +/obj/vehicle/multitile/on_unset_interaction(mob/user) + UnregisterSignal(user, list(COMSIG_MOB_MOUSEUP, COMSIG_MOB_MOUSEDOWN, COMSIG_MOB_MOUSEDRAG)) + + var/obj/item/hardpoint/hardpoint = get_mob_hp(user) + if(hardpoint) + SEND_SIGNAL(hardpoint, COMSIG_GUN_INTERRUPT_FIRE) //abort fire when crew leaves + +/// Relays crew mouse release to active hardpoint. +/obj/vehicle/multitile/proc/crew_mouseup(datum/source, atom/object, turf/location, control, params) + SIGNAL_HANDLER + var/obj/item/hardpoint/hardpoint = get_mob_hp(source) + if(!hardpoint) return - if(seat == VEHICLE_DRIVER) - if(mods["shift"] && !mods["alt"]) - A.examine(user) - return - - if(mods["ctrl"] && !mods["alt"]) - activate_horn() - return - - var/obj/item/hardpoint/HP = active_hp[seat] - if(!HP) - to_chat(user, SPAN_WARNING("Please select an active hardpoint first.")) - return - - if(!HP.can_activate(user, A)) - return - - HP.activate(user, A) - - if(seat == VEHICLE_GUNNER) - if(mods["shift"] && !mods["middle"]) - if(vehicle_flags & VEHICLE_TOGGLE_SHIFT_CLICK_GUNNER) - shoot_other_weapon(user, seat, A) - else - A.examine(user) - return - if(mods["middle"] && !mods["shift"]) - if(!(vehicle_flags & VEHICLE_TOGGLE_SHIFT_CLICK_GUNNER)) - shoot_other_weapon(user, seat, A) - return - if(mods["alt"]) - toggle_gyrostabilizer() - return - if(mods["ctrl"]) - activate_support_module(user, seat, A) - return + hardpoint.stop_fire(source, object, location, control, params) - var/obj/item/hardpoint/HP = active_hp[seat] - if(!HP) - to_chat(user, SPAN_WARNING("Please select an active hardpoint first.")) - return +/// Relays crew mouse movement to active hardpoint. +/obj/vehicle/multitile/proc/crew_mousedrag(datum/source, atom/src_object, atom/over_object, turf/src_location, turf/over_location, src_control, over_control, params) + SIGNAL_HANDLER + var/obj/item/hardpoint/hardpoint = get_mob_hp(source) + if(!hardpoint) + return - if(!HP.can_activate(user, A)) - return + hardpoint.change_target(source, src_object, over_object, src_location, over_location, src_control, over_control, params) - HP.activate(user, A) +/// Checks for special control keybinds, else relays crew mouse press to active hardpoint. +/obj/vehicle/multitile/proc/crew_mousedown(datum/source, atom/object, turf/location, control, params) + SIGNAL_HANDLER - if(seat == VEHICLE_SUPPORT_GUNNER_ONE || seat == VEHICLE_SUPPORT_GUNNER_TWO) - if(mods["shift"]) - A.examine(user) - return - if(mods["middle"] || mods["alt"] || mods["ctrl"]) - return + var/list/modifiers = params2list(params) + if(modifiers[SHIFT_CLICK] || modifiers[MIDDLE_CLICK] || modifiers[RIGHT_CLICK]) //don't step on examine, point, etc + return - var/obj/item/hardpoint/HP = active_hp[seat] - if(!HP) - to_chat(user, SPAN_WARNING("Please select an active hardpoint first.")) - return + var/seat = get_mob_seat(source) + switch(seat) + if(VEHICLE_DRIVER) + if(modifiers[LEFT_CLICK] && modifiers[CTRL_CLICK]) + activate_horn() + return + if(VEHICLE_GUNNER) + if(modifiers[LEFT_CLICK] && modifiers[ALT_CLICK]) + toggle_gyrostabilizer() + return - if(!HP.can_activate(user, A)) - return + var/obj/item/hardpoint/hardpoint = get_mob_hp(source) + if(!hardpoint) + to_chat(source, SPAN_WARNING("Please select an active hardpoint first.")) + return - HP.activate(user, A) + hardpoint.start_fire(source, object, location, control, params) /obj/vehicle/multitile/proc/handle_player_entrance(mob/M) if(!M || M.client == null) return diff --git a/code/modules/vehicles/multitile/multitile_verbs.dm b/code/modules/vehicles/multitile/multitile_verbs.dm index c7dd29bbf0a9..3801cd2e176c 100644 --- a/code/modules/vehicles/multitile/multitile_verbs.dm +++ b/code/modules/vehicles/multitile/multitile_verbs.dm @@ -30,6 +30,10 @@ if(!HP) return + var/obj/item/hardpoint/old_HP = V.active_hp[seat] + if(old_HP) + SEND_SIGNAL(old_HP, COMSIG_GUN_INTERRUPT_FIRE) //stop fire when switching away from HP + V.active_hp[seat] = HP var/msg = "You select \the [HP]." if(HP.ammo) @@ -66,6 +70,10 @@ if(!HP) return + var/obj/item/hardpoint/old_HP = V.active_hp[seat] + if(old_HP) + SEND_SIGNAL(old_HP, COMSIG_GUN_INTERRUPT_FIRE) //stop fire when switching away from HP + V.active_hp[seat] = HP var/msg = "You select \the [HP]." if(HP.ammo) @@ -225,10 +233,7 @@ 3. \"G: Toggle Turret Gyrostabilizer\" - toggles Turret Gyrostabilizer allowing it to keep current direction ignoring hull turning. (Exists only on vehicles with rotating turret, e.g. M34A2 Longstreet Light Tank)
      \ Support Gunner verbs:
      1. \"Reload Firing Port Weapon\" - initiates automated reloading process for M56 FPW. Requires a confirmation.
      \ Driver shortcuts:
      1. \"CTRL + Click\" - activates vehicle horn.
      \ - Gunner shortcuts:
      1. \"ALT + Click\" - toggles Turret Gyrostabilizer. (Exists only on vehicles with rotating turret, e.g. M34A2 Longstreet Light Tank)
      \ - 2. \"CTRL + Click\" - activates not destroyed activatable support module.
      \ - 3. \"Middle Mouse Button Click (MMB)\" - default shortcut to shoot currently not selected weapon if possible. Won't work if SHIFT + Click firing is toggled ON.
      \ - 4. \"SHIFT + Click\" - examines target as usual, unless \"G: Toggle Middle/Shift Clicking\" verb was used to toggle SHIFT + Click firing ON. In this case, it will fire currently not selected weapon if possible.
      " + Gunner shortcuts:
      1. \"ALT + Click\" - toggles Turret Gyrostabilizer. (Exists only on vehicles with rotating turret, e.g. M34A2 Longstreet Light Tank)
      " show_browser(user, dat, "Vehicle Controls Guide", "vehicle_help", "size=900x500") onclose(user, "vehicle_help") From 38ce90b34e40f34cdf98c2845975915d8926a4a1 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 6 Dec 2023 11:02:27 +0000 Subject: [PATCH 38/38] Automatic changelog for PR #4959 [ci skip] --- html/changelogs/AutoChangeLog-pr-4959.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4959.yml diff --git a/html/changelogs/AutoChangeLog-pr-4959.yml b/html/changelogs/AutoChangeLog-pr-4959.yml new file mode 100644 index 000000000000..353ab3f02880 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4959.yml @@ -0,0 +1,5 @@ +author: "Doubleumc" +delete-after: True +changes: + - refactor: "vehicle weapons can fire full-auto" + - rscdel: "no more controls for firing vehicle non-selected weapons" \ No newline at end of file