From bc7a9dec6f48941b9f41a018d37f56850e23e4c0 Mon Sep 17 00:00:00 2001 From: jaynus Date: Tue, 7 Apr 2015 13:30:33 -0700 Subject: [PATCH 001/252] ACE2 tracers port. --- addons/tracers/$PBOPREFIX$ | 1 + addons/tracers/README.md | 11 +++++ addons/tracers/ace_40mm_tracer_red.p3d | Bin 0 -> 17858 bytes addons/tracers/ace_TracerGreen2.p3d | Bin 0 -> 5688 bytes addons/tracers/ace_TracerRed2.p3d | Bin 0 -> 5633 bytes addons/tracers/ace_TracerYellow2.p3d | Bin 0 -> 5724 bytes addons/tracers/ace_shell_tracer_green.p3d | Bin 0 -> 18396 bytes addons/tracers/ace_shell_tracer_red.p3d | Bin 0 -> 18164 bytes addons/tracers/ace_shell_tracer_yellow.p3d | Bin 0 -> 18512 bytes addons/tracers/config.cpp | 13 ++++++ .../data/SLX_GreenTracer_Material.rvmat | 9 ++++ .../tracers/data/SLX_RedTracer_Material.rvmat | 9 ++++ .../data/SLX_YellowTracer_Material.rvmat | 9 ++++ addons/tracers/data/TracerGreen.paa | Bin 0 -> 22016 bytes addons/tracers/data/TracerRed.paa | Bin 0 -> 22016 bytes addons/tracers/data/TracerYellow.paa | Bin 0 -> 22016 bytes addons/tracers/data/clear_empty.paa | Bin 0 -> 480 bytes addons/tracers/data/tracer_green.rvmat | 18 +++++++ addons/tracers/data/tracer_green1_ca.paa | Bin 0 -> 5625 bytes addons/tracers/data/tracer_red.rvmat | 18 +++++++ addons/tracers/data/tracer_red1_ca.paa | Bin 0 -> 5625 bytes addons/tracers/data/tracer_yellow.rvmat | 18 +++++++ addons/tracers/data/tracer_yellow1_ca.paa | Bin 0 -> 5625 bytes addons/tracers/model.cfg | 44 ++++++++++++++++++ addons/tracers/script_component.hpp | 12 +++++ addons/tracers/tracer_green_2.p3d | Bin 0 -> 18396 bytes addons/tracers/tracer_red_2.p3d | Bin 0 -> 18164 bytes addons/tracers/tracer_yellow_2.p3d | Bin 0 -> 18512 bytes 28 files changed, 162 insertions(+) create mode 100644 addons/tracers/$PBOPREFIX$ create mode 100644 addons/tracers/README.md create mode 100644 addons/tracers/ace_40mm_tracer_red.p3d create mode 100644 addons/tracers/ace_TracerGreen2.p3d create mode 100644 addons/tracers/ace_TracerRed2.p3d create mode 100644 addons/tracers/ace_TracerYellow2.p3d create mode 100644 addons/tracers/ace_shell_tracer_green.p3d create mode 100644 addons/tracers/ace_shell_tracer_red.p3d create mode 100644 addons/tracers/ace_shell_tracer_yellow.p3d create mode 100644 addons/tracers/config.cpp create mode 100644 addons/tracers/data/SLX_GreenTracer_Material.rvmat create mode 100644 addons/tracers/data/SLX_RedTracer_Material.rvmat create mode 100644 addons/tracers/data/SLX_YellowTracer_Material.rvmat create mode 100644 addons/tracers/data/TracerGreen.paa create mode 100644 addons/tracers/data/TracerRed.paa create mode 100644 addons/tracers/data/TracerYellow.paa create mode 100644 addons/tracers/data/clear_empty.paa create mode 100644 addons/tracers/data/tracer_green.rvmat create mode 100644 addons/tracers/data/tracer_green1_ca.paa create mode 100644 addons/tracers/data/tracer_red.rvmat create mode 100644 addons/tracers/data/tracer_red1_ca.paa create mode 100644 addons/tracers/data/tracer_yellow.rvmat create mode 100644 addons/tracers/data/tracer_yellow1_ca.paa create mode 100644 addons/tracers/model.cfg create mode 100644 addons/tracers/script_component.hpp create mode 100644 addons/tracers/tracer_green_2.p3d create mode 100644 addons/tracers/tracer_red_2.p3d create mode 100644 addons/tracers/tracer_yellow_2.p3d diff --git a/addons/tracers/$PBOPREFIX$ b/addons/tracers/$PBOPREFIX$ new file mode 100644 index 0000000000..0b2ee2511f --- /dev/null +++ b/addons/tracers/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\tracers \ No newline at end of file diff --git a/addons/tracers/README.md b/addons/tracers/README.md new file mode 100644 index 0000000000..3fa628ce27 --- /dev/null +++ b/addons/tracers/README.md @@ -0,0 +1,11 @@ +ace_tracers +=========== + +Ball tracers for ArmA3 ported from ACE2. + + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [jaynus](https://github.com/walterpearce) diff --git a/addons/tracers/ace_40mm_tracer_red.p3d b/addons/tracers/ace_40mm_tracer_red.p3d new file mode 100644 index 0000000000000000000000000000000000000000..d9ed221913316a11bee343b32b051f0f1e9db379 GIT binary patch literal 17858 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 literal 0 HcmV?d00001 diff --git a/addons/tracers/ace_TracerRed2.p3d b/addons/tracers/ace_TracerRed2.p3d new file mode 100644 index 0000000000000000000000000000000000000000..bf22f9b761b3c69d230096e50cfa16041ac32dd4 GIT binary patch literal 5633 zcmdT|YinFp6g^X8e6}WOs!i3}dVTZ}$4pXRon)@Dlcb0th1hB#5-ypWTAW9`Ga4&W z#@5Gg5d9dTMU4>9FG{9<=~oejf&~ecR#2fJNYL1cYu!65j7ei=1g|)-viI3%pL5pP zXP-SMGx*d{G7>T78e`0XuH@hykOu7*i2VR1KX3lDJ$B>^V}G?X-O2WgJzHZ7=TF9e z%P-Ed-S*Zxo9#oJGJZe(FOOZBl|S3;U&t>eD*h$5&zr38pK1QAgY(DxU-R1whrI;* z;}_=q`J2AH=(o?Dn)JuhpYzNAkHg+9{d+FV`Tg+s+q0)8{qg@cf9}bcq8-Ru^uTvZ zA}tSAQ-W>qfCI`PkqC8Q8%y3ZCR+fBoGr z{yDtz7^1+a~rn-N{WzZGA}m+qRH#hMpSZ- zdAJ1-P3GnE1INnZxs#FyblmfZsUGH+X#s!4|NBig2d?V1XPfiySo4tB+}jugj|qF zvmFpk(s-bX25I7Tw?vcM;LAc_bka-$qDdNkRWwMm9}rD$ zV*t=LLdeahdj|$0*6{O=H_?|m;^r;0jSnV#D#Cxav(0xBKYWO=j}I0~K13*Kr;Tk& z`cs!=KXpoeL9nb*vfNR!3{tW@vX6F3e%VmcP8-{l^rtS#e(ID=O9qpYL8fFdDS0UD zqn(l|PDwj$Y*W&ox+MFlQ%0-oWVWOKv&dy_-YpjH1TR{xN{jEGnV z4-LBo%On|je3WrYcx9L}OZQv%R`*%uM%7eRRMk^eQ}b&+&9C(|zvk2YT2J$9KFzQ7 zYVDW5#%n&Uul2OP_^4lP^~-;){i$F3)&3Qa|2zMP)t5~TjrSi-yH=1<_@$`&S4dTd zO6LkusVi>U9V@sg%dZfT$i7@=BA0cug^pOovg{%`FBNiQ=y$ypGuCA2sL5+}r-(J^ t=F~K3GFwivDQ)2?A5OuB*;^di48e{{&G|Po4k( literal 0 HcmV?d00001 diff --git a/addons/tracers/ace_TracerYellow2.p3d b/addons/tracers/ace_TracerYellow2.p3d new file mode 100644 index 0000000000000000000000000000000000000000..7ab78d466e4f603c55c44157d1c002dda219c6b6 GIT binary patch literal 5724 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 literal 0 HcmV?d00001 diff --git a/addons/tracers/ace_shell_tracer_red.p3d b/addons/tracers/ace_shell_tracer_red.p3d new file mode 100644 index 0000000000000000000000000000000000000000..622427ca63a869af5d7ba531e6ad7916c8071b5d GIT binary patch literal 18164 zcmeHNdz95x6`l)}piyBdm6VU6FnP&bF$=vXa(HAzARvNKIL%x_g#m|=eD`C3;bAW; zv$DuXX=G7x!;;6nA{A7W_I_%mW&P7?6|MTqR^NBd{SJF(&1&v2oIhr*_HuK+z4y1z z-oJg$@7}>-PSf1RT&}JT|JBXQH_jP@mBwGNP~Suw(pXqgp-!DXG*5eGVTH3cF@68J z`tp+E)@IzDR(Anbr})Hq8}qUmU-P$fOUS7xK79U@(LNFR+~aurA2Ryj6y~eHhtJ$z zq7C)Wv#s-yJfBzb=T1L3g|^~@J%8gxWBqw!_2Yu zd|t)D_xC~Z!Jg0O;`x>FTs-f2cy8MJ@Z43~pFeCL=W}x&m1=yj=kr-xC+sYo(sZRi zZ$4X#u^Dfku(OP~|9oH^{AizueAY%yKX2|&n>9Fp?$6pq^hCQF_dT2VfbuUMy|27s z$-?;j&e*I!ee}M<#w82m^B0WG_(1cqx8t6AK5KJ-^j5h9Jt$_2Lem9b%_(1bn zi#4=AF>7dl)?y9C`Mu2VU&RNSKLU4~@1OP`37hYq_J{5G{wc0^L-B#;>)qG>diS-z z-gU+C9{P9R#QkT7;{DC<#9ik5qkP=m3g18N&%4a`PjT@5yQ26&^I4lUv_Ib~+S;G* zCEqv2@g90x@qy;^ogTk`8vgE?`S+-jeWm;QOn7i^+i>e{anyz<72hqtiqlr?w{s!&g+3ERsG~tu>&pvqgLj??}o9D_mg9BKluIX=jgDh zmDyVlHE^vFJMedb>!=BEzxw$n`u^90cjf<%UWjLJoz*Kg90yzizXCq`pVce29E)q< z_p2Y?vFa@S_fL(OXXW1)tp5|UcXIv#{WmaYM9k-~SRBredxOK-j@0aEZ?fegXVmvE^7? z1HWJW+_tizAahW3gL#{rkXFN5#E?-g5)#WnEz)z9;5_7t8vd}01} z^g{g1tv5#etiewonU~Tr(7yfJK^nBB)*Sg0SK2fL~zGUk1NoF><}1_Yr&YF8e#qyH+FacE{~~?+qWU-i5ulY;UL$`@07I zF7W%ryk`f%JDSVI_nJ z$??wb#VGWmSS)id0Uqh?&>t~5>W^GFv-TF*)jwTym_W?2o_O^}pY( z7JM~Us`@z-=rz&K95H=C(x2~HC`6T<4M0_Y^+4xDJ9EVJ1xerE>riN{%HjTv1AeWy z!}$`EqkhRH$4bicJr9M>jm0uI9{Ba%4*e06qyESx$4binCZG^iG7*5PekKD=igxCR z=?jwne9uQAs$>cPRsG?AxYRX7J9EVJ1xerEg(!4^%HjUK0eGsn!}$`EqkhRH$4bic z<-ZlVC>G1yG~hRSJM>2!{yj;U6}jYCN!j1UC`6T90zlQg@IyjfA=;TErY}h7Ic0xu zMj@(XIsjGuT?+J;XlIU?z98xQn~6e=Du??w3wVaNSvzyYMj+nk6>F4)$6lzjA%xf<29B+sD5tE~S$tA~1%K6PhA*$qZ0IK>~05m_^ znIonzNc#CLLZO8!hxuIze1*5e{D{d>zvPl*CFT6CLZQX6SmxdVyu{m~KVov!AGzdM zN!j006rxJr2|!gp%Yfb$?aUF=7bN}pUX4OjNizUd{j~tSJKC8erY}hP{+6RqtIFa2 zy$87H?Qp)tZt+o3;Va?~HW%|-)z506 zwrFRLn7$zC&vy+9Q6<*{P}SdBp!R5Ij+nk6>HAxULLDlH`}bbp8@wIPmzW&&OD;K9 zQl9V4D0E{imbqJiZ}N8NkC+_wM=m*5QucQ%3Q;Au0Z`S?`+#nbcIJrb3zGhPGZdmq z)&o%0-v*%0XlIU?z98xQ>q4Q8Du?^G8F-Vo!}$`EqkhRH$4bic-G)M2VzJEK0ld}Q zp+91B)E~LzSV`I6`%#E0`2YY_{d@@MgVD|$F?~VOpYMlJh$^`gfU5pJ3iOd^XO5V@ zAnE)2I0}7C<#7M*2ENPN;e3h7QNQGpV=oha(-V$A*$qS095r;0@@Yr%n{QUB>nszL7}g!9Om~8;N9L1^CKol{gO+L zm6Y@QCJIp{j{;ED&t9NC(asz(eL>RCuZ%+bR1Wj20Ppv9m>)4Y>X%${tfZXZV<<$G z8~~uIpMyY;M>})G^aV*jzwe;Xw^R=EI|Te~Z-@C2lcRpgCC5t2`5i_fs^q%>RQ2zvPl*CFT5{L?No=M*vjy^An&SM>})G z^aV*jzn`PfPgM@{`vvgNydCC8Opf{`mmDi8=l4q#qDp=RKvh4#0s3{cGe=Bcko5C= z8ijtVa+u%mfS>Yqm>)4Y>X%${tfZXZ?@@><`2zq|{X7fwOtdpcOka@n^Lq}3{-|=8 z-=Bg1+8=hsf{m6@x*V$p(PM}1x6Nj>A?dWWlJv3S;JG2^tY zDo3l0DOWMA@{3Dmz6-TT5TIIJZv6MV3@@us*Va6zyBcJ?Q<+rQy zD=x0{hsXJ-OOTt8&FVmU*nEI5sA%Jj;uwAQ=V4&#Z#VE`NdP7R{6zKo>uwAQ=V4& z#Z#VE`NdP7R{6zKo>uwAQ=V4&#Z#VE`NdP7R{6zKo>uwAQ=V4&#Z#VE`NdP7R{6zK go>uwAQ=V4&#S3}4`WbDlbC=J&W@WLyx>M%<3t<<$f&c&j literal 0 HcmV?d00001 diff --git a/addons/tracers/ace_shell_tracer_yellow.p3d b/addons/tracers/ace_shell_tracer_yellow.p3d new file mode 100644 index 0000000000000000000000000000000000000000..3d2de95cf9c6e6b46346d5b3a4df3660e85cad24 GIT binary patch literal 18512 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 C?)hT? literal 0 HcmV?d00001 diff --git a/addons/tracers/data/TracerRed.paa b/addons/tracers/data/TracerRed.paa new file mode 100644 index 0000000000000000000000000000000000000000..c31b94fb806f426a3f1d6c3551b309ceb0a545fe GIT binary patch literal 22016 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 E0B2I|(f|Me literal 0 HcmV?d00001 diff --git a/addons/tracers/data/clear_empty.paa b/addons/tracers/data/clear_empty.paa new file mode 100644 index 0000000000000000000000000000000000000000..e12f6f1568cab2693ca0ffde02ced21d6b92516a GIT binary patch literal 480 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 IPl4F}2a;s7hyVZp literal 0 HcmV?d00001 diff --git a/addons/tracers/data/tracer_red.rvmat b/addons/tracers/data/tracer_red.rvmat new file mode 100644 index 0000000000..08b2ab1abc --- /dev/null +++ b/addons/tracers/data/tracer_red.rvmat @@ -0,0 +1,18 @@ +//////////////////////////////////////////////////////////////////// +//Produced from mikero's Dos Tools using dll 3.17 +//http://dev-heaven.net/projects/list_files/mikero-pbodll +//////////////////////////////////////////////////////////////////// + +#define _ARMA_ + +//Class weapons : Data\bullettracer\Data\tracer_red.rvmat{ +ambient[] = {1.0,1.0,1.0,3.25}; +diffuse[] = {1.0,1.0,1.0,1.0}; +forcedDiffuse[] = {0.0,0.0,0.0,0.0}; +emmisive[] = {1.0,1.0,1.0,1.0}; +specular[] = {0.0,0.0,0.0,1.0}; +specularPower = 1.0; +renderFlags[] = {"NoZWrite","AddBlend"}; +PixelShaderID = "Normal"; +VertexShaderID = "Basic"; +//}; diff --git a/addons/tracers/data/tracer_red1_ca.paa b/addons/tracers/data/tracer_red1_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..171325cc55b6f2e25aea1c0b71d77f48e8ceadf2 GIT binary patch literal 5625 zcmeHLe^66L9^aP`1S%vD)1tr`C78B~H2wgIl{`d&j26?v(-eDG1W$6;LlDkV#?w&k z3C@Wq>g5=uQn4B%PSn;o=*@)wxKp$@6ZA^0FmwLwjCi6(g7sCh_uWli>{*?$*3R?~ zcX)Yx-tODo&*%Hy?|%15a8_1&UPjjZ^dN*#%Ir=x#m4kk2*ywd&Ptz~NiYK!!MT~4 z^H})58m<}{LK{XPv{ivnFI+#au!uzndU#r%D)0mq7>4u>D*ZNDu^SpU#fh8 zp;&@Y6w&6nlE~$4lsQ`bIht!+I%TspML7doSE7JX`7&zg2|br zz9u4`&axf}(U&Ug8= z_LY{2T!eskaReU=6>vut*gGKw^zgMmQi@M^_k^&3-PmjEvzF*DsN1CbD8{$1tw`}DgllI~CJd9V3vGT*#BqR3AxQlz&m zxU*48`XigrOEOJmZqm(&<77M!_PjZ^qWoga}S=)uSnVo#ixMdg zUaj)^L*65=2NT$vQz#U`f0;aGc`jYwUcT?;(Li1knM?G*c8vd+c~d5ZKVkgy>#xZC z^>qGt04yMq!Fsp4ZBPXM0$%|O@86FvZEg{3TUyhE`jxL5*Gz2@2k`7M1=2xiBGku8 z0PKj@68_%XUf>VpAA`T(HzOHMWW~D1zmfQB2Y-5Q+9Z|#>hIqk%^2;ewpOhP{QoeDWyqfhE8fmLoQ*`^$1G8-Z`J+Xez{ngjfoH6DfaNbAp*H=ir7 zZ0zyx4_>@WZYV$8tRnUSxiH>RoqTZLkd9!R)9E~GcAe<<+)^I{47KL@n_l1|w!IXH zm%mAho-z2}T-u(821((@eV!eyY5xA5QK)6IZs0Waci_lAD$j?t6CwS^#gNiu0e^*p z;}p#MWpa(>9fF}SNs(~{VM{HCvw-iLX0tOtf$}|?>6^cI6-#haFYy-)0lx0_C_}lk zSq1x<8UHW$O-C91A;yH=cAJ^gSsv6L5uM^{0zj7rz z4h^aOe2z?(x}NVoMEDbaPFtMVrF9IPR<8yB^MZb%$knQv=cf4&YcTxm`H!H3a1R3i zQ2F(cfPX}w%>@yi&D3AOJrpq_xnXH((A~vi$pB zjMz2npywLc*Qb{hbyz*i8z?_;=e%La1o^cOv#_9rdHhoEBGh?LABaCeXjcHk0f7@E zlSSY|u)u@Fo5zV)!uwC}kEVbUDG?%H7<@$uH&|7HZR3}M#iJZ0F>BXOC2qkbh)@y( z$H>G~Mo3FVfT@3oz{1*#3zLl{3!!}z}l#@`Kt{we-9 z2WePehEAwY3n6J)YZ`gq34~}`24T#Xmd+0>dqIzQl)7oby2ig3!~8@dMzTiPUsloH z)ay$#Jf8lA+s-w#H>-Tx;1T|s-j&_$z_4xBxNVSR{dt^m2JgA320h>yjdAevAM}2* zIq^&l=nr4dSn^AX60Qf@|9fFQ0SxjY`bK8C7uF?NlFcNIxl6*j*^Irj!XS+q+zx3? z7Coi}C0_YFR5ZMY_#2F82u9g%As1c^ss2l=LK5)6+f~L_%#jLOEU|8&8Z?UWe| z;MM_Iz>B%y)cm4sn6l3d5>AU`B|87^iO?II2xSLkBfCuq3L)V`-Vf2nv19_77JS2E zf~y>fXX5T2r?`x*4%;xlbVBlC+O3#j6vON4w|%m@q=(eQSBShIh^U}v=$7F1&t?~N O)Vjw+rz3I-B;|i+;dB}R literal 0 HcmV?d00001 diff --git a/addons/tracers/data/tracer_yellow.rvmat b/addons/tracers/data/tracer_yellow.rvmat new file mode 100644 index 0000000000..f1c7a71670 --- /dev/null +++ b/addons/tracers/data/tracer_yellow.rvmat @@ -0,0 +1,18 @@ +//////////////////////////////////////////////////////////////////// +//Produced from mikero's Dos Tools using dll 3.17 +//http://dev-heaven.net/projects/list_files/mikero-pbodll +//////////////////////////////////////////////////////////////////// + +#define _ARMA_ + +//Class weapons : Data\bullettracer\Data\tracer_yellow.rvmat{ +ambient[] = {1.0,1.0,1.0,3.25}; +diffuse[] = {1.0,1.0,1.0,1.0}; +forcedDiffuse[] = {0.0,0.0,0.0,0.0}; +emmisive[] = {1.0,1.0,1.0,1.0}; +specular[] = {0.0,0.0,0.0,1.0}; +specularPower = 1.0; +renderFlags[] = {"NoZWrite","AddBlend"}; +PixelShaderID = "Normal"; +VertexShaderID = "Basic"; +//}; diff --git a/addons/tracers/data/tracer_yellow1_ca.paa b/addons/tracers/data/tracer_yellow1_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..f895ffe6e3b55ada842adb4f7d76524d3bc7345c GIT binary patch literal 5625 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 CM#gsl literal 0 HcmV?d00001 diff --git a/addons/tracers/tracer_red_2.p3d b/addons/tracers/tracer_red_2.p3d new file mode 100644 index 0000000000000000000000000000000000000000..507fdae33682e70f9201dd14e58735aefc135f71 GIT binary patch literal 18164 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 literal 0 HcmV?d00001 diff --git a/addons/tracers/tracer_yellow_2.p3d b/addons/tracers/tracer_yellow_2.p3d new file mode 100644 index 0000000000000000000000000000000000000000..1a52ada09f597fc5e1bb28a5c264988ad69c07c9 GIT binary patch literal 18512 zcmeI2d2roT6~|u`*#s0+P{fT`pbE83pn^2{ffjI~fKYI&me2%QN>kDR0)jtOiVFgQ zD2pplwzjm*Q&F0iCyTPFfV3#e>H^H@FoQS_f5_oVAlyjAyi<@57etvgtWBbZJ-Dw1(X^$|l~W z_^KqH+O{aaPxcEbfJ??z=db#~qDlbeT-~BA>s)b%JuDYUNpPlArUE9iCNoh{NOA$s<0|^OrZCcU9y0mNn)v z)ObGG;dy0;=NCWBL;Udk6Fr}^=8S#bKHJ2uappdM;@pwM9(O*qsKI?=e`ZXLhFxRE zo;Pu7)3f8_$zOWW@C@x)+hMPTq2BU~hKCz=*k3mBF2}_ujve9?J%4*WH_y9L&&51t zbH8g^pJty&T}ohqCM7@y<*Y@`S3k2jy%e13X=>QTe{ z^Epfn$N8Sb=Wh}pSHA9gxXa#u8`->n-d}bX@1Ns-Hyj^tzTbWCf1PSm!~6SPcl?IN zyPw3v&ko1On!mhpx1GOIHt(PJ=iT7_b6ouJZa6;PeBNDZcz?Zz;b(#O=e^{8b6kAe z;r@*`pF8~S+PyJy4obJYVW%Eo#Jm4H+l%X=5Su8|2=B^hMXpF zCQeoSPM*00Jf?pBxyfGj$(MF^{!43ZM5>dKSMfei=CQ z-)uj-U0Us6j?BMFJj6LMfAKep8)xOS<=i%gxeGqqjp8k5EvP?w+&?NakuzY@$2H3fydO(S@RdvFTZ+jXWPlQbT^4J@vGvG zh+hUCQ$PP%cuV(X>i=x@(j*=czbbxR{4(&E`dQom_l`{tKPg-EVtvGTQ22>Urgq{_ zF&z1;^4EpCjm7C!?hyVI!@2FqN!3%7M=Zr_#J8W^1a}B`Q(K$@E4S1B6hCy&o}CA8 zcS3f@?EAV?yv5`xg?|*TieDFhME(LRcY}E8K5JIqroG9zM)>vyzIpm_Ln$^#{tn?0 zdIF0RuyUswYtO0X@Y&wPXKu6H`yYA!%#@Tv<6e*=fR zCOpKQ=H8`P`xJgKdvo_@oVRPZ@7&20-#q=94s#l~&fOCxx6YkRv2w$E00+DYUm`~d z|4#<>civYDy`r%542&;I{9b&Ke|&yq84Hxt^lu=5OzFG{Pr+*0K>cTs(Rezoux z!KQ;e1H*CGaN(rVFYRhPS{ z+&f)V_i|U^Nx_aM4u<2d;lfF!{1bnd%I#K^)bAUFCkH!r35Me?;lfF!{4RG_In=U; z0P3#ZBQ&M3^9+nHN~=zMs>-1j{$K)im->ZHrK7O(42&;ItGb-7a(lX{?&W)h_X>7A zaWEWr4Hr%-<)1izf3kN`GSBuE-Y3|xOK|)fl{h!Ja8fD1Oa2!GYT;L&;n$v;D?a|| z1_V3Lz#&lhD$RZq8^^be{ZtLL>@R@&gg+qk{=&{PFuo}9Ny?w)fhsrCMK!O3gbxTd z9po7pj=P2nCzbNM{GiIAmJbP_?&>2#A1>@X1LKR*s#zYQatFJpW_PIYtYF7kg5kJp zxNuS_f0l=-9BTQf0P3!e5IVfD^9+nHN~>mhl*-L^QO)vW!bb)>&JqmAUBiWwO8K+= zq{@A~D4A!U68=Q6W0zn!?h-DXRLbvij>@5yPYa;#YOc^{3Omoh_@cDx#E(`v)Y2n> zy32V&#}sy+f$>FYRhP%AT(67jUVc`%FWB+K!EoF)TsWzef8r;o+;K(8JUdbN_+ZB_ z!EoFqTsWze-{pLjLoFu>pzf+)XhC7;85m!bR-O1ll|wBj3!v_Dk%(zsP5%y!lwi~o;VneyM_xVmGV#g43+y_Q8LfY6h1xJu}d%I*_=7j~Y3@kMFXiRUVZTFwzb-Q|~rzF63K2F4eqRb4Jtxi7n@?&W#H=LS2T zI2ew*h6^W^@=yG0D)*J5WS)Ip_^ZK=U4r4bOSo`SDZk6}RSva$LjZMG7Ybca*m(xV z7o}Avev!(dmTwB6?(!0$iwir?!1$uHs>^Sy+_zj*_wqZ!mj*kYI2ew*h6^W^@=yFS zl|wC;3!v`mN}($XJI}!QqO@w3-&eWsx~OLP1L5xlJI)de$6dpPlS=us{GrOBmLCbA z?&@lxs|q{M!1$uHYL?fk+%+z$Szaf+B-nA5U^wm?E}T@#pXK!`hgxnBK;6|+p&JW3 z&%pSiv}%?&soXLb)ht&CFAsK{B^Zvoh6^W^@@KhHa4 z;kawKa8fCMmUpQfYPnkgbyxQa-BZ|k2F4eqRkQr9%Kh3!HOu>ie-rFDOE4UF4Hr%- z<>J!3n!KGXZeK6p_V5FPN#bwe_r2$!M=g?lZ`_08a+Ly+hXP#ruN#o{tHOH&{UhPj; zuoYe^_IpiZ#>9}6W1szA?N3+d*$3B>#x@j(XTQ0rFU1>*+vgSjXd#BAoYB5C7TN3m z9nJM#UY%>+y3BPo%}Ha%&PzG=xrSH!)75$QdEYe0oHSj%2>OA|ruUGrc^Il%GB1F literal 0 HcmV?d00001 From c2388aa80ce72fa4ebf2a1a7a8721fa93169b67d Mon Sep 17 00:00:00 2001 From: Glowbal Date: Mon, 4 May 2015 00:02:39 +0200 Subject: [PATCH 002/252] Initial work on medical extension --- extensions/CMakeLists.txt | 1 + extensions/medical/CMakeLists.txt | 13 ++++ extensions/medical/DamageType.cpp | 13 ++++ extensions/medical/DamageType.h | 26 ++++++++ extensions/medical/InjuryType.cpp | 14 +++++ extensions/medical/InjuryType.h | 27 +++++++++ extensions/medical/OpenWound.cpp | 19 ++++++ extensions/medical/OpenWound.h | 23 +++++++ extensions/medical/handleDamage.cpp | 94 +++++++++++++++++++++++++++++ extensions/medical/handleDamage.h | 66 ++++++++++++++++++++ extensions/medical/medical.cpp | 57 +++++++++++++++++ 11 files changed, 353 insertions(+) create mode 100644 extensions/medical/CMakeLists.txt create mode 100644 extensions/medical/DamageType.cpp create mode 100644 extensions/medical/DamageType.h create mode 100644 extensions/medical/InjuryType.cpp create mode 100644 extensions/medical/InjuryType.h create mode 100644 extensions/medical/OpenWound.cpp create mode 100644 extensions/medical/OpenWound.h create mode 100644 extensions/medical/handleDamage.cpp create mode 100644 extensions/medical/handleDamage.h create mode 100644 extensions/medical/medical.cpp diff --git a/extensions/CMakeLists.txt b/extensions/CMakeLists.txt index 9f4a8a29fa..bcef05d810 100644 --- a/extensions/CMakeLists.txt +++ b/extensions/CMakeLists.txt @@ -58,5 +58,6 @@ add_subdirectory(fcs) add_subdirectory(break_line) add_subdirectory(clipboard) add_subdirectory(advanced_ballistics) +add_subdirectory(medical) message("Build Type: ${CMAKE_BUILD_TYPE}") \ No newline at end of file diff --git a/extensions/medical/CMakeLists.txt b/extensions/medical/CMakeLists.txt new file mode 100644 index 0000000000..63d7105810 --- /dev/null +++ b/extensions/medical/CMakeLists.txt @@ -0,0 +1,13 @@ +set(ACE_EXTENSION_NAME "ace_medical") + +file(GLOB SOURCES *.h *.hpp *.c *.cpp) + +add_library( ${ACE_EXTENSION_NAME} SHARED ${SOURCES} ${GLOBAL_SOURCES}) +target_link_libraries(${ACE_EXTENSION_NAME} ace_common) +set_target_properties(${ACE_EXTENSION_NAME} PROPERTIES PREFIX "") +set_target_properties(${ACE_EXTENSION_NAME} PROPERTIES FOLDER Extensions) + +if(CMAKE_COMPILER_IS_GNUCXX) + set_target_properties(${ACE_EXTENSION_NAME} PROPERTIES LINK_SEARCH_START_STATIC 1) + set_target_properties(${ACE_EXTENSION_NAME} PROPERTIES LINK_SEARCH_END_STATIC 1) +endif() \ No newline at end of file diff --git a/extensions/medical/DamageType.cpp b/extensions/medical/DamageType.cpp new file mode 100644 index 0000000000..5fb9a4846d --- /dev/null +++ b/extensions/medical/DamageType.cpp @@ -0,0 +1,13 @@ +#include "DamageType.h" + +using namespace ace::medical; + +injuries::DamageType::DamageType(std::string aTypeName, unsigned int minimalLethalDamage, unsigned int minDamage, unsigned int maxDamage) + : typeName(aTypeName), minLethalDamage(minimalLethalDamage), minDamageThreshold(minDamage), maxDamageThreshold(maxDamage) +{ +} + + +injuries::DamageType::~DamageType() +{ +} diff --git a/extensions/medical/DamageType.h b/extensions/medical/DamageType.h new file mode 100644 index 0000000000..7106588f03 --- /dev/null +++ b/extensions/medical/DamageType.h @@ -0,0 +1,26 @@ +#include +#include +#include + + +namespace ace { + namespace medical { + namespace injuries { + class InjuryType; + + class DamageType + { + public: + DamageType(std::string aTypeName, unsigned int minimalLethalDamage, unsigned int minDamageThreshold, unsigned int maxDamageThreshold); + ~DamageType(); + + std::string typeName; + unsigned int minLethalDamage; + unsigned int minDamageThreshold; + unsigned int maxDamageThreshold; + + std::vector> possibleInjuries; + }; + } + } +} diff --git a/extensions/medical/InjuryType.cpp b/extensions/medical/InjuryType.cpp new file mode 100644 index 0000000000..07f902816f --- /dev/null +++ b/extensions/medical/InjuryType.cpp @@ -0,0 +1,14 @@ +#include "InjuryType.h" +#include "DamageType.h" + +using namespace ace::medical; + +injuries::InjuryType::InjuryType(signed int anId, const std::string& aClassname, std::vector& allowedSelections, signed int theBloodLoss, signed int thePain, signed int minimumDamage, signed int maximumDamage, std::vector& possibleCauses, std::string& aDisplayname) + : ID(anId), className(aClassname), selections(allowedSelections), bloodLoss(theBloodLoss), pain(thePain), minDamage(minimumDamage), maxDamage(maximumDamage), causes(possibleCauses), displayName(aDisplayname) +{ +} + + +injuries::InjuryType::~InjuryType() +{ +} diff --git a/extensions/medical/InjuryType.h b/extensions/medical/InjuryType.h new file mode 100644 index 0000000000..92766dd315 --- /dev/null +++ b/extensions/medical/InjuryType.h @@ -0,0 +1,27 @@ +#include +#include + +namespace ace { + namespace medical { + namespace injuries { + class DamageType; + + class InjuryType + { + public: + InjuryType(signed int anId, const std::string& aClassname, std::vector& allowedSelections, signed int theBloodLoss, signed int thePain, signed int minimumDamage, signed int maximumDamage, std::vector& possibleCauses, std::string& aDisplayname); + ~InjuryType(); + + signed int ID; + std::string className; + std::vector selections; + signed int bloodLoss; + signed int pain; + signed int minDamage; + signed int maxDamage; + std::vector causes; + std::string displayName; + }; + } + } +} \ No newline at end of file diff --git a/extensions/medical/OpenWound.cpp b/extensions/medical/OpenWound.cpp new file mode 100644 index 0000000000..77e38a9359 --- /dev/null +++ b/extensions/medical/OpenWound.cpp @@ -0,0 +1,19 @@ +#include "OpenWound.h" +#include + +using namespace ace::medical; + +injuries::OpenWound::OpenWound(unsigned int anID, unsigned int aBodyPart, unsigned int bloodloss) : classID(anID), bodyPart(aBodyPart), bloodlossRate(bloodloss) +{ +} + +injuries::OpenWound::~OpenWound() +{ +} + +std::string injuries::OpenWound::AsString() +{ + std::stringstream stream; + stream << classID << "," << bodyPart << "," << 1 << "," << bloodlossRate; + return stream.str(); +} diff --git a/extensions/medical/OpenWound.h b/extensions/medical/OpenWound.h new file mode 100644 index 0000000000..770004d917 --- /dev/null +++ b/extensions/medical/OpenWound.h @@ -0,0 +1,23 @@ +#pragma once + +#include + +namespace ace { + namespace medical { + namespace injuries { + class OpenWound + { + public: + OpenWound(unsigned int anID, unsigned int aBodyPart, unsigned int bloodloss); + ~OpenWound(); + + std::string AsString(); + + unsigned int classID; + unsigned int bodyPart; + unsigned int bloodlossRate; + }; + + } + } +} diff --git a/extensions/medical/handleDamage.cpp b/extensions/medical/handleDamage.cpp new file mode 100644 index 0000000000..6695c5c50c --- /dev/null +++ b/extensions/medical/handleDamage.cpp @@ -0,0 +1,94 @@ +#include "handleDamage.h" +#include "OpenWound.h" +#include "DamageType.h" +#include "InjuryType.h" +#include + +using namespace ace::medical; + +handleDamage::handleDamage() +{ +} + + +handleDamage::~handleDamage() +{ +} + +/* static */ std::vector handleDamage::HandleDamageWounds(const std::string& selectionName, signed int amountOfDamage, const std::string& typeOfDamage) +{ + std::vector wounds; + int selectionN = SelectionToNumber(selectionName); + if (selectionN >= 0) + { + std::vector> injuryTypeInfo = GetInjuryInfoFor(typeOfDamage); + } + + return wounds; +} + +/* static */ void handleDamage::AddDamageType(const std::vector& input) +{ + if (input.size() == 4) + { + std::string typeName = input[0]; + unsigned int minimalLethalDamage = std::stod(input[1]); + unsigned int minDamageThreshold = std::stod(input[2]); + unsigned int maxDamageThreshold = std::stod(input[3]); + + std::shared_ptr type(new injuries::DamageType(typeName, minimalLethalDamage, minDamageThreshold, maxDamageThreshold)); + damageTypes.push_back(type); + } +} + +/* static */ void handleDamage::AddInjuryType(const std::vector& input) +{ + if (input.size() == 9) + { + // TODO parse arrays from string input + + int ID = std::stod(input[0]); + std::string className = input[1]; + std::vector allowedSelections; // input[2]; + unsigned int bloodLoss = std::stod(input[3]); + unsigned int pain = std::stod(input[4]); + + unsigned int minDamage = std::stod(input[5]); + unsigned int maxDamage = std::stod(input[6]); + std::vector possibleCauses; // input[7]; + std::string displayName = input[8]; + + std::shared_ptr type(new injuries::InjuryType(ID, className, allowedSelections, bloodLoss, pain, minDamage, maxDamage, possibleCauses, displayName)); + injuryTypes.push_back(type); + } +} + +/* static */ void handleDamage::FinalizeDefinitions() +{ + // We are finding all possible injuries for a specific damage type here, so we don't have to figure that out at a later stage. + for each (std::shared_ptr damageType in damageTypes) + { + for each (std::shared_ptr injuryType in injuryTypes) + { + if (find(injuryType->causes.begin(), injuryType->causes.end(), damageType->typeName) != injuryType->causes.end()) + { + damageType->possibleInjuries.push_back(injuryType); + } + } + } +} + +/* static */ int SelectionToNumber(const std::string& selectionName) +{ + // TODO use dynamic selections instead + std::vector selections = {"head", "body", "hand_l", "hand_r", "leg_l", "leg_r"}; + std::vector::iterator it = find(selections.begin(), selections.end(), selectionName); + if (it != selections.end()) + { + return it - selections.begin(); + } + else + { + return -1; // TODO throw exception + } +} diff --git a/extensions/medical/handleDamage.h b/extensions/medical/handleDamage.h new file mode 100644 index 0000000000..16aba8d791 --- /dev/null +++ b/extensions/medical/handleDamage.h @@ -0,0 +1,66 @@ +#pragma once + +#include +#include +#include + +namespace ace { + namespace medical { + + namespace injuries { + class DamageType; + class InjuryType; + class OpenWound; + } + + class handleDamage + { + public: + ~handleDamage(); + + /** + * + */ + static std::vector HandleDamageWounds(const std::string& selectionName, signed int amountOfDamage, const std::string& typeOfDamage); + + /** + * + */ + static void AddDamageType(const std::vector& sqfDamageTypeDefinition); + + /** + * + */ + static void AddInjuryType(const std::vector& sqfInjuryDefinition); + + /** + * + */ + static std::string SetInjuryTypeData(const std::string& data); + + + /** + * + */ + static int SelectionToNumber(const std::string& selectionName); + + /** + * + */ + static std::vector> GetInjuryInfoFor(const std::string& damageType); + + /** + * + */ + static void FinalizeDefinitions(); + + private: + handleDamage(); + + static std::vector> damageTypes; + static std::vector> injuryTypes; + static std::vector selections; + static std::vector hitPoints; + }; + } +} diff --git a/extensions/medical/medical.cpp b/extensions/medical/medical.cpp new file mode 100644 index 0000000000..4531db475a --- /dev/null +++ b/extensions/medical/medical.cpp @@ -0,0 +1,57 @@ +/* +* ace_medical.cpp +* +* Author: +* Glowbal +*/ + +#include "ace_common.h" +#include +#include +#include +#include "handleDamage.h" + +extern "C" { + __declspec (dllexport) void __stdcall RVExtension(char *output, int outputSize, const char *function); +}; + +std::vector parseExtensionInput(const std::string& input) +{ + std::istringstream ss(input); + std::string token; + + std::vector output; + while (std::getline(ss, token, ',')) { + output.push_back(token); + } + return output; +} + + +void __stdcall RVExtension(char *output, int outputSize, const char *function) { + if (!strcmp(function, "version")) { + strncpy(output, ACE_FULL_VERSION_STR, outputSize); + } + else + { + std::vector arguments = parseExtensionInput(function); + if (arguments.size > 0) + { + std::string command = arguments.at(0); + // can we not just use C++11? + if (command == "addInjuryType") { + + } + else if (command == "addDamageType") { + + } + else if (command == "getInjury") { + // ace::medical::handleDamage(); + } + } + std::string returnValue = ""; + strncpy(output, returnValue.c_str(), outputSize); + output[outputSize - 1] = '\0'; + } +} + From 92bca1f857ed9f45700b078108eeace749665c8e Mon Sep 17 00:00:00 2001 From: Glowbal Date: Mon, 4 May 2015 00:32:44 +0200 Subject: [PATCH 003/252] tabs --- extensions/medical/DamageType.cpp | 2 +- extensions/medical/DamageType.h | 32 ++++----- extensions/medical/InjuryType.cpp | 2 +- extensions/medical/InjuryType.h | 40 +++++------ extensions/medical/OpenWound.cpp | 6 +- extensions/medical/OpenWound.h | 28 ++++---- extensions/medical/handleDamage.cpp | 106 ++++++++++++++-------------- extensions/medical/handleDamage.h | 94 ++++++++++++------------ extensions/medical/medical.cpp | 60 ++++++++-------- 9 files changed, 185 insertions(+), 185 deletions(-) diff --git a/extensions/medical/DamageType.cpp b/extensions/medical/DamageType.cpp index 5fb9a4846d..5434d79e98 100644 --- a/extensions/medical/DamageType.cpp +++ b/extensions/medical/DamageType.cpp @@ -3,7 +3,7 @@ using namespace ace::medical; injuries::DamageType::DamageType(std::string aTypeName, unsigned int minimalLethalDamage, unsigned int minDamage, unsigned int maxDamage) - : typeName(aTypeName), minLethalDamage(minimalLethalDamage), minDamageThreshold(minDamage), maxDamageThreshold(maxDamage) + : typeName(aTypeName), minLethalDamage(minimalLethalDamage), minDamageThreshold(minDamage), maxDamageThreshold(maxDamage) { } diff --git a/extensions/medical/DamageType.h b/extensions/medical/DamageType.h index 7106588f03..449060070b 100644 --- a/extensions/medical/DamageType.h +++ b/extensions/medical/DamageType.h @@ -4,23 +4,23 @@ namespace ace { - namespace medical { - namespace injuries { - class InjuryType; + namespace medical { + namespace injuries { + class InjuryType; - class DamageType - { - public: - DamageType(std::string aTypeName, unsigned int minimalLethalDamage, unsigned int minDamageThreshold, unsigned int maxDamageThreshold); - ~DamageType(); + class DamageType + { + public: + DamageType(std::string aTypeName, unsigned int minimalLethalDamage, unsigned int minDamageThreshold, unsigned int maxDamageThreshold); + ~DamageType(); - std::string typeName; - unsigned int minLethalDamage; - unsigned int minDamageThreshold; - unsigned int maxDamageThreshold; + std::string typeName; + unsigned int minLethalDamage; + unsigned int minDamageThreshold; + unsigned int maxDamageThreshold; - std::vector> possibleInjuries; - }; - } - } + std::vector> possibleInjuries; + }; + } + } } diff --git a/extensions/medical/InjuryType.cpp b/extensions/medical/InjuryType.cpp index 07f902816f..22c04c4126 100644 --- a/extensions/medical/InjuryType.cpp +++ b/extensions/medical/InjuryType.cpp @@ -4,7 +4,7 @@ using namespace ace::medical; injuries::InjuryType::InjuryType(signed int anId, const std::string& aClassname, std::vector& allowedSelections, signed int theBloodLoss, signed int thePain, signed int minimumDamage, signed int maximumDamage, std::vector& possibleCauses, std::string& aDisplayname) - : ID(anId), className(aClassname), selections(allowedSelections), bloodLoss(theBloodLoss), pain(thePain), minDamage(minimumDamage), maxDamage(maximumDamage), causes(possibleCauses), displayName(aDisplayname) + : ID(anId), className(aClassname), selections(allowedSelections), bloodLoss(theBloodLoss), pain(thePain), minDamage(minimumDamage), maxDamage(maximumDamage), causes(possibleCauses), displayName(aDisplayname) { } diff --git a/extensions/medical/InjuryType.h b/extensions/medical/InjuryType.h index 92766dd315..c03760b568 100644 --- a/extensions/medical/InjuryType.h +++ b/extensions/medical/InjuryType.h @@ -2,26 +2,26 @@ #include namespace ace { - namespace medical { - namespace injuries { - class DamageType; + namespace medical { + namespace injuries { + class DamageType; - class InjuryType - { - public: - InjuryType(signed int anId, const std::string& aClassname, std::vector& allowedSelections, signed int theBloodLoss, signed int thePain, signed int minimumDamage, signed int maximumDamage, std::vector& possibleCauses, std::string& aDisplayname); - ~InjuryType(); + class InjuryType + { + public: + InjuryType(signed int anId, const std::string& aClassname, std::vector& allowedSelections, signed int theBloodLoss, signed int thePain, signed int minimumDamage, signed int maximumDamage, std::vector& possibleCauses, std::string& aDisplayname); + ~InjuryType(); - signed int ID; - std::string className; - std::vector selections; - signed int bloodLoss; - signed int pain; - signed int minDamage; - signed int maxDamage; - std::vector causes; - std::string displayName; - }; - } - } + signed int ID; + std::string className; + std::vector selections; + signed int bloodLoss; + signed int pain; + signed int minDamage; + signed int maxDamage; + std::vector causes; + std::string displayName; + }; + } + } } \ No newline at end of file diff --git a/extensions/medical/OpenWound.cpp b/extensions/medical/OpenWound.cpp index 77e38a9359..b0d614e6be 100644 --- a/extensions/medical/OpenWound.cpp +++ b/extensions/medical/OpenWound.cpp @@ -13,7 +13,7 @@ injuries::OpenWound::~OpenWound() std::string injuries::OpenWound::AsString() { - std::stringstream stream; - stream << classID << "," << bodyPart << "," << 1 << "," << bloodlossRate; - return stream.str(); + std::stringstream stream; + stream << classID << "," << bodyPart << "," << 1 << "," << bloodlossRate; + return stream.str(); } diff --git a/extensions/medical/OpenWound.h b/extensions/medical/OpenWound.h index 770004d917..478e54a597 100644 --- a/extensions/medical/OpenWound.h +++ b/extensions/medical/OpenWound.h @@ -3,21 +3,21 @@ #include namespace ace { - namespace medical { - namespace injuries { - class OpenWound - { - public: - OpenWound(unsigned int anID, unsigned int aBodyPart, unsigned int bloodloss); - ~OpenWound(); + namespace medical { + namespace injuries { + class OpenWound + { + public: + OpenWound(unsigned int anID, unsigned int aBodyPart, unsigned int bloodloss); + ~OpenWound(); - std::string AsString(); + std::string AsString(); - unsigned int classID; - unsigned int bodyPart; - unsigned int bloodlossRate; - }; + unsigned int classID; + unsigned int bodyPart; + unsigned int bloodlossRate; + }; - } - } + } + } } diff --git a/extensions/medical/handleDamage.cpp b/extensions/medical/handleDamage.cpp index 6695c5c50c..60fbe83012 100644 --- a/extensions/medical/handleDamage.cpp +++ b/extensions/medical/handleDamage.cpp @@ -17,78 +17,78 @@ handleDamage::~handleDamage() /* static */ std::vector handleDamage::HandleDamageWounds(const std::string& selectionName, signed int amountOfDamage, const std::string& typeOfDamage) { - std::vector wounds; - int selectionN = SelectionToNumber(selectionName); - if (selectionN >= 0) - { - std::vector> injuryTypeInfo = GetInjuryInfoFor(typeOfDamage); - } + std::vector wounds; + int selectionN = SelectionToNumber(selectionName); + if (selectionN >= 0) + { + std::vector> injuryTypeInfo = GetInjuryInfoFor(typeOfDamage); + } - return wounds; + return wounds; } /* static */ void handleDamage::AddDamageType(const std::vector& input) { - if (input.size() == 4) - { - std::string typeName = input[0]; - unsigned int minimalLethalDamage = std::stod(input[1]); - unsigned int minDamageThreshold = std::stod(input[2]); - unsigned int maxDamageThreshold = std::stod(input[3]); + if (input.size() == 4) + { + std::string typeName = input[0]; + unsigned int minimalLethalDamage = std::stod(input[1]); + unsigned int minDamageThreshold = std::stod(input[2]); + unsigned int maxDamageThreshold = std::stod(input[3]); - std::shared_ptr type(new injuries::DamageType(typeName, minimalLethalDamage, minDamageThreshold, maxDamageThreshold)); - damageTypes.push_back(type); - } + std::shared_ptr type(new injuries::DamageType(typeName, minimalLethalDamage, minDamageThreshold, maxDamageThreshold)); + damageTypes.push_back(type); + } } /* static */ void handleDamage::AddInjuryType(const std::vector& input) { - if (input.size() == 9) - { - // TODO parse arrays from string input + if (input.size() == 9) + { + // TODO parse arrays from string input - int ID = std::stod(input[0]); - std::string className = input[1]; - std::vector allowedSelections; // input[2]; - unsigned int bloodLoss = std::stod(input[3]); - unsigned int pain = std::stod(input[4]); + int ID = std::stod(input[0]); + std::string className = input[1]; + std::vector allowedSelections; // input[2]; + unsigned int bloodLoss = std::stod(input[3]); + unsigned int pain = std::stod(input[4]); - unsigned int minDamage = std::stod(input[5]); - unsigned int maxDamage = std::stod(input[6]); - std::vector possibleCauses; // input[7]; - std::string displayName = input[8]; + unsigned int minDamage = std::stod(input[5]); + unsigned int maxDamage = std::stod(input[6]); + std::vector possibleCauses; // input[7]; + std::string displayName = input[8]; - std::shared_ptr type(new injuries::InjuryType(ID, className, allowedSelections, bloodLoss, pain, minDamage, maxDamage, possibleCauses, displayName)); - injuryTypes.push_back(type); - } + std::shared_ptr type(new injuries::InjuryType(ID, className, allowedSelections, bloodLoss, pain, minDamage, maxDamage, possibleCauses, displayName)); + injuryTypes.push_back(type); + } } /* static */ void handleDamage::FinalizeDefinitions() { - // We are finding all possible injuries for a specific damage type here, so we don't have to figure that out at a later stage. - for each (std::shared_ptr damageType in damageTypes) - { - for each (std::shared_ptr injuryType in injuryTypes) - { - if (find(injuryType->causes.begin(), injuryType->causes.end(), damageType->typeName) != injuryType->causes.end()) - { - damageType->possibleInjuries.push_back(injuryType); - } - } - } + // We are finding all possible injuries for a specific damage type here, so we don't have to figure that out at a later stage. + for each (std::shared_ptr damageType in damageTypes) + { + for each (std::shared_ptr injuryType in injuryTypes) + { + if (find(injuryType->causes.begin(), injuryType->causes.end(), damageType->typeName) != injuryType->causes.end()) + { + damageType->possibleInjuries.push_back(injuryType); + } + } + } } /* static */ int SelectionToNumber(const std::string& selectionName) { - // TODO use dynamic selections instead - std::vector selections = {"head", "body", "hand_l", "hand_r", "leg_l", "leg_r"}; - std::vector::iterator it = find(selections.begin(), selections.end(), selectionName); - if (it != selections.end()) - { - return it - selections.begin(); - } - else - { - return -1; // TODO throw exception - } + // TODO use dynamic selections instead + std::vector selections = {"head", "body", "hand_l", "hand_r", "leg_l", "leg_r"}; + std::vector::iterator it = find(selections.begin(), selections.end(), selectionName); + if (it != selections.end()) + { + return it - selections.begin(); + } + else + { + return -1; // TODO throw exception + } } diff --git a/extensions/medical/handleDamage.h b/extensions/medical/handleDamage.h index 16aba8d791..c62aa88e5f 100644 --- a/extensions/medical/handleDamage.h +++ b/extensions/medical/handleDamage.h @@ -5,62 +5,62 @@ #include namespace ace { - namespace medical { + namespace medical { - namespace injuries { - class DamageType; - class InjuryType; - class OpenWound; - } + namespace injuries { + class DamageType; + class InjuryType; + class OpenWound; + } - class handleDamage - { - public: - ~handleDamage(); + class handleDamage + { + public: + ~handleDamage(); - /** - * - */ - static std::vector HandleDamageWounds(const std::string& selectionName, signed int amountOfDamage, const std::string& typeOfDamage); + /** + * + */ + static std::vector HandleDamageWounds(const std::string& selectionName, signed int amountOfDamage, const std::string& typeOfDamage); - /** - * - */ - static void AddDamageType(const std::vector& sqfDamageTypeDefinition); + /** + * + */ + static void AddDamageType(const std::vector& sqfDamageTypeDefinition); - /** - * - */ - static void AddInjuryType(const std::vector& sqfInjuryDefinition); + /** + * + */ + static void AddInjuryType(const std::vector& sqfInjuryDefinition); - /** - * - */ - static std::string SetInjuryTypeData(const std::string& data); + /** + * + */ + static std::string SetInjuryTypeData(const std::string& data); - /** - * - */ - static int SelectionToNumber(const std::string& selectionName); + /** + * + */ + static int SelectionToNumber(const std::string& selectionName); - /** - * - */ - static std::vector> GetInjuryInfoFor(const std::string& damageType); + /** + * + */ + static std::vector> GetInjuryInfoFor(const std::string& damageType); - /** - * - */ - static void FinalizeDefinitions(); + /** + * + */ + static void FinalizeDefinitions(); - private: - handleDamage(); - - static std::vector> damageTypes; - static std::vector> injuryTypes; - static std::vector selections; - static std::vector hitPoints; - }; - } + private: + handleDamage(); + + static std::vector> damageTypes; + static std::vector> injuryTypes; + static std::vector selections; + static std::vector hitPoints; + }; + } } diff --git a/extensions/medical/medical.cpp b/extensions/medical/medical.cpp index 4531db475a..3e452b751f 100644 --- a/extensions/medical/medical.cpp +++ b/extensions/medical/medical.cpp @@ -12,46 +12,46 @@ #include "handleDamage.h" extern "C" { - __declspec (dllexport) void __stdcall RVExtension(char *output, int outputSize, const char *function); + __declspec (dllexport) void __stdcall RVExtension(char *output, int outputSize, const char *function); }; std::vector parseExtensionInput(const std::string& input) { - std::istringstream ss(input); - std::string token; + std::istringstream ss(input); + std::string token; - std::vector output; - while (std::getline(ss, token, ',')) { - output.push_back(token); - } - return output; + std::vector output; + while (std::getline(ss, token, ',')) { + output.push_back(token); + } + return output; } void __stdcall RVExtension(char *output, int outputSize, const char *function) { - if (!strcmp(function, "version")) { - strncpy(output, ACE_FULL_VERSION_STR, outputSize); - } - else - { - std::vector arguments = parseExtensionInput(function); - if (arguments.size > 0) - { - std::string command = arguments.at(0); - // can we not just use C++11? - if (command == "addInjuryType") { + if (!strcmp(function, "version")) { + strncpy(output, ACE_FULL_VERSION_STR, outputSize); + } + else + { + std::vector arguments = parseExtensionInput(function); + if (arguments.size > 0) + { + std::string command = arguments.at(0); + // can we not just use C++11? + if (command == "addInjuryType") { - } - else if (command == "addDamageType") { + } + else if (command == "addDamageType") { - } - else if (command == "getInjury") { - // ace::medical::handleDamage(); - } - } - std::string returnValue = ""; - strncpy(output, returnValue.c_str(), outputSize); - output[outputSize - 1] = '\0'; - } + } + else if (command == "getInjury") { + // ace::medical::handleDamage(); + } + } + std::string returnValue = ""; + strncpy(output, returnValue.c_str(), outputSize); + output[outputSize - 1] = '\0'; + } } From 7c03ec913be7899fa1a9aa5c2f028e0621343fda Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 14 May 2015 16:23:01 +0200 Subject: [PATCH 004/252] double all the things (ints) --- extensions/medical/DamageType.cpp | 2 +- extensions/medical/DamageType.h | 8 ++++---- extensions/medical/InjuryType.cpp | 2 +- extensions/medical/InjuryType.h | 10 +++++----- extensions/medical/OpenWound.cpp | 2 +- extensions/medical/OpenWound.h | 8 ++++---- extensions/medical/handleDamage.cpp | 16 ++++++++-------- extensions/medical/handleDamage.h | 2 +- extensions/medical/medical.cpp | 2 +- 9 files changed, 26 insertions(+), 26 deletions(-) diff --git a/extensions/medical/DamageType.cpp b/extensions/medical/DamageType.cpp index 5434d79e98..2b3a5b2e61 100644 --- a/extensions/medical/DamageType.cpp +++ b/extensions/medical/DamageType.cpp @@ -2,7 +2,7 @@ using namespace ace::medical; -injuries::DamageType::DamageType(std::string aTypeName, unsigned int minimalLethalDamage, unsigned int minDamage, unsigned int maxDamage) +injuries::DamageType::DamageType(std::string aTypeName, double minimalLethalDamage, double minDamage, double maxDamage) : typeName(aTypeName), minLethalDamage(minimalLethalDamage), minDamageThreshold(minDamage), maxDamageThreshold(maxDamage) { } diff --git a/extensions/medical/DamageType.h b/extensions/medical/DamageType.h index 449060070b..b690c46627 100644 --- a/extensions/medical/DamageType.h +++ b/extensions/medical/DamageType.h @@ -11,13 +11,13 @@ namespace ace { class DamageType { public: - DamageType(std::string aTypeName, unsigned int minimalLethalDamage, unsigned int minDamageThreshold, unsigned int maxDamageThreshold); + DamageType(std::string aTypeName, double minimalLethalDamage, double minDamageThreshold, double maxDamageThreshold); ~DamageType(); std::string typeName; - unsigned int minLethalDamage; - unsigned int minDamageThreshold; - unsigned int maxDamageThreshold; + double minLethalDamage; + double minDamageThreshold; + double maxDamageThreshold; std::vector> possibleInjuries; }; diff --git a/extensions/medical/InjuryType.cpp b/extensions/medical/InjuryType.cpp index 22c04c4126..cca9b20fd3 100644 --- a/extensions/medical/InjuryType.cpp +++ b/extensions/medical/InjuryType.cpp @@ -3,7 +3,7 @@ using namespace ace::medical; -injuries::InjuryType::InjuryType(signed int anId, const std::string& aClassname, std::vector& allowedSelections, signed int theBloodLoss, signed int thePain, signed int minimumDamage, signed int maximumDamage, std::vector& possibleCauses, std::string& aDisplayname) +injuries::InjuryType::InjuryType(signed int anId, const std::string& aClassname, std::vector& allowedSelections, double theBloodLoss, double thePain, double minimumDamage, double maximumDamage, std::vector& possibleCauses, std::string& aDisplayname) : ID(anId), className(aClassname), selections(allowedSelections), bloodLoss(theBloodLoss), pain(thePain), minDamage(minimumDamage), maxDamage(maximumDamage), causes(possibleCauses), displayName(aDisplayname) { } diff --git a/extensions/medical/InjuryType.h b/extensions/medical/InjuryType.h index c03760b568..ad99518252 100644 --- a/extensions/medical/InjuryType.h +++ b/extensions/medical/InjuryType.h @@ -9,16 +9,16 @@ namespace ace { class InjuryType { public: - InjuryType(signed int anId, const std::string& aClassname, std::vector& allowedSelections, signed int theBloodLoss, signed int thePain, signed int minimumDamage, signed int maximumDamage, std::vector& possibleCauses, std::string& aDisplayname); + InjuryType(signed int anId, const std::string& aClassname, std::vector& allowedSelections, double theBloodLoss, double thePain, double minimumDamage, double maximumDamage, std::vector& possibleCauses, std::string& aDisplayname); ~InjuryType(); signed int ID; std::string className; std::vector selections; - signed int bloodLoss; - signed int pain; - signed int minDamage; - signed int maxDamage; + double bloodLoss; + double pain; + double minDamage; + double maxDamage; std::vector causes; std::string displayName; }; diff --git a/extensions/medical/OpenWound.cpp b/extensions/medical/OpenWound.cpp index b0d614e6be..268929fc92 100644 --- a/extensions/medical/OpenWound.cpp +++ b/extensions/medical/OpenWound.cpp @@ -3,7 +3,7 @@ using namespace ace::medical; -injuries::OpenWound::OpenWound(unsigned int anID, unsigned int aBodyPart, unsigned int bloodloss) : classID(anID), bodyPart(aBodyPart), bloodlossRate(bloodloss) +injuries::OpenWound::OpenWound(double anID, double aBodyPart, double bloodloss) : classID(anID), bodyPart(aBodyPart), bloodlossRate(bloodloss) { } diff --git a/extensions/medical/OpenWound.h b/extensions/medical/OpenWound.h index 478e54a597..b2a9baccb8 100644 --- a/extensions/medical/OpenWound.h +++ b/extensions/medical/OpenWound.h @@ -8,14 +8,14 @@ namespace ace { class OpenWound { public: - OpenWound(unsigned int anID, unsigned int aBodyPart, unsigned int bloodloss); + OpenWound(double anID, double aBodyPart, double bloodloss); ~OpenWound(); std::string AsString(); - unsigned int classID; - unsigned int bodyPart; - unsigned int bloodlossRate; + double classID; + double bodyPart; + double bloodlossRate; }; } diff --git a/extensions/medical/handleDamage.cpp b/extensions/medical/handleDamage.cpp index 60fbe83012..1a6612c107 100644 --- a/extensions/medical/handleDamage.cpp +++ b/extensions/medical/handleDamage.cpp @@ -15,7 +15,7 @@ handleDamage::~handleDamage() { } -/* static */ std::vector handleDamage::HandleDamageWounds(const std::string& selectionName, signed int amountOfDamage, const std::string& typeOfDamage) +/* static */ std::vector handleDamage::HandleDamageWounds(const std::string& selectionName, double amountOfDamage, const std::string& typeOfDamage) { std::vector wounds; int selectionN = SelectionToNumber(selectionName); @@ -32,9 +32,9 @@ handleDamage::~handleDamage() if (input.size() == 4) { std::string typeName = input[0]; - unsigned int minimalLethalDamage = std::stod(input[1]); - unsigned int minDamageThreshold = std::stod(input[2]); - unsigned int maxDamageThreshold = std::stod(input[3]); + double minimalLethalDamage = std::stod(input[1]); + double minDamageThreshold = std::stod(input[2]); + double maxDamageThreshold = std::stod(input[3]); std::shared_ptr type(new injuries::DamageType(typeName, minimalLethalDamage, minDamageThreshold, maxDamageThreshold)); damageTypes.push_back(type); @@ -50,11 +50,11 @@ handleDamage::~handleDamage() int ID = std::stod(input[0]); std::string className = input[1]; std::vector allowedSelections; // input[2]; - unsigned int bloodLoss = std::stod(input[3]); - unsigned int pain = std::stod(input[4]); + double bloodLoss = std::stod(input[3]); + double pain = std::stod(input[4]); - unsigned int minDamage = std::stod(input[5]); - unsigned int maxDamage = std::stod(input[6]); + double minDamage = std::stod(input[5]); + double maxDamage = std::stod(input[6]); std::vector possibleCauses; // input[7]; std::string displayName = input[8]; diff --git a/extensions/medical/handleDamage.h b/extensions/medical/handleDamage.h index c62aa88e5f..7e030f2b84 100644 --- a/extensions/medical/handleDamage.h +++ b/extensions/medical/handleDamage.h @@ -21,7 +21,7 @@ namespace ace { /** * */ - static std::vector HandleDamageWounds(const std::string& selectionName, signed int amountOfDamage, const std::string& typeOfDamage); + static std::vector HandleDamageWounds(const std::string& selectionName, double amountOfDamage, const std::string& typeOfDamage); /** * diff --git a/extensions/medical/medical.cpp b/extensions/medical/medical.cpp index 3e452b751f..ae0b549613 100644 --- a/extensions/medical/medical.cpp +++ b/extensions/medical/medical.cpp @@ -35,7 +35,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) { else { std::vector arguments = parseExtensionInput(function); - if (arguments.size > 0) + if (arguments.size() > 0) { std::string command = arguments.at(0); // can we not just use C++11? From a48b6c94266f87c7889c44ea864a63f1de4beab8 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 14 May 2015 17:36:58 +0200 Subject: [PATCH 005/252] Fixed namespace issues. Removed static --- extensions/medical/DamageType.cpp | 6 +- extensions/medical/InjuryType.cpp | 5 +- extensions/medical/OpenWound.cpp | 8 +- extensions/medical/handleDamage.cpp | 175 ++++++++++++++-------------- extensions/medical/handleDamage.h | 22 ++-- 5 files changed, 107 insertions(+), 109 deletions(-) diff --git a/extensions/medical/DamageType.cpp b/extensions/medical/DamageType.cpp index 2b3a5b2e61..aeccfa6896 100644 --- a/extensions/medical/DamageType.cpp +++ b/extensions/medical/DamageType.cpp @@ -1,13 +1,11 @@ #include "DamageType.h" -using namespace ace::medical; - -injuries::DamageType::DamageType(std::string aTypeName, double minimalLethalDamage, double minDamage, double maxDamage) +ace::medical::injuries::DamageType::DamageType(std::string aTypeName, double minimalLethalDamage, double minDamage, double maxDamage) : typeName(aTypeName), minLethalDamage(minimalLethalDamage), minDamageThreshold(minDamage), maxDamageThreshold(maxDamage) { } -injuries::DamageType::~DamageType() +ace::medical::injuries::DamageType::~DamageType() { } diff --git a/extensions/medical/InjuryType.cpp b/extensions/medical/InjuryType.cpp index cca9b20fd3..a959e5dd70 100644 --- a/extensions/medical/InjuryType.cpp +++ b/extensions/medical/InjuryType.cpp @@ -1,14 +1,13 @@ #include "InjuryType.h" #include "DamageType.h" -using namespace ace::medical; -injuries::InjuryType::InjuryType(signed int anId, const std::string& aClassname, std::vector& allowedSelections, double theBloodLoss, double thePain, double minimumDamage, double maximumDamage, std::vector& possibleCauses, std::string& aDisplayname) +ace::medical::injuries::InjuryType::InjuryType(signed int anId, const std::string& aClassname, std::vector& allowedSelections, double theBloodLoss, double thePain, double minimumDamage, double maximumDamage, std::vector& possibleCauses, std::string& aDisplayname) : ID(anId), className(aClassname), selections(allowedSelections), bloodLoss(theBloodLoss), pain(thePain), minDamage(minimumDamage), maxDamage(maximumDamage), causes(possibleCauses), displayName(aDisplayname) { } -injuries::InjuryType::~InjuryType() +ace::medical::injuries::InjuryType::~InjuryType() { } diff --git a/extensions/medical/OpenWound.cpp b/extensions/medical/OpenWound.cpp index 268929fc92..6675704f03 100644 --- a/extensions/medical/OpenWound.cpp +++ b/extensions/medical/OpenWound.cpp @@ -1,17 +1,15 @@ #include "OpenWound.h" #include -using namespace ace::medical; - -injuries::OpenWound::OpenWound(double anID, double aBodyPart, double bloodloss) : classID(anID), bodyPart(aBodyPart), bloodlossRate(bloodloss) +ace::medical::injuries::OpenWound::OpenWound(double anID, double aBodyPart, double bloodloss) : classID(anID), bodyPart(aBodyPart), bloodlossRate(bloodloss) { } -injuries::OpenWound::~OpenWound() +ace::medical::injuries::OpenWound::~OpenWound() { } -std::string injuries::OpenWound::AsString() +std::string ace::medical::injuries::OpenWound::AsString() { std::stringstream stream; stream << classID << "," << bodyPart << "," << 1 << "," << bloodlossRate; diff --git a/extensions/medical/handleDamage.cpp b/extensions/medical/handleDamage.cpp index 1a6612c107..8ee929165e 100644 --- a/extensions/medical/handleDamage.cpp +++ b/extensions/medical/handleDamage.cpp @@ -4,91 +4,94 @@ #include "InjuryType.h" #include -using namespace ace::medical; +namespace ace { + namespace medical { -handleDamage::handleDamage() -{ -} - - -handleDamage::~handleDamage() -{ -} - -/* static */ std::vector handleDamage::HandleDamageWounds(const std::string& selectionName, double amountOfDamage, const std::string& typeOfDamage) -{ - std::vector wounds; - int selectionN = SelectionToNumber(selectionName); - if (selectionN >= 0) - { - std::vector> injuryTypeInfo = GetInjuryInfoFor(typeOfDamage); - } - - return wounds; -} - -/* static */ void handleDamage::AddDamageType(const std::vector& input) -{ - if (input.size() == 4) - { - std::string typeName = input[0]; - double minimalLethalDamage = std::stod(input[1]); - double minDamageThreshold = std::stod(input[2]); - double maxDamageThreshold = std::stod(input[3]); - - std::shared_ptr type(new injuries::DamageType(typeName, minimalLethalDamage, minDamageThreshold, maxDamageThreshold)); - damageTypes.push_back(type); - } -} - -/* static */ void handleDamage::AddInjuryType(const std::vector& input) -{ - if (input.size() == 9) - { - // TODO parse arrays from string input - - int ID = std::stod(input[0]); - std::string className = input[1]; - std::vector allowedSelections; // input[2]; - double bloodLoss = std::stod(input[3]); - double pain = std::stod(input[4]); - - double minDamage = std::stod(input[5]); - double maxDamage = std::stod(input[6]); - std::vector possibleCauses; // input[7]; - std::string displayName = input[8]; - - std::shared_ptr type(new injuries::InjuryType(ID, className, allowedSelections, bloodLoss, pain, minDamage, maxDamage, possibleCauses, displayName)); - injuryTypes.push_back(type); - } -} - -/* static */ void handleDamage::FinalizeDefinitions() -{ - // We are finding all possible injuries for a specific damage type here, so we don't have to figure that out at a later stage. - for each (std::shared_ptr damageType in damageTypes) - { - for each (std::shared_ptr injuryType in injuryTypes) - { - if (find(injuryType->causes.begin(), injuryType->causes.end(), damageType->typeName) != injuryType->causes.end()) - { - damageType->possibleInjuries.push_back(injuryType); - } - } - } -} - -/* static */ int SelectionToNumber(const std::string& selectionName) -{ - // TODO use dynamic selections instead - std::vector selections = {"head", "body", "hand_l", "hand_r", "leg_l", "leg_r"}; - std::vector::iterator it = find(selections.begin(), selections.end(), selectionName); - if (it != selections.end()) - { - return it - selections.begin(); - } - else - { - return -1; // TODO throw exception - } + handleDamage::handleDamage() + { + } + + + handleDamage::~handleDamage() + { + } + + /* static */ std::vector handleDamage::HandleDamageWounds(const std::string& selectionName, double amountOfDamage, const std::string& typeOfDamage) + { + std::vector wounds; + int selectionN = SelectionToNumber(selectionName); + if (selectionN >= 0) + { + // std::vector> injuryTypeInfo = GetInjuryInfoFor(typeOfDamage); + } + + return wounds; + } + + /* static */ void handleDamage::AddDamageType(const std::vector& input) + { + if (input.size() == 4) + { + std::string typeName = input[0]; + double minimalLethalDamage = std::stod(input[1]); + double minDamageThreshold = std::stod(input[2]); + double maxDamageThreshold = std::stod(input[3]); + + std::shared_ptr type(new ace::medical::injuries::DamageType(typeName, minimalLethalDamage, minDamageThreshold, maxDamageThreshold)); + damageTypes.push_back(type); + } + } + + void handleDamage::AddInjuryType(const std::vector& input) + { + if (input.size() == 9) + { + // TODO parse arrays from string input + + int ID = std::stod(input[0]); + std::string className = input[1]; + std::vector allowedSelections; // input[2]; + double bloodLoss = std::stod(input[3]); + double pain = std::stod(input[4]); + + double minDamage = std::stod(input[5]); + double maxDamage = std::stod(input[6]); + std::vector possibleCauses; // input[7]; + std::string displayName = input[8]; + + std::shared_ptr type(new ace::medical::injuries::InjuryType(ID, className, allowedSelections, bloodLoss, pain, minDamage, maxDamage, possibleCauses, displayName)); + injuryTypes.push_back(type); + } + } + + void handleDamage::FinalizeDefinitions() + { + // We are finding all possible injuries for a specific damage type here, so we don't have to figure that out at a later stage. + for each (std::shared_ptr damageType in damageTypes) + { + for each (std::shared_ptr injuryType in injuryTypes) + { + if (find(injuryType->causes.begin(), injuryType->causes.end(), damageType->typeName) != injuryType->causes.end()) + { + damageType->possibleInjuries.push_back(injuryType); + } + } + } + } + + int handleDamage::SelectionToNumber(const std::string& selectionName) + { + // TODO use dynamic selections instead + std::vector selections = { "head", "body", "hand_l", "hand_r", "leg_l", "leg_r" }; + std::vector::iterator it = find(selections.begin(), selections.end(), selectionName); + if (it != selections.end()) + { + return it - selections.begin(); + } + else + { + return -1; // TODO throw exception + } + } + } } diff --git a/extensions/medical/handleDamage.h b/extensions/medical/handleDamage.h index 7e030f2b84..a74941c605 100644 --- a/extensions/medical/handleDamage.h +++ b/extensions/medical/handleDamage.h @@ -21,46 +21,46 @@ namespace ace { /** * */ - static std::vector HandleDamageWounds(const std::string& selectionName, double amountOfDamage, const std::string& typeOfDamage); + std::vector HandleDamageWounds(const std::string& selectionName, double amountOfDamage, const std::string& typeOfDamage); /** * */ - static void AddDamageType(const std::vector& sqfDamageTypeDefinition); + void AddDamageType(const std::vector& sqfDamageTypeDefinition); /** * */ - static void AddInjuryType(const std::vector& sqfInjuryDefinition); + void AddInjuryType(const std::vector& sqfInjuryDefinition); /** * */ - static std::string SetInjuryTypeData(const std::string& data); + //static std::string SetInjuryTypeData(const std::string& data); /** * */ - static int SelectionToNumber(const std::string& selectionName); + int SelectionToNumber(const std::string& selectionName); /** * */ - static std::vector> GetInjuryInfoFor(const std::string& damageType); + //static std::vector> GetInjuryInfoFor(const std::string& damageType); /** * */ - static void FinalizeDefinitions(); + void FinalizeDefinitions(); private: handleDamage(); - static std::vector> damageTypes; - static std::vector> injuryTypes; - static std::vector selections; - static std::vector hitPoints; + std::vector> damageTypes; + std::vector> injuryTypes; + std::vector selections; + std::vector hitPoints; }; } } From e98c7cd1b736ef7e7c846be842028a68400adcb2 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 14 May 2015 17:41:50 +0200 Subject: [PATCH 006/252] Made handleDamage a singleton --- extensions/medical/handleDamage.cpp | 6 ++++++ extensions/medical/handleDamage.h | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/extensions/medical/handleDamage.cpp b/extensions/medical/handleDamage.cpp index 8ee929165e..93094ab2bb 100644 --- a/extensions/medical/handleDamage.cpp +++ b/extensions/medical/handleDamage.cpp @@ -12,6 +12,12 @@ namespace ace { } + handleDamage& handleDamage::GetInstance() + { + static handleDamage instance; + return instance; + } + handleDamage::~handleDamage() { } diff --git a/extensions/medical/handleDamage.h b/extensions/medical/handleDamage.h index a74941c605..5959e58653 100644 --- a/extensions/medical/handleDamage.h +++ b/extensions/medical/handleDamage.h @@ -16,6 +16,11 @@ namespace ace { class handleDamage { public: + /** + * + */ + static handleDamage& GetInstance(); + ~handleDamage(); /** @@ -56,7 +61,10 @@ namespace ace { private: handleDamage(); - + + handleDamage(handleDamage const&) = delete; + void operator=(handleDamage const&) = delete; + std::vector> damageTypes; std::vector> injuryTypes; std::vector selections; From 5756c8530f28a920817b615b12fbc4084a551d52 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 14 May 2015 18:52:12 +0200 Subject: [PATCH 007/252] Ported over handleDamage_wounds --- extensions/medical/DamageType.cpp | 4 +- extensions/medical/DamageType.h | 8 ++-- extensions/medical/OpenWound.cpp | 3 +- extensions/medical/OpenWound.h | 6 ++- extensions/medical/handleDamage.cpp | 72 ++++++++++++++++++++++++++--- extensions/medical/handleDamage.h | 2 + 6 files changed, 81 insertions(+), 14 deletions(-) diff --git a/extensions/medical/DamageType.cpp b/extensions/medical/DamageType.cpp index aeccfa6896..3e6b08e507 100644 --- a/extensions/medical/DamageType.cpp +++ b/extensions/medical/DamageType.cpp @@ -1,7 +1,7 @@ #include "DamageType.h" -ace::medical::injuries::DamageType::DamageType(std::string aTypeName, double minimalLethalDamage, double minDamage, double maxDamage) - : typeName(aTypeName), minLethalDamage(minimalLethalDamage), minDamageThreshold(minDamage), maxDamageThreshold(maxDamage) +ace::medical::injuries::DamageType::DamageType(std::string aTypeName, double minimalLethalDamage, std::vector minDamage, std::vector amountOfInjuresOnDamage, bool specificOnly) + : typeName(aTypeName), minLethalDamage(minimalLethalDamage), minDamageThreshold(minDamage), amountOfInjuresOnDamage(amountOfInjuresOnDamage), selectionSpecific(specificOnly) { } diff --git a/extensions/medical/DamageType.h b/extensions/medical/DamageType.h index b690c46627..de8e73a07d 100644 --- a/extensions/medical/DamageType.h +++ b/extensions/medical/DamageType.h @@ -11,13 +11,15 @@ namespace ace { class DamageType { public: - DamageType(std::string aTypeName, double minimalLethalDamage, double minDamageThreshold, double maxDamageThreshold); + DamageType(std::string aTypeName, double minimalLethalDamage, std::vector minDamageThreshold, std::vector amountOfInjuresOnDamage, bool specificOnly); ~DamageType(); std::string typeName; double minLethalDamage; - double minDamageThreshold; - double maxDamageThreshold; + std::vector minDamageThreshold; + std::vector amountOfInjuresOnDamage; + + bool selectionSpecific; std::vector> possibleInjuries; }; diff --git a/extensions/medical/OpenWound.cpp b/extensions/medical/OpenWound.cpp index 6675704f03..b28cf79df5 100644 --- a/extensions/medical/OpenWound.cpp +++ b/extensions/medical/OpenWound.cpp @@ -1,7 +1,8 @@ #include "OpenWound.h" #include -ace::medical::injuries::OpenWound::OpenWound(double anID, double aBodyPart, double bloodloss) : classID(anID), bodyPart(aBodyPart), bloodlossRate(bloodloss) +ace::medical::injuries::OpenWound::OpenWound(int aClassID, int aBodyPartId, double aPercentage, double aBl, double painAmount) : + classID(aClassID), bodyPart(aBodyPartId), percentage(aPercentage), bloodlossRate(aBl), pain(painAmount) { } diff --git a/extensions/medical/OpenWound.h b/extensions/medical/OpenWound.h index b2a9baccb8..4d2d7892eb 100644 --- a/extensions/medical/OpenWound.h +++ b/extensions/medical/OpenWound.h @@ -8,14 +8,16 @@ namespace ace { class OpenWound { public: - OpenWound(double anID, double aBodyPart, double bloodloss); + OpenWound(int aClassID, int aBodyPartId, double aPercentage, double aBl, double painAmount); ~OpenWound(); std::string AsString(); - double classID; + int classID; + int percentage; double bodyPart; double bloodlossRate; + double pain; }; } diff --git a/extensions/medical/handleDamage.cpp b/extensions/medical/handleDamage.cpp index 93094ab2bb..6fbc53e071 100644 --- a/extensions/medical/handleDamage.cpp +++ b/extensions/medical/handleDamage.cpp @@ -28,22 +28,82 @@ namespace ace { int selectionN = SelectionToNumber(selectionName); if (selectionN >= 0) { - // std::vector> injuryTypeInfo = GetInjuryInfoFor(typeOfDamage); + wounds = GetInjuryInfoFor(typeOfDamage, amountOfDamage, selectionN); } - return wounds; } + std::vector handleDamage::GetInjuryInfoFor(const std::string& typeOfDamage, double amountOfDamage, int selection) + { + std::vector injuriesToAdd; + std::vector> information; + std::shared_ptr highestSpot; + + for each (std::shared_ptr damageType in damageTypes) + { + if (damageType->typeName == typeOfDamage) + { + for each (std::shared_ptr possibleInjury in damageType->possibleInjuries) + { + if (amountOfDamage >= possibleInjury->minDamage && (amountOfDamage <= possibleInjury->maxDamage || possibleInjury->maxDamage == 0)) + { + if (highestSpot == NULL) + highestSpot = possibleInjury; + + if (possibleInjury->minDamage > highestSpot->minDamage) + highestSpot = possibleInjury; + + information.push_back(possibleInjury); + } + } + + int c = 0; + for each (double threshold in damageType->minDamageThreshold) + { + if (threshold >= amountOfDamage) + { + double amountOfInjuriesOnDamage = damageType->amountOfInjuresOnDamage.at(c); + for (double injuryAmount = 0; injuryAmount < amountOfInjuriesOnDamage; ++injuryAmount) + { + std::shared_ptr injuryToAdd; + if (rand() % 1 >= 0.85) + { + injuryToAdd = highestSpot; + } + else + { + injuryToAdd = information.at(0); + } + + int bodyPartID = selection; + if (!damageType->selectionSpecific) + { + bodyPartID = rand() % 6; + } + + injuries::OpenWound newWound(injuryToAdd->ID, bodyPartID, 1, injuryToAdd->bloodLoss, injuryToAdd->pain); + injuriesToAdd.push_back(newWound); + } + } + ++c; + } + return injuriesToAdd; + } + } + return injuriesToAdd; + } + /* static */ void handleDamage::AddDamageType(const std::vector& input) { - if (input.size() == 4) + if (input.size() == 5) { std::string typeName = input[0]; double minimalLethalDamage = std::stod(input[1]); - double minDamageThreshold = std::stod(input[2]); - double maxDamageThreshold = std::stod(input[3]); + std::vector minDamageThreshold;// = std::stod(input[2]); + std::vector amountOfInjuresOnDamage; //= std::stod(input[3]); + bool selectionSpecific = std::stod(input[4]) > 0; - std::shared_ptr type(new ace::medical::injuries::DamageType(typeName, minimalLethalDamage, minDamageThreshold, maxDamageThreshold)); + std::shared_ptr type(new ace::medical::injuries::DamageType(typeName, minimalLethalDamage, minDamageThreshold, amountOfInjuresOnDamage, selectionSpecific)); damageTypes.push_back(type); } } diff --git a/extensions/medical/handleDamage.h b/extensions/medical/handleDamage.h index 5959e58653..fdaa952bfd 100644 --- a/extensions/medical/handleDamage.h +++ b/extensions/medical/handleDamage.h @@ -28,6 +28,8 @@ namespace ace { */ std::vector HandleDamageWounds(const std::string& selectionName, double amountOfDamage, const std::string& typeOfDamage); + std::vector GetInjuryInfoFor(const std::string& typeOfDamage, double amountOfDamage, int selection); + /** * */ From eb2383a6f076d07287ab2c2e3367166b849d1f5c Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 14 May 2015 18:56:23 +0200 Subject: [PATCH 008/252] tabs --- extensions/medical/DamageType.h | 4 +- extensions/medical/InjuryType.h | 2 +- extensions/medical/OpenWound.cpp | 2 +- extensions/medical/OpenWound.h | 4 +- extensions/medical/handleDamage.cpp | 272 ++++++++++++++-------------- extensions/medical/handleDamage.h | 16 +- 6 files changed, 150 insertions(+), 150 deletions(-) diff --git a/extensions/medical/DamageType.h b/extensions/medical/DamageType.h index de8e73a07d..3cd9fb41d0 100644 --- a/extensions/medical/DamageType.h +++ b/extensions/medical/DamageType.h @@ -17,9 +17,9 @@ namespace ace { std::string typeName; double minLethalDamage; std::vector minDamageThreshold; - std::vector amountOfInjuresOnDamage; + std::vector amountOfInjuresOnDamage; - bool selectionSpecific; + bool selectionSpecific; std::vector> possibleInjuries; }; diff --git a/extensions/medical/InjuryType.h b/extensions/medical/InjuryType.h index ad99518252..2790917468 100644 --- a/extensions/medical/InjuryType.h +++ b/extensions/medical/InjuryType.h @@ -9,7 +9,7 @@ namespace ace { class InjuryType { public: - InjuryType(signed int anId, const std::string& aClassname, std::vector& allowedSelections, double theBloodLoss, double thePain, double minimumDamage, double maximumDamage, std::vector& possibleCauses, std::string& aDisplayname); + InjuryType(signed int anId, const std::string& aClassname, std::vector& allowedSelections, double theBloodLoss, double thePain, double minimumDamage, double maximumDamage, std::vector& possibleCauses, std::string& aDisplayname); ~InjuryType(); signed int ID; diff --git a/extensions/medical/OpenWound.cpp b/extensions/medical/OpenWound.cpp index b28cf79df5..62eadfdfe9 100644 --- a/extensions/medical/OpenWound.cpp +++ b/extensions/medical/OpenWound.cpp @@ -2,7 +2,7 @@ #include ace::medical::injuries::OpenWound::OpenWound(int aClassID, int aBodyPartId, double aPercentage, double aBl, double painAmount) : - classID(aClassID), bodyPart(aBodyPartId), percentage(aPercentage), bloodlossRate(aBl), pain(painAmount) + classID(aClassID), bodyPart(aBodyPartId), percentage(aPercentage), bloodlossRate(aBl), pain(painAmount) { } diff --git a/extensions/medical/OpenWound.h b/extensions/medical/OpenWound.h index 4d2d7892eb..00e6c1fe7a 100644 --- a/extensions/medical/OpenWound.h +++ b/extensions/medical/OpenWound.h @@ -14,10 +14,10 @@ namespace ace { std::string AsString(); int classID; - int percentage; + int percentage; double bodyPart; double bloodlossRate; - double pain; + double pain; }; } diff --git a/extensions/medical/handleDamage.cpp b/extensions/medical/handleDamage.cpp index 6fbc53e071..1e2cf53e84 100644 --- a/extensions/medical/handleDamage.cpp +++ b/extensions/medical/handleDamage.cpp @@ -5,159 +5,159 @@ #include namespace ace { - namespace medical { + namespace medical { - handleDamage::handleDamage() - { - } + handleDamage::handleDamage() + { + } - handleDamage& handleDamage::GetInstance() - { - static handleDamage instance; - return instance; - } + handleDamage& handleDamage::GetInstance() + { + static handleDamage instance; + return instance; + } - handleDamage::~handleDamage() - { - } + handleDamage::~handleDamage() + { + } - /* static */ std::vector handleDamage::HandleDamageWounds(const std::string& selectionName, double amountOfDamage, const std::string& typeOfDamage) - { - std::vector wounds; - int selectionN = SelectionToNumber(selectionName); - if (selectionN >= 0) - { - wounds = GetInjuryInfoFor(typeOfDamage, amountOfDamage, selectionN); - } - return wounds; - } + /* static */ std::vector handleDamage::HandleDamageWounds(const std::string& selectionName, double amountOfDamage, const std::string& typeOfDamage) + { + std::vector wounds; + int selectionN = SelectionToNumber(selectionName); + if (selectionN >= 0) + { + wounds = GetInjuryInfoFor(typeOfDamage, amountOfDamage, selectionN); + } + return wounds; + } - std::vector handleDamage::GetInjuryInfoFor(const std::string& typeOfDamage, double amountOfDamage, int selection) - { - std::vector injuriesToAdd; - std::vector> information; - std::shared_ptr highestSpot; + std::vector handleDamage::GetInjuryInfoFor(const std::string& typeOfDamage, double amountOfDamage, int selection) + { + std::vector injuriesToAdd; + std::vector> information; + std::shared_ptr highestSpot; - for each (std::shared_ptr damageType in damageTypes) - { - if (damageType->typeName == typeOfDamage) - { - for each (std::shared_ptr possibleInjury in damageType->possibleInjuries) - { - if (amountOfDamage >= possibleInjury->minDamage && (amountOfDamage <= possibleInjury->maxDamage || possibleInjury->maxDamage == 0)) - { - if (highestSpot == NULL) - highestSpot = possibleInjury; + for each (std::shared_ptr damageType in damageTypes) + { + if (damageType->typeName == typeOfDamage) + { + for each (std::shared_ptr possibleInjury in damageType->possibleInjuries) + { + if (amountOfDamage >= possibleInjury->minDamage && (amountOfDamage <= possibleInjury->maxDamage || possibleInjury->maxDamage == 0)) + { + if (highestSpot == NULL) + highestSpot = possibleInjury; - if (possibleInjury->minDamage > highestSpot->minDamage) - highestSpot = possibleInjury; + if (possibleInjury->minDamage > highestSpot->minDamage) + highestSpot = possibleInjury; - information.push_back(possibleInjury); - } - } + information.push_back(possibleInjury); + } + } - int c = 0; - for each (double threshold in damageType->minDamageThreshold) - { - if (threshold >= amountOfDamage) - { - double amountOfInjuriesOnDamage = damageType->amountOfInjuresOnDamage.at(c); - for (double injuryAmount = 0; injuryAmount < amountOfInjuriesOnDamage; ++injuryAmount) - { - std::shared_ptr injuryToAdd; - if (rand() % 1 >= 0.85) - { - injuryToAdd = highestSpot; - } - else - { - injuryToAdd = information.at(0); - } + int c = 0; + for each (double threshold in damageType->minDamageThreshold) + { + if (threshold >= amountOfDamage) + { + double amountOfInjuriesOnDamage = damageType->amountOfInjuresOnDamage.at(c); + for (double injuryAmount = 0; injuryAmount < amountOfInjuriesOnDamage; ++injuryAmount) + { + std::shared_ptr injuryToAdd; + if (rand() % 1 >= 0.85) + { + injuryToAdd = highestSpot; + } + else + { + injuryToAdd = information.at(0); + } - int bodyPartID = selection; - if (!damageType->selectionSpecific) - { - bodyPartID = rand() % 6; - } - - injuries::OpenWound newWound(injuryToAdd->ID, bodyPartID, 1, injuryToAdd->bloodLoss, injuryToAdd->pain); - injuriesToAdd.push_back(newWound); - } - } - ++c; - } - return injuriesToAdd; - } - } - return injuriesToAdd; - } + int bodyPartID = selection; + if (!damageType->selectionSpecific) + { + bodyPartID = rand() % 6; + } + + injuries::OpenWound newWound(injuryToAdd->ID, bodyPartID, 1, injuryToAdd->bloodLoss, injuryToAdd->pain); + injuriesToAdd.push_back(newWound); + } + } + ++c; + } + return injuriesToAdd; + } + } + return injuriesToAdd; + } - /* static */ void handleDamage::AddDamageType(const std::vector& input) - { - if (input.size() == 5) - { - std::string typeName = input[0]; - double minimalLethalDamage = std::stod(input[1]); - std::vector minDamageThreshold;// = std::stod(input[2]); - std::vector amountOfInjuresOnDamage; //= std::stod(input[3]); - bool selectionSpecific = std::stod(input[4]) > 0; + /* static */ void handleDamage::AddDamageType(const std::vector& input) + { + if (input.size() == 5) + { + std::string typeName = input[0]; + double minimalLethalDamage = std::stod(input[1]); + std::vector minDamageThreshold;// = std::stod(input[2]); + std::vector amountOfInjuresOnDamage; //= std::stod(input[3]); + bool selectionSpecific = std::stod(input[4]) > 0; - std::shared_ptr type(new ace::medical::injuries::DamageType(typeName, minimalLethalDamage, minDamageThreshold, amountOfInjuresOnDamage, selectionSpecific)); - damageTypes.push_back(type); - } - } + std::shared_ptr type(new ace::medical::injuries::DamageType(typeName, minimalLethalDamage, minDamageThreshold, amountOfInjuresOnDamage, selectionSpecific)); + damageTypes.push_back(type); + } + } - void handleDamage::AddInjuryType(const std::vector& input) - { - if (input.size() == 9) - { - // TODO parse arrays from string input + void handleDamage::AddInjuryType(const std::vector& input) + { + if (input.size() == 9) + { + // TODO parse arrays from string input - int ID = std::stod(input[0]); - std::string className = input[1]; - std::vector allowedSelections; // input[2]; - double bloodLoss = std::stod(input[3]); - double pain = std::stod(input[4]); + int ID = std::stod(input[0]); + std::string className = input[1]; + std::vector allowedSelections; // input[2]; + double bloodLoss = std::stod(input[3]); + double pain = std::stod(input[4]); - double minDamage = std::stod(input[5]); - double maxDamage = std::stod(input[6]); - std::vector possibleCauses; // input[7]; - std::string displayName = input[8]; + double minDamage = std::stod(input[5]); + double maxDamage = std::stod(input[6]); + std::vector possibleCauses; // input[7]; + std::string displayName = input[8]; - std::shared_ptr type(new ace::medical::injuries::InjuryType(ID, className, allowedSelections, bloodLoss, pain, minDamage, maxDamage, possibleCauses, displayName)); - injuryTypes.push_back(type); - } - } + std::shared_ptr type(new ace::medical::injuries::InjuryType(ID, className, allowedSelections, bloodLoss, pain, minDamage, maxDamage, possibleCauses, displayName)); + injuryTypes.push_back(type); + } + } - void handleDamage::FinalizeDefinitions() - { - // We are finding all possible injuries for a specific damage type here, so we don't have to figure that out at a later stage. - for each (std::shared_ptr damageType in damageTypes) - { - for each (std::shared_ptr injuryType in injuryTypes) - { - if (find(injuryType->causes.begin(), injuryType->causes.end(), damageType->typeName) != injuryType->causes.end()) - { - damageType->possibleInjuries.push_back(injuryType); - } - } - } - } + void handleDamage::FinalizeDefinitions() + { + // We are finding all possible injuries for a specific damage type here, so we don't have to figure that out at a later stage. + for each (std::shared_ptr damageType in damageTypes) + { + for each (std::shared_ptr injuryType in injuryTypes) + { + if (find(injuryType->causes.begin(), injuryType->causes.end(), damageType->typeName) != injuryType->causes.end()) + { + damageType->possibleInjuries.push_back(injuryType); + } + } + } + } - int handleDamage::SelectionToNumber(const std::string& selectionName) - { - // TODO use dynamic selections instead - std::vector selections = { "head", "body", "hand_l", "hand_r", "leg_l", "leg_r" }; - std::vector::iterator it = find(selections.begin(), selections.end(), selectionName); - if (it != selections.end()) - { - return it - selections.begin(); - } - else - { - return -1; // TODO throw exception - } - } - } + int handleDamage::SelectionToNumber(const std::string& selectionName) + { + // TODO use dynamic selections instead + std::vector selections = { "head", "body", "hand_l", "hand_r", "leg_l", "leg_r" }; + std::vector::iterator it = find(selections.begin(), selections.end(), selectionName); + if (it != selections.end()) + { + return it - selections.begin(); + } + else + { + return -1; // TODO throw exception + } + } + } } diff --git a/extensions/medical/handleDamage.h b/extensions/medical/handleDamage.h index fdaa952bfd..16b9cb6783 100644 --- a/extensions/medical/handleDamage.h +++ b/extensions/medical/handleDamage.h @@ -16,10 +16,10 @@ namespace ace { class handleDamage { public: - /** - * - */ - static handleDamage& GetInstance(); + /** + * + */ + static handleDamage& GetInstance(); ~handleDamage(); @@ -28,7 +28,7 @@ namespace ace { */ std::vector HandleDamageWounds(const std::string& selectionName, double amountOfDamage, const std::string& typeOfDamage); - std::vector GetInjuryInfoFor(const std::string& typeOfDamage, double amountOfDamage, int selection); + std::vector GetInjuryInfoFor(const std::string& typeOfDamage, double amountOfDamage, int selection); /** * @@ -63,9 +63,9 @@ namespace ace { private: handleDamage(); - - handleDamage(handleDamage const&) = delete; - void operator=(handleDamage const&) = delete; + + handleDamage(handleDamage const&) = delete; + void operator=(handleDamage const&) = delete; std::vector> damageTypes; std::vector> injuryTypes; From 77e13ca5be0f40ecd507c777c8cd46886fc2d4b8 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 14 May 2015 23:18:38 +0200 Subject: [PATCH 009/252] Seperated ACE_Settings --- addons/nametags/ACE_Settings.hpp | 57 ++++++++++++++++++++++++++++++ addons/nametags/config.cpp | 59 +------------------------------- 2 files changed, 58 insertions(+), 58 deletions(-) create mode 100644 addons/nametags/ACE_Settings.hpp diff --git a/addons/nametags/ACE_Settings.hpp b/addons/nametags/ACE_Settings.hpp new file mode 100644 index 0000000000..986b5c187b --- /dev/null +++ b/addons/nametags/ACE_Settings.hpp @@ -0,0 +1,57 @@ +class ACE_Settings { + class GVAR(defaultNametagColor) { + value[] = {0.77, 0.51, 0.08, 1}; + typeName = "COLOR"; + isClientSettable = 1; + displayName = "$STR_ACE_NameTags_DefaultNametagColor"; + }; + class GVAR(showPlayerNames) { + value = 1; + typeName = "SCALAR"; + isClientSettable = 1; + displayName = "$STR_ACE_NameTags_ShowPlayerNames"; + description = "$STR_ACE_NameTags_ShowPlayerNames_Desc"; + values[] = {"$STR_ACE_Common_Disabled", "$STR_ACE_Common_Enabled", "$STR_ACE_Common_OnlyCursor", "$STR_ACE_Common_OnlyOnKeypress", "$STR_ACE_Common_OnlyCursorAndKeyPress"}; + }; + class GVAR(showPlayerRanks) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = "$STR_ACE_NameTags_ShowPlayerRanks"; + }; + class GVAR(showVehicleCrewInfo) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = "$STR_ACE_NameTags_ShowVehicleCrewInfo"; + }; + class GVAR(showNamesForAI) { + value = 0; + typeName = "BOOL"; + isClientSettable = 1; + displayName = "$STR_ACE_NameTags_ShowNamesForAI"; + }; + class GVAR(showCursorTagForVehicles) { + value = 0; + typeName = "BOOL"; + isClientSettable = 0; + }; + class GVAR(showSoundWaves) { + value = 1; + typeName = "SCALAR"; + isClientSettable = 1; + displayName = "$STR_ACE_NameTags_ShowSoundWaves"; + description = "$STR_ACE_NameTags_ShowSoundWaves_Desc"; + values[] = {"$STR_ACE_Common_Disabled", "$STR_ACE_Common_NameTagSettings", "$STR_ACE_Common_AlwaysShowAll"}; + }; + class GVAR(PlayerNamesViewDistance) { + value = 5; + typeName = "SCALAR"; + isClientSettable = 0; + }; + class GVAR(PlayerNamesMaxAlpha) { + value = 0.8; + typeName = "SCALAR"; + isClientSettable = 0; + }; +}; diff --git a/addons/nametags/config.cpp b/addons/nametags/config.cpp index b14873779c..a2d38254f1 100644 --- a/addons/nametags/config.cpp +++ b/addons/nametags/config.cpp @@ -13,64 +13,7 @@ class CfgPatches { }; #include "CfgEventHandlers.hpp" +#include "ACE_Settings.hpp" #include "CfgVehicles.hpp" -class ACE_Settings { - class GVAR(defaultNametagColor) { - value[] = {0.77, 0.51, 0.08, 1}; - typeName = "COLOR"; - isClientSettable = 1; - displayName = "$STR_ACE_NameTags_DefaultNametagColor"; - }; - class GVAR(showPlayerNames) { - value = 1; - typeName = "SCALAR"; - isClientSettable = 1; - displayName = "$STR_ACE_NameTags_ShowPlayerNames"; - description = "$STR_ACE_NameTags_ShowPlayerNames_Desc"; - values[] = {"$STR_ACE_Common_Disabled", "$STR_ACE_Common_Enabled", "$STR_ACE_Common_OnlyCursor", "$STR_ACE_Common_OnlyOnKeypress", "$STR_ACE_Common_OnlyCursorAndKeyPress"}; - }; - class GVAR(showPlayerRanks) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = "$STR_ACE_NameTags_ShowPlayerRanks"; - }; - class GVAR(showVehicleCrewInfo) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = "$STR_ACE_NameTags_ShowVehicleCrewInfo"; - }; - class GVAR(showNamesForAI) { - value = 0; - typeName = "BOOL"; - isClientSettable = 1; - displayName = "$STR_ACE_NameTags_ShowNamesForAI"; - }; - class GVAR(showCursorTagForVehicles) { - value = 0; - typeName = "BOOL"; - isClientSettable = 0; - }; - class GVAR(showSoundWaves) { - value = 1; - typeName = "SCALAR"; - isClientSettable = 1; - displayName = "$STR_ACE_NameTags_ShowSoundWaves"; - description = "$STR_ACE_NameTags_ShowSoundWaves_Desc"; - values[] = {"$STR_ACE_Common_Disabled", "$STR_ACE_Common_NameTagSettings", "$STR_ACE_Common_AlwaysShowAll"}; - }; - class GVAR(PlayerNamesViewDistance) { - value = 5; - typeName = "SCALAR"; - isClientSettable = 0; - }; - class GVAR(PlayerNamesMaxAlpha) { - value = 0.8; - typeName = "SCALAR"; - isClientSettable = 0; - }; -}; - #include From 8a2a53ddac43ce53b981a7c6636cade69130ffdc Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 14 May 2015 23:26:37 +0200 Subject: [PATCH 010/252] Show player names module option added --- addons/nametags/ACE_Settings.hpp | 2 +- addons/nametags/CfgVehicles.hpp | 29 +++++++++++++++++++ addons/nametags/XEH_postInit.sqf | 8 +++-- .../nametags/functions/fnc_moduleNameTags.sqf | 3 +- addons/nametags/stringtable.xml | 16 +++++----- 5 files changed, 46 insertions(+), 12 deletions(-) diff --git a/addons/nametags/ACE_Settings.hpp b/addons/nametags/ACE_Settings.hpp index 986b5c187b..3aecd650b4 100644 --- a/addons/nametags/ACE_Settings.hpp +++ b/addons/nametags/ACE_Settings.hpp @@ -11,7 +11,7 @@ class ACE_Settings { isClientSettable = 1; displayName = "$STR_ACE_NameTags_ShowPlayerNames"; description = "$STR_ACE_NameTags_ShowPlayerNames_Desc"; - values[] = {"$STR_ACE_Common_Disabled", "$STR_ACE_Common_Enabled", "$STR_ACE_Common_OnlyCursor", "$STR_ACE_Common_OnlyOnKeypress", "$STR_ACE_Common_OnlyCursorAndKeyPress"}; + values[] = {"$STR_ACE_NameTags_Disabled", "$STR_ACE_NameTags_Enabled", "$STR_ACE_NameTags_OnlyCursor", "$STR_ACE_NameTags_OnlyOnKeypress", "$STR_ACE_NameTags_OnlyCursorAndKeypress"}; }; class GVAR(showPlayerRanks) { value = 1; diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index fabd3b09cb..ad93cc1c27 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -12,6 +12,35 @@ class CfgVehicles { isGlobal = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_NameTags_ca.paa)); class Arguments { + class showPlayerNames { + displayName = "$STR_ACE_NameTags_ShowPlayerNames"; + description = "$STR_ACE_NameTags_ShowPlayerNames_Desc"; + typeName = "SCALAR"; + defaultValue = 1; + class values { + class Disabled { + name = "$STR_ACE_NameTags_Disabled"; + value = 0; + }; + class Enabled { + default = 1; + name = "$STR_ACE_NameTags_Enabled"; + value = 1; + }; + class OnlyCursor { + name = "$STR_ACE_NameTags_OnlyCursor"; + value = 2; + }; + class OnlyOnKeypress { + name = "$STR_ACE_NameTags_OnlyOnKeypress"; + value = 3; + }; + class OnlyCursorAndKeypress { + name = "$STR_ACE_NameTags_OnlyCursorAndKeypress"; + value = 4; + }; + }; + }; class PlayerNamesViewDistance { displayName = "$STR_ACE_NameTags_PlayerNamesViewDistance_DisplayName"; description = "$STR_ACE_NameTags_PlayerNamesViewDistance_Description"; diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index cea2025dcc..1b649ac8a6 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -1,7 +1,9 @@ // by commy2 and esteldunedain #include "script_component.hpp" -[] call FUNC(initIsSpeaking); +if (QGVAR(showPlayerNames) > 0) then { + [] call FUNC(initIsSpeaking); +}; if (!hasInterface) exitWith {}; @@ -24,4 +26,6 @@ GVAR(ShowNamesTime) = -10; // Draw handle -addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}]; +if (QGVAR(showPlayerNames) > 0 || QGVAR(showVehicleCrewInfo)) then { + addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}]; +}; diff --git a/addons/nametags/functions/fnc_moduleNameTags.sqf b/addons/nametags/functions/fnc_moduleNameTags.sqf index 1bbd4d8efb..0bee0e1a9c 100644 --- a/addons/nametags/functions/fnc_moduleNameTags.sqf +++ b/addons/nametags/functions/fnc_moduleNameTags.sqf @@ -20,9 +20,10 @@ if !(_activated) exitWith {}; GVAR(Module) = true; +[_logic, QGVAR(showPlayerNames), "showPlayerNames" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(PlayerNamesViewDistance), "PlayerNamesViewDistance" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(ShowNamesForAI), "ShowNamesForAI" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(showVehicleCrewInfo), "showVehicleCrewInfo" ] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(showCursorTagForVehicles), "showCursorTagForVehicles" ] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(showCursorTagForVehicles), "showCursorTagForVehicles" ] call EFUNC(common,readSettingFromModule); diag_log text "[ACE]: NameTags Module Initialized."; diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index ef94140510..74b8372dc6 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -161,31 +161,31 @@ Moduł ten pozwala dostosować ustawienia i zasięg wyświetlania imion. - + Disabled Wyłączone - + Enabled Włączone - + Only Cursor Tylko pod kursorem - + Only On Keypress Tylko po wciśnięciu klawisza - - Only Cursor and KeyPress + + Only Cursor and Keypress Tylko pod kursorem i po wciśnięciu klawisza - + Use Nametag settings Użyj ustawień imion - + Always Show All Zawsze pokazuj wszystkie From 446ad378caba65feee37e3faceb9c264c03c163a Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 14 May 2015 23:27:41 +0200 Subject: [PATCH 011/252] Fixed variable incosistency, string added for new module option --- addons/nametags/ACE_Settings.hpp | 4 ++-- addons/nametags/CfgVehicles.hpp | 2 +- addons/nametags/functions/fnc_moduleNameTags.sqf | 4 ++-- addons/nametags/stringtable.xml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/nametags/ACE_Settings.hpp b/addons/nametags/ACE_Settings.hpp index 3aecd650b4..47d5d00636 100644 --- a/addons/nametags/ACE_Settings.hpp +++ b/addons/nametags/ACE_Settings.hpp @@ -44,12 +44,12 @@ class ACE_Settings { description = "$STR_ACE_NameTags_ShowSoundWaves_Desc"; values[] = {"$STR_ACE_Common_Disabled", "$STR_ACE_Common_NameTagSettings", "$STR_ACE_Common_AlwaysShowAll"}; }; - class GVAR(PlayerNamesViewDistance) { + class GVAR(playerNamesViewDistance) { value = 5; typeName = "SCALAR"; isClientSettable = 0; }; - class GVAR(PlayerNamesMaxAlpha) { + class GVAR(playerNamesMaxAlpha) { value = 0.8; typeName = "SCALAR"; isClientSettable = 0; diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index ad93cc1c27..f7d9a78429 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -41,7 +41,7 @@ class CfgVehicles { }; }; }; - class PlayerNamesViewDistance { + class playerNamesViewDistance { displayName = "$STR_ACE_NameTags_PlayerNamesViewDistance_DisplayName"; description = "$STR_ACE_NameTags_PlayerNamesViewDistance_Description"; typeName = "NUMBER"; diff --git a/addons/nametags/functions/fnc_moduleNameTags.sqf b/addons/nametags/functions/fnc_moduleNameTags.sqf index 0bee0e1a9c..a1d652850d 100644 --- a/addons/nametags/functions/fnc_moduleNameTags.sqf +++ b/addons/nametags/functions/fnc_moduleNameTags.sqf @@ -21,9 +21,9 @@ if !(_activated) exitWith {}; GVAR(Module) = true; [_logic, QGVAR(showPlayerNames), "showPlayerNames" ] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(PlayerNamesViewDistance), "PlayerNamesViewDistance" ] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(playerNamesViewDistance), "playerNamesViewDistance" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(ShowNamesForAI), "ShowNamesForAI" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(showVehicleCrewInfo), "showVehicleCrewInfo" ] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(showCursorTagForVehicles), "showCursorTagForVehicles" ] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(showCursorTagForVehicles), "showCursorTagForVehicles" ] call EFUNC(common,readSettingFromModule); diag_log text "[ACE]: NameTags Module Initialized."; diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 74b8372dc6..a1c8e4b0c0 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -190,7 +190,7 @@ Zawsze pokazuj wszystkie - + Show player names and its activation. Default: Enabled Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -> ACE3. From d7b617f49ebb9c0f31a8180e677a5021ed594a4d Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 14 May 2015 23:33:35 +0200 Subject: [PATCH 012/252] Stringtables fixed, variable macro fixed --- addons/nametags/ACE_Settings.hpp | 2 +- addons/nametags/XEH_postInit.sqf | 4 ++-- addons/nametags/stringtable.xml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/nametags/ACE_Settings.hpp b/addons/nametags/ACE_Settings.hpp index 47d5d00636..56d8556cf8 100644 --- a/addons/nametags/ACE_Settings.hpp +++ b/addons/nametags/ACE_Settings.hpp @@ -42,7 +42,7 @@ class ACE_Settings { isClientSettable = 1; displayName = "$STR_ACE_NameTags_ShowSoundWaves"; description = "$STR_ACE_NameTags_ShowSoundWaves_Desc"; - values[] = {"$STR_ACE_Common_Disabled", "$STR_ACE_Common_NameTagSettings", "$STR_ACE_Common_AlwaysShowAll"}; + values[] = {"$STR_ACE_NameTags_Disabled", "$STR_ACE_NameTags_NameTagSettings", "$STR_ACE_NameTags_AlwaysShowAll"}; }; class GVAR(playerNamesViewDistance) { value = 5; diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index 1b649ac8a6..c314a02bad 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -1,7 +1,7 @@ // by commy2 and esteldunedain #include "script_component.hpp" -if (QGVAR(showPlayerNames) > 0) then { +if (GVAR(showPlayerNames) > 0) then { [] call FUNC(initIsSpeaking); }; @@ -26,6 +26,6 @@ GVAR(ShowNamesTime) = -10; // Draw handle -if (QGVAR(showPlayerNames) > 0 || QGVAR(showVehicleCrewInfo)) then { +if (GVAR(showPlayerNames) > 0 || GVAR(showVehicleCrewInfo)) then { addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}]; }; diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index a1c8e4b0c0..e5bc4e9e46 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -190,7 +190,7 @@ Zawsze pokazuj wszystkie - Show player names and its activation. Default: Enabled + Show player names and set their activation. Default: Enabled Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -> ACE3. From 22c5c03f6f8b4f000c11feb870d8fd082d588ed8 Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 15 May 2015 00:04:20 +0200 Subject: [PATCH 013/252] Removed redundant defaultValue and checks --- addons/nametags/CfgVehicles.hpp | 1 - addons/nametags/XEH_postInit.sqf | 6 ++---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index f7d9a78429..684ded21c9 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -16,7 +16,6 @@ class CfgVehicles { displayName = "$STR_ACE_NameTags_ShowPlayerNames"; description = "$STR_ACE_NameTags_ShowPlayerNames_Desc"; typeName = "SCALAR"; - defaultValue = 1; class values { class Disabled { name = "$STR_ACE_NameTags_Disabled"; diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index c314a02bad..d1bd3e932c 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -1,9 +1,7 @@ // by commy2 and esteldunedain #include "script_component.hpp" -if (GVAR(showPlayerNames) > 0) then { - [] call FUNC(initIsSpeaking); -}; +[] call FUNC(initIsSpeaking); if (!hasInterface) exitWith {}; @@ -26,6 +24,6 @@ GVAR(ShowNamesTime) = -10; // Draw handle -if (GVAR(showPlayerNames) > 0 || GVAR(showVehicleCrewInfo)) then { +if (GVAR(showPlayerNames) > 0) then { addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}]; }; From 62d7ea0b03ab2169ce6e67549ea0b4f08b13896d Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 15 May 2015 16:31:06 +0200 Subject: [PATCH 014/252] Fixed module entry not taking effect --- addons/nametags/CfgVehicles.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index 684ded21c9..5d430fdf93 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -15,7 +15,7 @@ class CfgVehicles { class showPlayerNames { displayName = "$STR_ACE_NameTags_ShowPlayerNames"; description = "$STR_ACE_NameTags_ShowPlayerNames_Desc"; - typeName = "SCALAR"; + typeName = "NUMBER"; class values { class Disabled { name = "$STR_ACE_NameTags_Disabled"; From a7cd36bc3e200e03f5a08ae04c256c0c3d524d87 Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 15 May 2015 16:52:27 +0200 Subject: [PATCH 015/252] Added Force setting --- addons/nametags/ACE_Settings.hpp | 6 ++++++ addons/nametags/CfgVehicles.hpp | 6 ++++++ addons/nametags/functions/fnc_moduleNameTags.sqf | 6 +++++- addons/nametags/stringtable.xml | 6 ++++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/addons/nametags/ACE_Settings.hpp b/addons/nametags/ACE_Settings.hpp index 56d8556cf8..41c30b1da4 100644 --- a/addons/nametags/ACE_Settings.hpp +++ b/addons/nametags/ACE_Settings.hpp @@ -13,6 +13,12 @@ class ACE_Settings { description = "$STR_ACE_NameTags_ShowPlayerNames_Desc"; values[] = {"$STR_ACE_NameTags_Disabled", "$STR_ACE_NameTags_Enabled", "$STR_ACE_NameTags_OnlyCursor", "$STR_ACE_NameTags_OnlyOnKeypress", "$STR_ACE_NameTags_OnlyCursorAndKeypress"}; }; + class GVAR(showPlayerNamesForce) { + value = 0; + typeName = "BOOL"; + displayName = "$STR_ACE_NameTags_ShowPlayerNamesForce"; + description = "$STR_ACE_NameTags_ShowPlayerNamesForce_Desc"; + }; class GVAR(showPlayerRanks) { value = 1; typeName = "BOOL"; diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index 5d430fdf93..13e3ccc6fd 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -40,6 +40,12 @@ class CfgVehicles { }; }; }; + class showPlayerNamesForce { + displayName = "$STR_ACE_NameTags_ShowPlayerNamesForce"; + description = "$STR_ACE_NameTags_ShowPlayerNamesForce_Desc"; + typeName = "BOOL"; + defaultValue = 0; + }; class playerNamesViewDistance { displayName = "$STR_ACE_NameTags_PlayerNamesViewDistance_DisplayName"; description = "$STR_ACE_NameTags_PlayerNamesViewDistance_Description"; diff --git a/addons/nametags/functions/fnc_moduleNameTags.sqf b/addons/nametags/functions/fnc_moduleNameTags.sqf index a1d652850d..bc9f6f909f 100644 --- a/addons/nametags/functions/fnc_moduleNameTags.sqf +++ b/addons/nametags/functions/fnc_moduleNameTags.sqf @@ -20,10 +20,14 @@ if !(_activated) exitWith {}; GVAR(Module) = true; -[_logic, QGVAR(showPlayerNames), "showPlayerNames" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(playerNamesViewDistance), "playerNamesViewDistance" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(ShowNamesForAI), "ShowNamesForAI" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(showVehicleCrewInfo), "showVehicleCrewInfo" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(showCursorTagForVehicles), "showCursorTagForVehicles" ] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(showPlayerNamesForce), "showPlayerNamesForce" ] call EFUNC(common,readSettingFromModule); + +if (GVAR(showPlayerNamesForce)) then { + [_logic, QGVAR(showPlayerNames), "showPlayerNames" ] call EFUNC(common,readSettingFromModule); +}; diag_log text "[ACE]: NameTags Module Initialized."; diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index e5bc4e9e46..5e20f348a8 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -25,6 +25,12 @@ Mostra i nomi dei giocatori Показывать имена игроков (включить имена) + + Force show player names setting + + + Force name tags option, or by default allows players to choose it on their own. Default: Do Not Force + Show player name only on cursor (requires player names) Pokaż imiona graczy tylko pod kursorem (wymagana opcja Pokaż imiona graczy) From 2edbacd15b1af1e0889f41b86e3c6cc6dd4707ac Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 15 May 2015 17:16:55 +0200 Subject: [PATCH 016/252] Added SettingChanged EH and proper handling --- addons/nametags/XEH_postInit.sqf | 20 +++++++++++++++++-- .../nametags/functions/fnc_moduleNameTags.sqf | 2 +- addons/nametags/stringtable.xml | 2 +- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index d1bd3e932c..73dbd955a8 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -23,7 +23,23 @@ GVAR(ShowNamesTime) = -10; [29, [false, false, false]], false] call cba_fnc_addKeybind; //LeftControl Key -// Draw handle +// Draw handle on start if set if (GVAR(showPlayerNames) > 0) then { - addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}]; + GVAR(drawHandler) = addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}]; }; + +// Set the EH which waits for a setting to be changed, so that the effect is shown immediately +if (!GVAR(showPlayerNamesForce)) then { + ["SettingChanged", { + PARAMS_2(_name,_value) + if (_name == QGVAR(showPlayerNames)) then { + if ((GVAR(showPlayerNames) > 0) && (_value == 0)) then { + removeMissionEventHandler ["Draw3D", GVAR(drawHandler)]; + GVAR(drawHandler) = nil; + }; + if ((GVAR(showPlayerNames) == 0) && (_value > 0)) then { + GVAR(drawHandler) = addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}]; + }; + }; + }] call ace_common_fnc_addEventHandler; +}; \ No newline at end of file diff --git a/addons/nametags/functions/fnc_moduleNameTags.sqf b/addons/nametags/functions/fnc_moduleNameTags.sqf index bc9f6f909f..12f03e61ca 100644 --- a/addons/nametags/functions/fnc_moduleNameTags.sqf +++ b/addons/nametags/functions/fnc_moduleNameTags.sqf @@ -30,4 +30,4 @@ if (GVAR(showPlayerNamesForce)) then { [_logic, QGVAR(showPlayerNames), "showPlayerNames" ] call EFUNC(common,readSettingFromModule); }; -diag_log text "[ACE]: NameTags Module Initialized."; +diag_log format ["[ACE]: NameTags Module Initialized. Forced Name Tags Setting: %1",GVAR(showPlayerNamesForce)]; diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 5e20f348a8..df0f42ec79 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -26,7 +26,7 @@ Показывать имена игроков (включить имена) - Force show player names setting + Force names setting Force name tags option, or by default allows players to choose it on their own. Default: Do Not Force From 1ccc7e1e0ace8f2bc6606bfb56e10d3a96d39285 Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 15 May 2015 17:44:58 +0200 Subject: [PATCH 017/252] CBA Macro for addEventHandler --- addons/nametags/XEH_postInit.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index 73dbd955a8..b7a28b7f6c 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -41,5 +41,5 @@ if (!GVAR(showPlayerNamesForce)) then { GVAR(drawHandler) = addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}]; }; }; - }] call ace_common_fnc_addEventHandler; -}; \ No newline at end of file + }] call EFUNC(common,addEventHandler); +}; From 02b9df1bc31e54bee23ac9a0d2825e0ed723b56a Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 15 May 2015 18:13:10 +0200 Subject: [PATCH 018/252] Fixed client setting Draw3D installation/removal handling --- addons/nametags/XEH_postInit.sqf | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index b7a28b7f6c..1cf8b6b800 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -33,12 +33,13 @@ if (!GVAR(showPlayerNamesForce)) then { ["SettingChanged", { PARAMS_2(_name,_value) if (_name == QGVAR(showPlayerNames)) then { - if ((GVAR(showPlayerNames) > 0) && (_value == 0)) then { - removeMissionEventHandler ["Draw3D", GVAR(drawHandler)]; - GVAR(drawHandler) = nil; - }; - if ((GVAR(showPlayerNames) == 0) && (_value > 0)) then { + if (isNil(QGVAR(drawHandler)) && {_value > 0}) then { GVAR(drawHandler) = addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}]; + } else { + if (_value == 0) then { + removeMissionEventHandler ["Draw3D", GVAR(drawHandler)]; + GVAR(drawHandler) = nil; + }; }; }; }] call EFUNC(common,addEventHandler); From 7c96c12bd59574b81e231d605f5cd86de700bdc5 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 16 May 2015 00:07:38 +0200 Subject: [PATCH 019/252] Made forced settings through module in original entry, Reworked Draw3D handling, Some strings cleanup --- addons/nametags/ACE_Settings.hpp | 8 +---- addons/nametags/CfgVehicles.hpp | 32 +++++++++--------- addons/nametags/XEH_postInit.sqf | 33 +++++++------------ addons/nametags/XEH_preInit.sqf | 1 + .../nametags/functions/fnc_moduleNameTags.sqf | 8 ++--- .../nametags/functions/fnc_updateSettings.sqf | 26 +++++++++++++++ addons/nametags/stringtable.xml | 29 ++++++++-------- 7 files changed, 74 insertions(+), 63 deletions(-) create mode 100644 addons/nametags/functions/fnc_updateSettings.sqf diff --git a/addons/nametags/ACE_Settings.hpp b/addons/nametags/ACE_Settings.hpp index 41c30b1da4..72ae5c27df 100644 --- a/addons/nametags/ACE_Settings.hpp +++ b/addons/nametags/ACE_Settings.hpp @@ -11,13 +11,7 @@ class ACE_Settings { isClientSettable = 1; displayName = "$STR_ACE_NameTags_ShowPlayerNames"; description = "$STR_ACE_NameTags_ShowPlayerNames_Desc"; - values[] = {"$STR_ACE_NameTags_Disabled", "$STR_ACE_NameTags_Enabled", "$STR_ACE_NameTags_OnlyCursor", "$STR_ACE_NameTags_OnlyOnKeypress", "$STR_ACE_NameTags_OnlyCursorAndKeypress"}; - }; - class GVAR(showPlayerNamesForce) { - value = 0; - typeName = "BOOL"; - displayName = "$STR_ACE_NameTags_ShowPlayerNamesForce"; - description = "$STR_ACE_NameTags_ShowPlayerNamesForce_Desc"; + values[] = {"$STR_ACE_NameTags_Disabled", "$STR_ACE_NameTags_Enabled", "$STR_ACE_NameTags_OnlyCursor", "$STR_ACE_NameTags_OnlyKeypress", "$STR_ACE_NameTags_OnlyCursorAndKeypress"}; }; class GVAR(showPlayerRanks) { value = 1; diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index 13e3ccc6fd..7c2661efbe 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -17,35 +17,33 @@ class CfgVehicles { description = "$STR_ACE_NameTags_ShowPlayerNames_Desc"; typeName = "NUMBER"; class values { - class Disabled { - name = "$STR_ACE_NameTags_Disabled"; + class DoNotForce { + default = 1; + name = "$STR_ACE_NameTags_DoNotForce"; + value = -1; + }; + class ForceHide { + name = "$STR_ACE_NameTags_ForceHide"; value = 0; }; - class Enabled { - default = 1; - name = "$STR_ACE_NameTags_Enabled"; + class ForceShow { + name = "$STR_ACE_NameTags_ForceShow"; value = 1; }; - class OnlyCursor { - name = "$STR_ACE_NameTags_OnlyCursor"; + class ForceShowOnlyCursor { + name = "$STR_ACE_NameTags_ForceShowOnlyCursor"; value = 2; }; - class OnlyOnKeypress { - name = "$STR_ACE_NameTags_OnlyOnKeypress"; + class ForceShowOnlyKeypress { + name = "$STR_ACE_NameTags_ForceShowOnlyKeypress"; value = 3; }; - class OnlyCursorAndKeypress { - name = "$STR_ACE_NameTags_OnlyCursorAndKeypress"; + class ForceShowOnlyCursorAndKeypress { + name = "$STR_ACE_NameTags_ForceShowOnlyCursorAndKeypress"; value = 4; }; }; }; - class showPlayerNamesForce { - displayName = "$STR_ACE_NameTags_ShowPlayerNamesForce"; - description = "$STR_ACE_NameTags_ShowPlayerNamesForce_Desc"; - typeName = "BOOL"; - defaultValue = 0; - }; class playerNamesViewDistance { displayName = "$STR_ACE_NameTags_PlayerNamesViewDistance_DisplayName"; description = "$STR_ACE_NameTags_PlayerNamesViewDistance_Description"; diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index 1cf8b6b800..a9ac8195dd 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -5,7 +5,7 @@ if (!hasInterface) exitWith {}; -GVAR(ShowNamesTime) = -10; +GVAR(showNamesTime) = -10; // Add keybinds ["ACE3 Common", QGVAR(showNameTags), localize "STR_ACE_NameTags_ShowNames", @@ -14,7 +14,7 @@ GVAR(ShowNamesTime) = -10; if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; // Statement - GVAR(ShowNamesTime) = time; + GVAR(showNamesTime) = time; if (call FUNC(canShow)) then{ call FUNC(doShow); }; // Return false so it doesn't block other actions false @@ -23,24 +23,13 @@ GVAR(ShowNamesTime) = -10; [29, [false, false, false]], false] call cba_fnc_addKeybind; //LeftControl Key -// Draw handle on start if set -if (GVAR(showPlayerNames) > 0) then { - GVAR(drawHandler) = addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}]; -}; +// Draw handle +call FUNC(updateSettings); -// Set the EH which waits for a setting to be changed, so that the effect is shown immediately -if (!GVAR(showPlayerNamesForce)) then { - ["SettingChanged", { - PARAMS_2(_name,_value) - if (_name == QGVAR(showPlayerNames)) then { - if (isNil(QGVAR(drawHandler)) && {_value > 0}) then { - GVAR(drawHandler) = addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}]; - } else { - if (_value == 0) then { - removeMissionEventHandler ["Draw3D", GVAR(drawHandler)]; - GVAR(drawHandler) = nil; - }; - }; - }; - }] call EFUNC(common,addEventHandler); -}; +// Change settings accordingly when they are changed +["SettingChanged", { + PARAMS_1(_name); + if (_name == QGVAR(showPlayerNames)) then { + call FUNC(updateSettings); + }; +}] call EFUNC(common,addEventHandler); diff --git a/addons/nametags/XEH_preInit.sqf b/addons/nametags/XEH_preInit.sqf index f3c9a97cba..51b926cbb3 100644 --- a/addons/nametags/XEH_preInit.sqf +++ b/addons/nametags/XEH_preInit.sqf @@ -10,5 +10,6 @@ PREP(initIsSpeaking); PREP(moduleNameTags); PREP(onDraw3d); PREP(setText); +PREP(updateSettings); ADDON = true; diff --git a/addons/nametags/functions/fnc_moduleNameTags.sqf b/addons/nametags/functions/fnc_moduleNameTags.sqf index 12f03e61ca..7373d85de1 100644 --- a/addons/nametags/functions/fnc_moduleNameTags.sqf +++ b/addons/nametags/functions/fnc_moduleNameTags.sqf @@ -21,13 +21,13 @@ if !(_activated) exitWith {}; GVAR(Module) = true; [_logic, QGVAR(playerNamesViewDistance), "playerNamesViewDistance" ] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(ShowNamesForAI), "ShowNamesForAI" ] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(showNamesForAI), "showNamesForAI" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(showVehicleCrewInfo), "showVehicleCrewInfo" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(showCursorTagForVehicles), "showCursorTagForVehicles" ] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(showPlayerNamesForce), "showPlayerNamesForce" ] call EFUNC(common,readSettingFromModule); -if (GVAR(showPlayerNamesForce)) then { +// Do Not Force - read module setting only non-default is set due to using SCALAR +if ((_logic getVariable "showPlayerNames") != -1) then { [_logic, QGVAR(showPlayerNames), "showPlayerNames" ] call EFUNC(common,readSettingFromModule); }; -diag_log format ["[ACE]: NameTags Module Initialized. Forced Name Tags Setting: %1",GVAR(showPlayerNamesForce)]; +diag_log text "[ACE]: NameTags Module Initialized."; diff --git a/addons/nametags/functions/fnc_updateSettings.sqf b/addons/nametags/functions/fnc_updateSettings.sqf new file mode 100644 index 0000000000..237eb438fd --- /dev/null +++ b/addons/nametags/functions/fnc_updateSettings.sqf @@ -0,0 +1,26 @@ +/* + * Author: Jonpas + * Dynamically adds and removes Draw3D based on settings on run-time. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ace_nametags_fnc_updateSettings + * + * Public: No + */ + +#include "script_component.hpp" + +if (isNil QGVAR(drawHandler) && {GVAR(showPlayerNames) != 0}) then { + GVAR(drawHandler) = addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}]; +} else { + if (!isNil QGVAR(drawHandler) && {GVAR(showPlayerNames) == 0}) then { + removeMissionEventHandler ["Draw3D", GVAR(drawHandler)]; + GVAR(drawHandler) = nil; + }; +}; diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index df0f42ec79..7aa531fc28 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -25,12 +25,6 @@ Mostra i nomi dei giocatori Показывать имена игроков (включить имена) - - Force names setting - - - Force name tags option, or by default allows players to choose it on their own. Default: Do Not Force - Show player name only on cursor (requires player names) Pokaż imiona graczy tylko pod kursorem (wymagana opcja Pokaż imiona graczy) @@ -144,7 +138,7 @@ Wymuś ukrycie - Force show + Force Show Wymuś wyświetlanie @@ -164,7 +158,7 @@ Pokazuj imię dowódcy pojazdu nad pojazdem (tylko jeżeli klient ma włączone imiona graczy). Domyślnie: Nie - + This module allows you to customize settings and range of Name Tags. Moduł ten pozwala dostosować ustawienia i zasięg wyświetlania imion. @@ -176,17 +170,26 @@ Włączone - Only Cursor + Only on Cursor Tylko pod kursorem - - Only On Keypress + + Only on Keypress Tylko po wciśnięciu klawisza - Only Cursor and Keypress + Only on Cursor and Keypress Tylko pod kursorem i po wciśnięciu klawisza + + Force Show Only on Cursor + + + Force Show Only on Keypress + + + Force Show Only on Cursor and Keypress + Use Nametag settings Użyj ustawień imion @@ -200,7 +203,7 @@ Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -> ACE3. - + Effect of sound waves above the heads of speaking players after holding the PTT key. This option works with TFAR and ACRE2. Opcja ta pozwala dostosować sposób wyświetlania efektu fal dźwiękowych nad głowami mówiących graczy, wyświetlanych po przytrzymaniu klawisza PTT. Opcja ta współpracuje z TFAR oraz ACRE2. From bffe58efd6a331ca423429e318db4dd5e6665185 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 16 May 2015 00:22:23 +0200 Subject: [PATCH 020/252] Name Tags cleanup --- addons/nametags/functions/common.hpp | 12 ++--- addons/nametags/functions/fnc_canShow.sqf | 29 +++++----- addons/nametags/functions/fnc_doShow.sqf | 26 ++++----- .../functions/fnc_drawNameTagIcon.sqf | 14 +++-- .../nametags/functions/fnc_getVehicleData.sqf | 53 ++++++++----------- .../nametags/functions/fnc_initIsSpeaking.sqf | 6 +-- addons/nametags/functions/fnc_onDraw3d.sqf | 15 ++++++ addons/nametags/functions/fnc_setText.sqf | 33 ++++++------ .../nametags/functions/fnc_updateSettings.sqf | 1 - 9 files changed, 100 insertions(+), 89 deletions(-) diff --git a/addons/nametags/functions/common.hpp b/addons/nametags/functions/common.hpp index caa7a3e982..6aeb24fc5a 100644 --- a/addons/nametags/functions/common.hpp +++ b/addons/nametags/functions/common.hpp @@ -1,12 +1,8 @@ /* - Author: aeroson - - Description: - Images, index in images and order of roles. - Defined number also implies order, lower number shows more on top of the list. -*/ - -#include "script_component.hpp" + * Author: aeroson + * Images, index in images and order of roles. + * Defined number also implies order, lower number shows more on top of the list. + */ #define PILOT 0 #define DRIVER 1 diff --git a/addons/nametags/functions/fnc_canShow.sqf b/addons/nametags/functions/fnc_canShow.sqf index 0e187fee0f..b53f50c93e 100644 --- a/addons/nametags/functions/fnc_canShow.sqf +++ b/addons/nametags/functions/fnc_canShow.sqf @@ -1,19 +1,22 @@ /* - Author: aeroson - - Description: - Might be called several times a second - - Parameters: - None - - Returns: - true if CrewInfo can be shown, false otherwise -*/ - + * Author: aeroson + * Checks if crew info can be shown. + * Might be called several times a second. + * + * Arguments: + * None + * + * Return Value: + * Can show Crew Info + * + * Example: + * call ace_nametags_fnc_doShow + * + * Public: No + */ #include "script_component.hpp" -private["_player"]; +private ["_player"]; _player = ACE_player; diff --git a/addons/nametags/functions/fnc_doShow.sqf b/addons/nametags/functions/fnc_doShow.sqf index 16a6329347..1b7323921f 100644 --- a/addons/nametags/functions/fnc_doShow.sqf +++ b/addons/nametags/functions/fnc_doShow.sqf @@ -1,16 +1,18 @@ /* - Author: aeroson - - Description: - Shows the actual text and sets text the crew info - - Parameters: - None - - Returns: - Nothing -*/ - + * Author: aeroson + * Shows the actual text and sets text the crew info. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ace_nametags_fnc_doShow + * + * Public: No + */ #include "script_component.hpp" #include "common.hpp"; diff --git a/addons/nametags/functions/fnc_drawNameTagIcon.sqf b/addons/nametags/functions/fnc_drawNameTagIcon.sqf index 6a7db7d5ac..58f5c8e014 100644 --- a/addons/nametags/functions/fnc_drawNameTagIcon.sqf +++ b/addons/nametags/functions/fnc_drawNameTagIcon.sqf @@ -1,17 +1,21 @@ /* * Author: commy2, esteldunedain - * * Draw the nametag and rank icon. * - * Argument: + * Arguments: * 0: Unit (Player) * 1: Target - * 2: alpha (Number) - * 4: Height offset (Number) + * 2: Alpha + * 4: Height offset * 5: Draw Type * * Return value: - * None. + * None + * + * Example: + * [ACE_player, _target, _alpha, _distance * 0.026, _icon] call ace_nametags_fnc_drawNameTagIcon + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/nametags/functions/fnc_getVehicleData.sqf b/addons/nametags/functions/fnc_getVehicleData.sqf index 1538c345a1..6d83b0f573 100644 --- a/addons/nametags/functions/fnc_getVehicleData.sqf +++ b/addons/nametags/functions/fnc_getVehicleData.sqf @@ -1,46 +1,38 @@ /* - Author: aeroson - - Description: - Gathers and caches data needed by AGM_CrewInfo_fnc_doShow - What really does make difference for the engine is simulation of CfgAmmo - Priority of roles is: driver/pilot, gunner, copilot, commander, ffv, cargo - - Parameters: - None - - Returns: - [ - Is vehicle inherited from Air ? - Array categorizing each vehicle's turret - ] -*/ - + * Author: aeroson + * Gathers and caches data needed by AGM_CrewInfo_fnc_doShow. + * What really does make difference for the engine is simulation of CfgAmmo. + * Priority of roles is: driver/pilot, gunner, copilot, commander, FFV, cargo. + * + * Arguments: + * None + * + * Return Value: + * Data + * 0: Vehicle inherits from Air + * 1: Categorized vehicle's turrets + * + * Example: + * call ace_nametags_fnc_updateSettings + * + * Public: No + */ #include "script_component.hpp" #include "common.hpp"; +private ["_type", "_varName", "_data", "_isAir", "_config", "_fnc_addTurret", "_fnc_addTurretUnit"]; -private ["_type", "_varName", "_data"]; - -_type = _this select 0; +PARAMS_1(_type); _varName = format ["ACE_CrewInfo_Cache_%1", _type]; _data = + (uiNamespace getVariable _varName); -if (!isNil "_data") exitWith { - _data -}; +if (!isNil "_data") exitWith {_data}; _data = []; - - - -private ["_isAir", "_config", "_fnc_addTurret", "_fnc_addTurretUnit"]; - _isAir = _type isKindOf "Air"; _fnc_addTurretUnit = { - private ["_config", "_path", "_role", "_simulationEmpty", "_simulationLaserDesignate", "_simulationOther", "_magazine", "_ammo", "_simulation"]; _config = _this select 0; @@ -83,7 +75,6 @@ _fnc_addTurretUnit = { }; _data pushBack [_path, _role]; - }; @@ -108,9 +99,7 @@ _fnc_addTurret = { } else { _offset = _offset + 1; }; - }; - }; diff --git a/addons/nametags/functions/fnc_initIsSpeaking.sqf b/addons/nametags/functions/fnc_initIsSpeaking.sqf index c6087541a8..897d223930 100644 --- a/addons/nametags/functions/fnc_initIsSpeaking.sqf +++ b/addons/nametags/functions/fnc_initIsSpeaking.sqf @@ -4,13 +4,13 @@ * Compatiblity with TFR/ACRE and Arma's VON * * Arguments: - * NONE + * None * * Return Value: - * NONE + * None * * Example: - * [] call ACE_nametags_fnc_initIsSpeaking + * [] call ace_nametags_fnc_initIsSpeaking * * Public: No */ diff --git a/addons/nametags/functions/fnc_onDraw3d.sqf b/addons/nametags/functions/fnc_onDraw3d.sqf index 9efc70aeb9..e88f606c05 100644 --- a/addons/nametags/functions/fnc_onDraw3d.sqf +++ b/addons/nametags/functions/fnc_onDraw3d.sqf @@ -1,3 +1,18 @@ +/* + * Author: + * Draws names and icons. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ace_nametags_fnc_onDraw3d + * + * Public: No + */ #include "script_component.hpp" private ["_onKeyPressAlphaMax", "_defaultIcon", "_distance", "_alpha", "_icon", "_targets", "_pos2", "_vecy", "_relPos", "_projDist", "_pos", "_target"]; diff --git a/addons/nametags/functions/fnc_setText.sqf b/addons/nametags/functions/fnc_setText.sqf index e7d1b748b1..33112c31d0 100644 --- a/addons/nametags/functions/fnc_setText.sqf +++ b/addons/nametags/functions/fnc_setText.sqf @@ -1,25 +1,28 @@ -/* - Author: aeroson - - Description: - Sets the text on the dialog - - Parameters: - None - - Returns: - Nothing -*/ - +/* + * Author: aeroson + * Sets the text on the dialog. + * + * Arguments: + * 0: Text + * + * Return Value: + * None + * + * Example: + * call ace_nametags_fnc_setText + * + * Public: No + */ #include "script_component.hpp" #define TextIDC 11123 -private["_text", "_ctrl"]; +PARAMS_1(_text); + +private["_ctrl"]; disableSerialization; -_text = _this select 0; _ctrl = (uiNamespace getVariable QGVAR(dialog)) displayCtrl TextIDC; _ctrl ctrlSetStructuredText parseText _text; _ctrl ctrlCommit 0; diff --git a/addons/nametags/functions/fnc_updateSettings.sqf b/addons/nametags/functions/fnc_updateSettings.sqf index 237eb438fd..76110b4f79 100644 --- a/addons/nametags/functions/fnc_updateSettings.sqf +++ b/addons/nametags/functions/fnc_updateSettings.sqf @@ -13,7 +13,6 @@ * * Public: No */ - #include "script_component.hpp" if (isNil QGVAR(drawHandler) && {GVAR(showPlayerNames) != 0}) then { From cccc741a16f3d3d8ef2aae8e359b7a36026058af Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 16 May 2015 00:54:01 +0200 Subject: [PATCH 021/252] #1123 - Added CheckPBOs to ACE_Settings --- addons/common/CfgVehicles.hpp | 1 + addons/common/config.cpp | 16 ++++++++++++++++ addons/common/functions/fnc_moduleCheckPBOs.sqf | 10 +++++++--- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp index 1adf622494..ebc65c7394 100644 --- a/addons/common/CfgVehicles.hpp +++ b/addons/common/CfgVehicles.hpp @@ -41,6 +41,7 @@ class CfgVehicles { class Action { displayName = "$STR_ACE_Common_CheckPBO_Action_DisplayName"; description = "$STR_ACE_Common_CheckPBO_Action_Description"; + typeName = "NUMBER"; class values { class WarnOnce { default = 1; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 3f1e5a6308..0e8286299a 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -88,6 +88,22 @@ class ACE_Settings { value = 0; typeName = "BOOL"; }; + class GVAR(checkPBOsAction) { + value = 0; + typeName = "SCALAR"; + isClientSettable = 0; + values[] = {"$STR_ACE_Common_CheckPBO_Action_WarnOnce", "$STR_ACE_Common_CheckPBO_Action_WarnPerm", "$STR_ACE_Common_CheckPBO_Action_Kick"}; + }; + class GVAR(checkPBOsCheckAll) { + value = 0; + typeName = "BOOL"; + isClientSettable = 0; + }; + class GVAR(checkPBOsWhitelist) { + value = "[]"; + typeName = "STRING"; + isClientSettable = 0; + }; /*class GVAR(enableNumberHotkeys) { value = 1; typeName = "BOOL"; diff --git a/addons/common/functions/fnc_moduleCheckPBOs.sqf b/addons/common/functions/fnc_moduleCheckPBOs.sqf index 05e1037028..aaea9420b7 100644 --- a/addons/common/functions/fnc_moduleCheckPBOs.sqf +++ b/addons/common/functions/fnc_moduleCheckPBOs.sqf @@ -17,9 +17,13 @@ private ["_mode", "_checkAll", "_whitelist"]; if !(_activated) exitWith {}; -_mode = parseNumber (_logic getVariable "Action"); -_checkAll = _logic getVariable ["CheckAll", false]; -_whitelist = call compile (_logic getVariable ["Whitelist", "[]"]); +[_logic, QGVAR(checkPBOsAction), "Action" ] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(checkPBOsCheckAll), "CheckAll" ] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(checkPBOsWhitelist), "Whitelist" ] call EFUNC(common,readSettingFromModule); + +_mode = GVAR(checkPBOsAction); +_checkAll = GVAR(checkPBOsCheckAll); +_whitelist = call compile GVAR(checkPBOsWhitelist); if (isNil "_whitelist") then { _whitelist = []; From 1a468cb4fff081ac076b43f743e01df1f1a3394e Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 16 May 2015 01:06:29 +0200 Subject: [PATCH 022/252] Split common ACE_Settings.hpp from config.cpp, shortened sampleSetting --- addons/common/ACE_Settings.hpp | 75 +++++++++++++++++++++++++++++ addons/common/config.cpp | 87 +--------------------------------- 2 files changed, 76 insertions(+), 86 deletions(-) create mode 100644 addons/common/ACE_Settings.hpp diff --git a/addons/common/ACE_Settings.hpp b/addons/common/ACE_Settings.hpp new file mode 100644 index 0000000000..81d4a7b8ed --- /dev/null +++ b/addons/common/ACE_Settings.hpp @@ -0,0 +1,75 @@ +class ACE_Settings { + /* + * class GVAR(sampleSetting) { + * value = 1; // Value + * typeName = "SCALAR"; // Type (SCALAR, BOOL, STRING, ARRAY, COLOR) + * force = 0; // Force the setting? + * isClientSettable = 1; // Does it appear on the options menu? + * + * // The following settings only apply when isClientSettable == 1 + * displayName = "$STR_ACE_Common_SettingName"; // Stringtable entry with the setting name + * description = "$STR_ACE_Common_SettingDescription"; // Stringtable entry with the setting description + * + * // Only applies if typeName == "SCALAR"; + * values[] = {"Disabled", "Enabled", "Only Cursor", "Only On Keypress", "Only Cursor and KeyPress"}; // Stringtable entries that describe the options + * }; + */ + class GVAR(forceAllSettings) { + value = 0; + typeName = "BOOL"; + }; + class GVAR(checkPBOsAction) { + value = 0; + typeName = "SCALAR"; + isClientSettable = 0; + values[] = {"$STR_ACE_Common_CheckPBO_Action_WarnOnce", "$STR_ACE_Common_CheckPBO_Action_WarnPerm", "$STR_ACE_Common_CheckPBO_Action_Kick"}; + }; + class GVAR(checkPBOsCheckAll) { + value = 0; + typeName = "BOOL"; + isClientSettable = 0; + }; + class GVAR(checkPBOsWhitelist) { + value = "[]"; + typeName = "STRING"; + isClientSettable = 0; + }; + /*class GVAR(enableNumberHotkeys) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = "$STR_ACE_Common_EnableNumberHotkeys"; + };*/ + class GVAR(settingFeedbackIcons) { + value = 1; + typeName = "SCALAR"; + force = 0; + isClientSettable = 1; + displayName = "$STR_ACE_Common_SettingFeedbackIconsName"; + description = "$STR_ACE_Common_SettingFeedbackIconsDesc"; + values[] = {"$STR_ACE_Common_Hide", "$STR_ACE_Common_TopRightDown", "$STR_ACE_Common_TopRightLeft", "$STR_ACE_Common_TopLeftDown", "$STR_ACE_Common_TopLeftRight"}; + }; + class GVAR(SettingProgressBarLocation) { + value = 0; + typeName = "SCALAR"; + force = 0; + isClientSettable = 1; + displayName = "$STR_ACE_Common_SettingProgressbarLocationName"; + description = "$STR_ACE_Common_SettingProgressbarLocationDesc"; + values[] = {"$STR_ACE_Common_Top", "$STR_ACE_Common_Bottom"}; + }; + class GVAR(displayTextColor) { + value[] = {0, 0, 0, 0.1}; + typeName = "COLOR"; + isClientSettable = 1; + displayName = "$STR_ACE_Common_SettingDisplayTextColorName"; + description = "$STR_ACE_Common_SettingDisplayTextColorDesc"; + }; + class GVAR(displayTextFontColor) { + value[] = {1, 1, 1, 1}; + typeName = "COLOR"; + isClientSettable = 1; + displayName = "$STR_ACE_Common_SettingDisplayTextFontColorName"; + description = "$STR_ACE_Common_SettingDisplayTextFontColorDesc"; + }; +}; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 0e8286299a..190018831a 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -57,92 +57,7 @@ class ACE_Rsc_Control_Base { h = 0; }; -class ACE_Settings { - /* - *class GVAR(sampleSetting) { - * Value - * value = 1; - * - * Type (SCALAR, BOOL, STRING, ARRAY, COLOR) - * typeName = "SCALAR"; - * - * Force the setting? - * force = 0; - * - * Does it appear on the options menu? - * isClientSettable = 1; - * - * The following settings only apply when isClientSettable == 1 - * Stringtable entry with the setting name - * displayName = "$STR_ACE_Common_SettingName"; - * - * Stringtable entry with the setting description - * description = "$STR_ACE_Common_SettingDescription"; - * - * Stringtable entries that describe the options - * Only applies if typeName == "SCALAR"; - * values[] = {"Disabled", "Enabled", "Only Cursor", "Only On Keypress", "Only Cursor and KeyPress"}; - *}; - */ - class GVAR(forceAllSettings) { - value = 0; - typeName = "BOOL"; - }; - class GVAR(checkPBOsAction) { - value = 0; - typeName = "SCALAR"; - isClientSettable = 0; - values[] = {"$STR_ACE_Common_CheckPBO_Action_WarnOnce", "$STR_ACE_Common_CheckPBO_Action_WarnPerm", "$STR_ACE_Common_CheckPBO_Action_Kick"}; - }; - class GVAR(checkPBOsCheckAll) { - value = 0; - typeName = "BOOL"; - isClientSettable = 0; - }; - class GVAR(checkPBOsWhitelist) { - value = "[]"; - typeName = "STRING"; - isClientSettable = 0; - }; - /*class GVAR(enableNumberHotkeys) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = "$STR_ACE_Common_EnableNumberHotkeys"; - };*/ - class GVAR(settingFeedbackIcons) { - value = 1; - typeName = "SCALAR"; - force = 0; - isClientSettable = 1; - displayName = "$STR_ACE_Common_SettingFeedbackIconsName"; - description = "$STR_ACE_Common_SettingFeedbackIconsDesc"; - values[] = {"$STR_ACE_Common_Hide", "$STR_ACE_Common_TopRightDown", "$STR_ACE_Common_TopRightLeft", "$STR_ACE_Common_TopLeftDown", "$STR_ACE_Common_TopLeftRight"}; - }; - class GVAR(SettingProgressBarLocation) { - value = 0; - typeName = "SCALAR"; - force = 0; - isClientSettable = 1; - displayName = "$STR_ACE_Common_SettingProgressbarLocationName"; - description = "$STR_ACE_Common_SettingProgressbarLocationDesc"; - values[] = {"$STR_ACE_Common_Top", "$STR_ACE_Common_Bottom"}; - }; - class GVAR(displayTextColor) { - value[] = {0,0,0,0.1}; - typeName = "COLOR"; - isClientSettable = 1; - displayName = "$STR_ACE_Common_SettingDisplayTextColorName"; - description = "$STR_ACE_Common_SettingDisplayTextColorDesc"; - }; - class GVAR(displayTextFontColor) { - value[] = {1,1,1,1}; - typeName = "COLOR"; - isClientSettable = 1; - displayName = "$STR_ACE_Common_SettingDisplayTextFontColorName"; - description = "$STR_ACE_Common_SettingDisplayTextFontColorDesc"; - }; -}; +#include "ACE_Settings.hpp" #include "define.hpp" #include From c0c4414ec046556c9899489a37328d7d8f603613 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 16 May 2015 01:35:48 +0200 Subject: [PATCH 023/252] Name tags Draw3D variable names consistency --- addons/nametags/functions/fnc_onDraw3d.sqf | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/nametags/functions/fnc_onDraw3d.sqf b/addons/nametags/functions/fnc_onDraw3d.sqf index e88f606c05..ae80e7e992 100644 --- a/addons/nametags/functions/fnc_onDraw3d.sqf +++ b/addons/nametags/functions/fnc_onDraw3d.sqf @@ -21,7 +21,7 @@ private ["_onKeyPressAlphaMax", "_defaultIcon", "_distance", "_alpha", "_icon", if (!alive ACE_player) exitWith {}; _onKeyPressAlphaMax = if ((GVAR(showPlayerNames) in [3,4])) then { - 2 + (GVAR(ShowNamesTime) - time); //after release 1 second of full opacity, 1 second of fading to 0 + 2 + (GVAR(showNamesTime) - time); //after release 1 second of full opacity, 1 second of fading to 0 } else { 1 }; @@ -41,10 +41,10 @@ if (GVAR(showCursorTagForVehicles) && {_onKeyPressAlphaMax > 0}) then { if ((!isNull _target) && {(side (group _target)) == (side (group ACE_player))} && {_target != ACE_player} && - {GVAR(ShowNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} && + {GVAR(showNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} && {!(_target getVariable ["ACE_hideName", false])}) then { _distance = ACE_player distance _target; - _alpha = ((1 - 0.2 * (_distance - GVAR(PlayerNamesViewDistance))) min 1) * GVAR(PlayerNamesMaxAlpha); + _alpha = ((1 - 0.2 * (_distance - GVAR(playerNamesViewDistance))) min 1) * GVAR(playerNamesMaxAlpha); _alpha = _alpha min _onKeyPressAlphaMax; [ACE_player, _target, _alpha, _distance * 0.026, _defaultIcon] call FUNC(drawNameTagIcon); }; @@ -58,10 +58,10 @@ if ((GVAR(showPlayerNames) in [2,4]) && {_onKeyPressAlphaMax > 0}) then { {_target isKindOf "CAManBase"} && {(side (group _target)) == (side (group ACE_player))} && {_target != ACE_player} && - {GVAR(ShowNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} && + {GVAR(showNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} && {!(_target getVariable ["ACE_hideName", false])}) then { _distance = ACE_player distance _target; - _alpha = ((1 - 0.2 * (_distance - GVAR(PlayerNamesViewDistance))) min 1) * GVAR(PlayerNamesMaxAlpha); + _alpha = ((1 - 0.2 * (_distance - GVAR(playerNamesViewDistance))) min 1) * GVAR(playerNamesMaxAlpha); _alpha = _alpha min _onKeyPressAlphaMax; _icon = ICON_NONE; if (GVAR(showSoundWaves) == 2) then { //icon will be drawn below, so only show name here @@ -76,7 +76,7 @@ if ((GVAR(showPlayerNames) in [2,4]) && {_onKeyPressAlphaMax > 0}) then { if (((GVAR(showPlayerNames) in [1,3]) && {_onKeyPressAlphaMax > 0}) || {GVAR(showSoundWaves) == 2}) then { _pos = positionCameraToWorld [0, 0, 0]; - _targets = _pos nearObjects ["CAManBase", GVAR(PlayerNamesViewDistance) + 5]; + _targets = _pos nearObjects ["CAManBase", GVAR(playerNamesViewDistance) + 5]; if (!surfaceIsWater _pos) then { _pos = ATLtoASL _pos; @@ -101,7 +101,7 @@ if (((GVAR(showPlayerNames) in [1,3]) && {_onKeyPressAlphaMax > 0}) || {GVAR(sho if ((_icon != ICON_NONE) && {(side (group _target)) == (side (group ACE_player))} && {_target != ACE_player} && - {GVAR(ShowNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} && + {GVAR(showNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} && {!(_target getVariable ["ACE_hideName", false])}) then { if (lineIntersects [_pos, (visiblePositionASL _target) vectorAdd [0,0,1], vehicle ACE_player, _target]) exitWith {}; // Check if there is line of sight @@ -109,7 +109,7 @@ if (((GVAR(showPlayerNames) in [1,3]) && {_onKeyPressAlphaMax > 0}) || {GVAR(sho _distance = vectorMagnitude _relPos; _projDist = _relPos vectorDistance (_vecy vectorMultiply (_relPos vectorDotProduct _vecy)); - _alpha = ((1 - 0.2 * (_distance - GVAR(PlayerNamesViewDistance))) min (1 - 0.15 * (_projDist * 5 - _distance - 3)) min 1) * GVAR(PlayerNamesMaxAlpha); + _alpha = ((1 - 0.2 * (_distance - GVAR(playerNamesViewDistance))) min (1 - 0.15 * (_projDist * 5 - _distance - 3)) min 1) * GVAR(playerNamesMaxAlpha); if ((GVAR(showSoundWaves) == 2) && {([_target] call FUNC(isSpeaking)) && {(vehicle _target) == _target}}) then { _alpha = 1; From 1dd34199d68e80b453c30eaef8df30c1606556cd Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 15 May 2015 22:23:46 -0500 Subject: [PATCH 024/252] ASDG- Fail gracefully if attachments not compatible --- addons/laserpointer/XEH_postInit.sqf | 6 +++ .../functions/fnc_switchLaserLightMode.sqf | 48 +++++++++++++------ 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/addons/laserpointer/XEH_postInit.sqf b/addons/laserpointer/XEH_postInit.sqf index 38fc35f262..81b2da2473 100644 --- a/addons/laserpointer/XEH_postInit.sqf +++ b/addons/laserpointer/XEH_postInit.sqf @@ -4,6 +4,12 @@ // fixes laser when being captured. Needed, because the selectionpsoition of the right hand is used ["SetHandcuffed", {if (_this select 1) then {(_this select 0) action ["GunLightOff", _this select 0]};}] call EFUNC(common,addEventHandler); +//If user has ASDG JR without the compat patch, then ace's' laser pointers won't be compatible with anything +if ((isClass (configFile >> "CfgPatches" >> "asdg_jointrails")) && {!(isClass (configFile >> "CfgPatches" >> "ace_asdg_comp"))}) then { + diag_log text format ["[ACE_laserpointer] - ASDG Joint Rails but no ace_asdg_comp"]; +}; + + if !(hasInterface) exitWith {}; GVAR(nearUnits) = []; diff --git a/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf b/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf index 423090796f..4927e7db13 100644 --- a/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf +++ b/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf @@ -1,7 +1,7 @@ // by commy2 #include "script_component.hpp" -private ["_unit", "_weapon"]; +private ["_unit", "_weapon", "_error"]; _unit = _this select 0; _weapon = _this select 1; @@ -44,21 +44,41 @@ private ["_description", "_picture"]; _description = getText (configFile >> "CfgWeapons" >> _nextPointer >> "ACE_modeDescription"); _picture = getText (configFile >> "CfgWeapons" >> _nextPointer >> "picture"); +_error = false; switch (_currentWeaponType) do { - case 1: { - _unit removePrimaryWeaponItem _pointer; - _unit addPrimaryWeaponItem _nextPointer; - }; - case 2: { - _unit removeSecondaryWeaponItem _pointer; - _unit addSecondaryWeaponItem _nextPointer; - }; - case 3: { - _unit removeHandgunItem _pointer; - _unit addHandgunItem _nextPointer; - }; + case 1: { + _unit removePrimaryWeaponItem _pointer; + _unit addPrimaryWeaponItem _nextPointer; + if (((primaryWeaponItems _unit) select 1) != _nextPointer) then { + ERROR("NextPointer not compatible"); + _unit addPrimaryWeaponItem _pointer; + _error = true; + }; + }; + case 2: { + _unit removeSecondaryWeaponItem _pointer; + _unit addSecondaryWeaponItem _nextPointer; + if (((secondaryWeaponItems _unit) select 1) != _nextPointer) then { + ERROR("NextPointer not compatible"); + _unit addSecondaryWeaponItem _pointer; + _error = true; + }; + }; + case 3: { + _unit removeHandgunItem _pointer; + _unit addHandgunItem _nextPointer; + if (((handgunItems _unit) select 1) != _nextPointer) then { + ERROR("NextPointer not compatible"); + _unit addHandgunItem _pointer; + _error = true; + }; + }; }; -[_description, _picture] call EFUNC(common,displayTextPicture); +if (!_error) then { + [_description, _picture] call EFUNC(common,displayTextPicture); +} else { + diag_log text format ["Failed to add %1 to %2 - reverting to %3", _nextPointer, _weapon, _pointer]; +}; playSound "ACE_Sound_Click"; From 6c826f416c5bf718355d669cc8e46ccc6ccac0e3 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 15 May 2015 22:28:46 -0500 Subject: [PATCH 025/252] Add ACE_acc_pointer_green_IR to ASDG compat --- optionals/compat_asdg/config.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/optionals/compat_asdg/config.cpp b/optionals/compat_asdg/config.cpp index c7e7903ce2..40dae32051 100644 --- a/optionals/compat_asdg/config.cpp +++ b/optionals/compat_asdg/config.cpp @@ -17,6 +17,7 @@ class asdg_FrontSideRail: asdg_SlotInfo { class compatibleItems { ACE_acc_pointer_red = 1; ACE_acc_pointer_green = 1; + ACE_acc_pointer_green_IR = 1; }; }; From b334d8c52eb0ba1f740a5ecf04aeb485d7fe3dc9 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 16 May 2015 23:18:58 +0200 Subject: [PATCH 026/252] Added woundID for open wounds --- extensions/medical/OpenWound.cpp | 6 +++--- extensions/medical/OpenWound.h | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/extensions/medical/OpenWound.cpp b/extensions/medical/OpenWound.cpp index 62eadfdfe9..340955aac6 100644 --- a/extensions/medical/OpenWound.cpp +++ b/extensions/medical/OpenWound.cpp @@ -1,8 +1,8 @@ #include "OpenWound.h" #include -ace::medical::injuries::OpenWound::OpenWound(int aClassID, int aBodyPartId, double aPercentage, double aBl, double painAmount) : - classID(aClassID), bodyPart(aBodyPartId), percentage(aPercentage), bloodlossRate(aBl), pain(painAmount) +ace::medical::injuries::OpenWound::OpenWound(int anID, int aClassID, int aBodyPartId, double aPercentage, double aBl, double painAmount) : + woundID(anID), classID(aClassID), bodyPart(aBodyPartId), percentage(aPercentage), bloodlossRate(aBl), pain(painAmount) { } @@ -13,6 +13,6 @@ ace::medical::injuries::OpenWound::~OpenWound() std::string ace::medical::injuries::OpenWound::AsString() { std::stringstream stream; - stream << classID << "," << bodyPart << "," << 1 << "," << bloodlossRate; + stream << "[" << woundID << "," << classID << "," << bodyPart << "," << 1 << "," << bloodlossRate << "]"; return stream.str(); } diff --git a/extensions/medical/OpenWound.h b/extensions/medical/OpenWound.h index 00e6c1fe7a..4de796d5f9 100644 --- a/extensions/medical/OpenWound.h +++ b/extensions/medical/OpenWound.h @@ -8,11 +8,12 @@ namespace ace { class OpenWound { public: - OpenWound(int aClassID, int aBodyPartId, double aPercentage, double aBl, double painAmount); + OpenWound(int anID, int aClassID, int aBodyPartId, double aPercentage, double aBl, double painAmount); ~OpenWound(); std::string AsString(); + int woundID; int classID; int percentage; double bodyPart; From 4b6b0621da2f12e24a79eb05c2945763b1a7d34a Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 16 May 2015 23:19:50 +0200 Subject: [PATCH 027/252] Implemented handleDamage wounds fully --- extensions/medical/handleDamage.cpp | 117 ++++++++++++++++++++++++---- extensions/medical/handleDamage.h | 13 ++-- 2 files changed, 109 insertions(+), 21 deletions(-) diff --git a/extensions/medical/handleDamage.cpp b/extensions/medical/handleDamage.cpp index 1e2cf53e84..9ac7c6bb1a 100644 --- a/extensions/medical/handleDamage.cpp +++ b/extensions/medical/handleDamage.cpp @@ -22,22 +22,43 @@ namespace ace { { } - /* static */ std::vector handleDamage::HandleDamageWounds(const std::string& selectionName, double amountOfDamage, const std::string& typeOfDamage) + std::string handleDamage::HandleDamageWounds(const std::string& selectionName, double amountOfDamage, const std::string& typeOfDamage, int woundID) { std::vector wounds; int selectionN = SelectionToNumber(selectionName); + std::stringstream stream; + if (selectionN >= 0) { - wounds = GetInjuryInfoFor(typeOfDamage, amountOfDamage, selectionN); + double painToAdd = 0; + wounds = GetInjuryInfoFor(typeOfDamage, amountOfDamage, selectionN, woundID); + + stream << "_woundsCreated = ["; + for (int i = 0; i < wounds.size(); ++i) + { + stream << wounds.at(i).AsString(); + if (i != wounds.size() - 1) + { + stream << ","; + } + + painToAdd += wounds.at(i).pain; + } + stream << "];"; + + stream << "_painToAdd = " << painToAdd << ";"; + + return stream.str(); } - return wounds; + stream << ""; + return stream.str(); } - std::vector handleDamage::GetInjuryInfoFor(const std::string& typeOfDamage, double amountOfDamage, int selection) + std::vector handleDamage::GetInjuryInfoFor(const std::string& typeOfDamage, double amountOfDamage, int selection, int woundID) { std::vector injuriesToAdd; std::vector> information; - std::shared_ptr highestSpot; + std::shared_ptr highestSpot = nullptr; for each (std::shared_ptr damageType in damageTypes) { @@ -45,7 +66,7 @@ namespace ace { { for each (std::shared_ptr possibleInjury in damageType->possibleInjuries) { - if (amountOfDamage >= possibleInjury->minDamage && (amountOfDamage <= possibleInjury->maxDamage || possibleInjury->maxDamage == 0)) + if (amountOfDamage >= possibleInjury->minDamage && (amountOfDamage <= possibleInjury->maxDamage || possibleInjury->maxDamage <= 0)) { if (highestSpot == NULL) highestSpot = possibleInjury; @@ -56,11 +77,14 @@ namespace ace { information.push_back(possibleInjury); } } + if (highestSpot == NULL) { + break; + } int c = 0; for each (double threshold in damageType->minDamageThreshold) { - if (threshold >= amountOfDamage) + if (amountOfDamage >= threshold) { double amountOfInjuriesOnDamage = damageType->amountOfInjuresOnDamage.at(c); for (double injuryAmount = 0; injuryAmount < amountOfInjuriesOnDamage; ++injuryAmount) @@ -81,7 +105,7 @@ namespace ace { bodyPartID = rand() % 6; } - injuries::OpenWound newWound(injuryToAdd->ID, bodyPartID, 1, injuryToAdd->bloodLoss, injuryToAdd->pain); + injuries::OpenWound newWound(woundID++, injuryToAdd->ID, bodyPartID, 1, injuryToAdd->bloodLoss, injuryToAdd->pain); injuriesToAdd.push_back(newWound); } } @@ -93,22 +117,38 @@ namespace ace { return injuriesToAdd; } - /* static */ void handleDamage::AddDamageType(const std::vector& input) + std::string handleDamage::AddDamageType(const std::vector& input) { if (input.size() == 5) { std::string typeName = input[0]; double minimalLethalDamage = std::stod(input[1]); - std::vector minDamageThreshold;// = std::stod(input[2]); - std::vector amountOfInjuresOnDamage; //= std::stod(input[3]); + std::vector minDamageThreshold = inputToVectorDouble(input[2]); + std::vector amountOfInjuresOnDamage = inputToVectorDouble(input[3]); bool selectionSpecific = std::stod(input[4]) > 0; std::shared_ptr type(new ace::medical::injuries::DamageType(typeName, minimalLethalDamage, minDamageThreshold, amountOfInjuresOnDamage, selectionSpecific)); damageTypes.push_back(type); + + std::stringstream stream; + + stream << "ADDED: " << typeName << " - " << minimalLethalDamage << " - ["; + for each (double sel in minDamageThreshold) + { + stream << sel << " -"; + } + stream << "] - ["; + for each (double sel in amountOfInjuresOnDamage) + { + stream << sel << " -"; + } + stream << "] - " << selectionSpecific; + return stream.str(); } + return "failed"; } - void handleDamage::AddInjuryType(const std::vector& input) + std::string handleDamage::AddInjuryType(const std::vector& input) { if (input.size() == 9) { @@ -116,33 +156,55 @@ namespace ace { int ID = std::stod(input[0]); std::string className = input[1]; - std::vector allowedSelections; // input[2]; + std::vector allowedSelections = inputToVector(input[2]); double bloodLoss = std::stod(input[3]); double pain = std::stod(input[4]); double minDamage = std::stod(input[5]); double maxDamage = std::stod(input[6]); - std::vector possibleCauses; // input[7]; + std::vector possibleCauses = inputToVector(input[7]); std::string displayName = input[8]; std::shared_ptr type(new ace::medical::injuries::InjuryType(ID, className, allowedSelections, bloodLoss, pain, minDamage, maxDamage, possibleCauses, displayName)); injuryTypes.push_back(type); + std::stringstream stream; + + stream << "ADDED: " << ID << " - " << className << " - ["; + for each (std::string sel in allowedSelections) + { + stream << sel << " -"; + } + stream << "] - "; + stream << bloodLoss << " - " << pain << " - " << minDamage << " - " << maxDamage; + for each (std::string sel in possibleCauses) + { + stream << sel << " -"; + } + stream << displayName; + return stream.str(); } + return "failed"; } - void handleDamage::FinalizeDefinitions() + std::string handleDamage::FinalizeDefinitions() { + std::stringstream outputstream; + // We are finding all possible injuries for a specific damage type here, so we don't have to figure that out at a later stage. for each (std::shared_ptr damageType in damageTypes) { for each (std::shared_ptr injuryType in injuryTypes) { - if (find(injuryType->causes.begin(), injuryType->causes.end(), damageType->typeName) != injuryType->causes.end()) + std::vector::iterator it = find(injuryType->causes.begin(), injuryType->causes.end(), damageType->typeName); + // outputstream << " Evaluating causes: " << (it != injuryType->causes.end()) << " "; + if (it != injuryType->causes.end()) { damageType->possibleInjuries.push_back(injuryType); } } + outputstream << " ---- For: " << damageType->typeName << " Added: " << damageType->possibleInjuries.size() << " --- "; } + return outputstream.str(); } int handleDamage::SelectionToNumber(const std::string& selectionName) @@ -159,5 +221,28 @@ namespace ace { return -1; // TODO throw exception } } + + std::vector handleDamage::inputToVector(const std::string& input) + { + std::istringstream ss(input); + std::string token; + + std::vector output; + while (std::getline(ss, token, ':')) { + output.push_back(token); + } + return output; + } + std::vector handleDamage::inputToVectorDouble(const std::string& input) + { + std::istringstream ss(input); + std::string token; + + std::vector output; + while (std::getline(ss, token, ':')) { + output.push_back(std::stod(token)); + } + return output; + } } } diff --git a/extensions/medical/handleDamage.h b/extensions/medical/handleDamage.h index 16b9cb6783..650f677445 100644 --- a/extensions/medical/handleDamage.h +++ b/extensions/medical/handleDamage.h @@ -26,19 +26,19 @@ namespace ace { /** * */ - std::vector HandleDamageWounds(const std::string& selectionName, double amountOfDamage, const std::string& typeOfDamage); + std::string HandleDamageWounds(const std::string& selectionName, double amountOfDamage, const std::string& typeOfDamage, int woundID); - std::vector GetInjuryInfoFor(const std::string& typeOfDamage, double amountOfDamage, int selection); + std::vector GetInjuryInfoFor(const std::string& typeOfDamage, double amountOfDamage, int selection, int woundID); /** * */ - void AddDamageType(const std::vector& sqfDamageTypeDefinition); + std::string AddDamageType(const std::vector& sqfDamageTypeDefinition); /** * */ - void AddInjuryType(const std::vector& sqfInjuryDefinition); + std::string AddInjuryType(const std::vector& sqfInjuryDefinition); /** * @@ -59,7 +59,7 @@ namespace ace { /** * */ - void FinalizeDefinitions(); + std::string FinalizeDefinitions(); private: handleDamage(); @@ -67,6 +67,9 @@ namespace ace { handleDamage(handleDamage const&) = delete; void operator=(handleDamage const&) = delete; + std::vector inputToVector(const std::string& input); + std::vector inputToVectorDouble(const std::string& input); + std::vector> damageTypes; std::vector> injuryTypes; std::vector selections; From f26cb0a66695860d06c6261d194d8f12cdb11ed5 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 16 May 2015 23:20:17 +0200 Subject: [PATCH 028/252] Now handles input and output --- extensions/medical/medical.cpp | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/extensions/medical/medical.cpp b/extensions/medical/medical.cpp index ae0b549613..9a93060b2e 100644 --- a/extensions/medical/medical.cpp +++ b/extensions/medical/medical.cpp @@ -10,6 +10,7 @@ #include #include #include "handleDamage.h" +#include "OpenWound.h" extern "C" { __declspec (dllexport) void __stdcall RVExtension(char *output, int outputSize, const char *function); @@ -34,22 +35,33 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) { } else { + + std::string returnValue = ""; std::vector arguments = parseExtensionInput(function); if (arguments.size() > 0) { std::string command = arguments.at(0); - // can we not just use C++11? + arguments.erase(arguments.begin()); + if (command == "addInjuryType") { - + returnValue = ace::medical::handleDamage::GetInstance().AddInjuryType(arguments); } else if (command == "addDamageType") { - + returnValue = ace::medical::handleDamage::GetInstance().AddDamageType(arguments); } - else if (command == "getInjury") { - // ace::medical::handleDamage(); + else if (command == "HandleDamageWounds") { + if (arguments.size() >= 4) { + std::string selectionName = arguments.at(0); + double amountOfDamage = std::stod(arguments.at(1)); + std::string typeOfDamage = arguments.at(2); + int woundID = std::stoi(arguments.at(3)); + returnValue = ace::medical::handleDamage::GetInstance().HandleDamageWounds(selectionName, amountOfDamage, typeOfDamage, woundID); + } + } + else if (command == "ConfigComplete") { + returnValue = ace::medical::handleDamage::GetInstance().FinalizeDefinitions(); } } - std::string returnValue = ""; strncpy(output, returnValue.c_str(), outputSize); output[outputSize - 1] = '\0'; } From 23a1bc86ca00ef1ee1d6e8d321730426f0b1d823 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 16 May 2015 23:20:38 +0200 Subject: [PATCH 029/252] Loading config data to extension --- .../functions/fnc_parseConfigForInjuries.sqf | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/addons/medical/functions/fnc_parseConfigForInjuries.sqf b/addons/medical/functions/fnc_parseConfigForInjuries.sqf index 503ff9833e..9a46e26321 100644 --- a/addons/medical/functions/fnc_parseConfigForInjuries.sqf +++ b/addons/medical/functions/fnc_parseConfigForInjuries.sqf @@ -118,4 +118,62 @@ _selectionSpecific = getNumber(_damageTypesConfig >> "selectionSpecific"); if (isNumber(_damageTypesConfig >> _x >> "selectionSpecific")) then { _selectionSpecificType = getNumber(_damageTypesConfig >> _x >> "selectionSpecific");}; }; missionNamespace setvariable [_varName, [_typeThresholds, _selectionSpecificType > 0, _woundTypes]]; + + private ["_minDamageThresholds", "_amountThresholds"]; + // extension loading + _minDamageThresholds = ""; + _amountThresholds = ""; + { + _minDamageThresholds = _minDamageThresholds + str(_x select 0); + _amountThresholds = _amountThresholds + str(_x select 1); + if (_forEachIndex < (count _typeThresholds) - 1) then { + _minDamageThresholds = _minDamageThresholds + ":"; + _amountThresholds = _amountThresholds + ":"; + }; + }foreach _typeThresholds; + + _extensionInput = format ["addDamageType,%1,%2,%3,%4,%5", _type, GVAR(minLethalDamages) select _foreachIndex, _minDamageThresholds, _amountThresholds, _selectionSpecificType]; + diag_log format["Calling extension with input: %1", _extensionInput]; + diag_log format ["Extension return: %1", "ace_medical" callExtension _extensionInput]; + }foreach _allFoundDamageTypes; + + +// Extension loading + +{ + private ["_classID", "_className", "_allowedSelections", "_bloodLoss", "_pain", "_minDamage", "_maxDamage", "_causes", "_classDisplayName", "_extensionInput", "_selections", "_causesArray"]; + // add shit to addInjuryType + _classID = _x select 0; + _className = GVAR(woundClassNames) select _forEachIndex; + _allowedSelections = ""; + + _selections = _x select 1; + { + _allowedSelections = _allowedSelections + _x; + if (_forEachIndex < (count _selections) - 1) then { + _allowedSelections = _allowedSelections + ":"; + }; + }foreach _selections; + + _bloodLoss = _x select 2; + _pain = _x select 3; + _minDamage = (_x select 4) select 0; + _maxDamage = (_x select 4) select 1; + _causes = ""; + _causesArray = (_x select 5); + { + _causes = _causes + _x; + if (_forEachIndex < (count _causesArray) - 1) then { + _causes = _causes + ":"; + }; + }foreach _causesArray; + _classDisplayName = _x select 6; + _extensionInput = format["addInjuryType,%1,%2,%3,%4,%5,%6,%7,%8,%9", _classID, _className, _allowedSelections, _bloodLoss, _pain, _minDamage, _maxDamage, _causes, _classDisplayName]; + + diag_log format["Calling extension with input: %1", _extensionInput]; + diag_log format ["Extension return: %1", "ace_medical" callExtension _extensionInput]; + +}foreach _allWoundClasses; + +diag_log format["Extension configComplete: %1", "ace_medical" callExtension "ConfigComplete"]; From e3dd1eaf47448dbc747edfc76ad09f509ffc1d12 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 16 May 2015 23:21:03 +0200 Subject: [PATCH 030/252] Using extension for handleDamage wounds instead of sqf --- .../functions/fnc_handleDamage_wounds.sqf | 123 ++++-------------- 1 file changed, 23 insertions(+), 100 deletions(-) diff --git a/addons/medical/functions/fnc_handleDamage_wounds.sqf b/addons/medical/functions/fnc_handleDamage_wounds.sqf index 9172304dd2..70eeb74f9d 100644 --- a/addons/medical/functions/fnc_handleDamage_wounds.sqf +++ b/addons/medical/functions/fnc_handleDamage_wounds.sqf @@ -24,120 +24,43 @@ _damage = _this select 2; _typeOfProjectile = _this select 3; _typeOfDamage = _this select 4; -// Convert the selectionName to a number and ensure it is a valid selection. -_bodyPartn = [_selectionName] call FUNC(selectionNameToNumber); -if (_bodyPartn < 0) exitwith {}; - -// Get the injury type information. Format: [typeDamage thresholds, selectionSpecific, woundTypes] -_injuryTypeInfo = missionNamespace getvariable [format[QGVAR(woundInjuryType_%1), _typeOfDamage],[[], false, []]]; - -// This are the available injuries for this damage type. Format [[classtype, selections, bloodloss, minimalDamage, pain], ..] -_allInjuriesForDamageType = _injuryTypeInfo select 2; -// It appears we are dealing with an unknown type of damage. - -if (count _allInjuriesForDamageType == 0) then { - // grabbing the configuration for unknown damage type - _injuryTypeInfo = missionNamespace getvariable [QGVAR(woundInjuryType_unknown),[[], false, []]]; - _allInjuriesForDamageType = _injuryTypeInfo select 2; -}; - -// find the available injuries for this damage type and damage amount -_highestPossibleSpot = -1; -_highestPossibleDamage = -1; -_allPossibleInjuries = []; -{ - _damageLevels = _x select 4; - _minDamage = _damageLevels select 0; - _maxDamage = _damageLevels select 1; - - // Check if the damage is higher as the min damage for the specific injury - if (_damage >= _minDamage && {_damage <= _maxDamage || _maxDamage < 0}) then { - //_classType = _x select 0; - _selections = _x select 1; - //_bloodLoss = _x select 2; - //_pain = _x select 3; - - // Check if the injury can be applied to the given selection name - if ("All" in _selections || _selectionName in _selections) then { - - // Find the wound which has the highest minimal damage, so we can use this later on for adding the correct injuries - if (_minDamage > _highestPossibleDamage) then { - _highestPossibleSpot = _foreachIndex; - _highestPossibleDamage = _minDamage; - }; - - // Store the valid possible injury for the damage type, damage amount and selection - _allPossibleInjuries pushback _x; - }; - }; -}foreach _allInjuriesForDamageType; - -// No possible wounds available for this damage type or damage amount. -if (_highestPossibleSpot < 0) exitwith {}; - // Administration for open wounds and ids _openWounds = _unit getvariable[QGVAR(openWounds), []]; _woundID = _unit getvariable[QGVAR(lastUniqueWoundID), 1]; +_extensionOutput = "ace_medical" callExtension format ["HandleDamageWounds,%1,%2,%3,%4", _selectionName, _damage, _typeOfDamage, _woundID]; + _painToAdd = 0; _woundsCreated = []; + +call compile _extensionOutput; +_foundIndex = -1; { - if (_x select 0 <= _damage) exitwith { - for "_i" from 0 to (1+ floor(random(_x select 1)-1)) /* step +1 */ do { - - // Find the injury we are going to add. Format [ classID, allowdSelections, bloodloss, painOfInjury, minimalDamage] - _toAddInjury = if (random(1) >= 0.85) then {_allInjuriesForDamageType select _highestPossibleSpot} else {_allPossibleInjuries select (floor(random (count _allPossibleInjuries)));}; - _toAddClassID = _toAddInjury select 0; - _foundIndex = -1; - - _bodyPartNToAdd = if (_injuryTypeInfo select 1) then {_bodyPartn} else {floor(random(6))}; - // If the injury type is selection part specific, we will check if one of those injury types already exists and find the spot for it.. - if ((_injuryTypeInfo select 1)) then { - { - // Check if we have an id of the given class on the given bodypart already - if (_x select 1 == _toAddClassID && {_x select 2 == _bodyPartNToAdd}) exitwith { - _foundIndex = _foreachIndex; - }; - }foreach _openWounds; - }; - - _injury = []; - if (_foundIndex < 0) then { - // Create a new injury. Format [ID, classID, bodypart, percentage treated, bloodloss rate] - _injury = [_woundID, _toAddInjury select 0, _bodyPartNToAdd, 1, _toAddInjury select 2]; - - // Since it is a new injury, we will have to add it to the open wounds array to store it - _openWounds pushback _injury; - - // New injuries will also increase the wound ID - _woundID = _woundID + 1; - } else { - // We already have one of these, so we are just going to increase the number that we have of it with a new one. - _injury = _openWounds select _foundIndex; - _injury set [3, (_injury select 3) + 1]; - }; - // Store the injury so we can process it later correctly. - _woundsCreated pushback _injury; - - // Collect the pain that is caused by this injury - _painToAdd = _painToAdd + (_toAddInjury select 3); + _toAddClassID = _x select 1; + _bodyPartNToAdd = _x select 2; + { + // Check if we have an id of the given class on the given bodypart already + if (_x select 1 == _toAddClassID && {_x select 2 == _bodyPartNToAdd}) exitwith { + _foundIndex = _foreachIndex; }; - }; -}foreach (_injuryTypeInfo select 0); // foreach damage thresholds + }foreach _openWounds; -_unit setvariable [QGVAR(openWounds), _openWounds, !USE_WOUND_EVENT_SYNC]; + if (_foundIndex < 0) then { + // Since it is a new injury, we will have to add it to the open wounds array to store it + _openWounds pushback _x; + } else { + // We already have one of these, so we are just going to increase the number that we have of it with a new one. + _injury = _openWounds select _foundIndex; + _injury set [3, (_injury select 3) + 1]; + }; +}foreach _woundsCreated; + +_unit setvariable [QGVAR(openWounds), _openWounds, true]; // Only update if new wounds have been created if (count _woundsCreated > 0) then { _unit setvariable [QGVAR(lastUniqueWoundID), _woundID, true]; }; -if (USE_WOUND_EVENT_SYNC) then { - // Broadcast the new injuries across the net in parts. One broadcast per injury. Prevents having to broadcast one massive array of injuries. - { - ["medical_propagateWound", [_unit, _x]] call EFUNC(common,globalEvent); - }foreach _woundsCreated; -}; - _painLevel = _unit getvariable [QGVAR(pain), 0]; _unit setvariable [QGVAR(pain), _painLevel + _painToAdd]; From bd440f5af9f35047a0ed8374596fa898ba65d4d0 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 17 May 2015 00:07:41 +0200 Subject: [PATCH 031/252] adjusted random --- extensions/medical/handleDamage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/medical/handleDamage.cpp b/extensions/medical/handleDamage.cpp index 9ac7c6bb1a..f6756072d7 100644 --- a/extensions/medical/handleDamage.cpp +++ b/extensions/medical/handleDamage.cpp @@ -90,7 +90,7 @@ namespace ace { for (double injuryAmount = 0; injuryAmount < amountOfInjuriesOnDamage; ++injuryAmount) { std::shared_ptr injuryToAdd; - if (rand() % 1 >= 0.85) + if (rand() % 100 >= 85) { injuryToAdd = highestSpot; } From 1d7bfa239f446d07640a748143e6a97a2e0f4e18 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 17 May 2015 00:08:34 +0200 Subject: [PATCH 032/252] Temp added old sqf version for easy performance comparison --- addons/medical/XEH_preInit.sqf | 1 + .../functions/fnc_handleDamage_woundsOld.sqf | 143 ++++++++++++++++++ 2 files changed, 144 insertions(+) create mode 100644 addons/medical/functions/fnc_handleDamage_woundsOld.sqf diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index 4f4ff5bc30..4e77147a51 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -40,6 +40,7 @@ PREP(handleDamage_caching); PREP(handleDamage_fractures); PREP(handleDamage_internalInjuries); PREP(handleDamage_wounds); +PREP(handleDamage_woundsOld); PREP(handleUnitVitals); PREP(handleKilled); PREP(handleLocal); diff --git a/addons/medical/functions/fnc_handleDamage_woundsOld.sqf b/addons/medical/functions/fnc_handleDamage_woundsOld.sqf new file mode 100644 index 0000000000..0b1f169a8b --- /dev/null +++ b/addons/medical/functions/fnc_handleDamage_woundsOld.sqf @@ -0,0 +1,143 @@ +/* + * Author: Glowbal + * Handling of the open wounds & injuries upon the handleDamage eventhandler. + * + * Arguments: + * 0: Unit That Was Hit + * 1: Name Of Hit Selection + * 2: Amount Of Damage + * 3: Shooter or source of the damage + * 4: Type of the damage done + * + * Return Value: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_unit", "_selectionName", "_damage", "_typeOfProjectile", "_typeOfDamage", "_bodyPartn", "_injuryTypeInfo", "_allInjuriesForDamageType", "_allPossibleInjuries", "_highestPossibleDamage", "_highestPossibleSpot", "_minDamage", "_openWounds", "_woundID", "_toAddInjury", "_painToAdd", "_bloodLoss", "_bodyPartNToAdd", "_classType", "_damageLevels", "_foundIndex", "_i", "_injury", "_maxDamage", "_pain", "_painLevel", "_selections", "_toAddClassID", "_woundsCreated"]; +_unit = _this select 0; +_selectionName = _this select 1; +_damage = _this select 2; +_typeOfProjectile = _this select 3; +_typeOfDamage = _this select 4; + +// Convert the selectionName to a number and ensure it is a valid selection. +_bodyPartn = [_selectionName] call FUNC(selectionNameToNumber); +if (_bodyPartn < 0) exitwith {}; + +// Get the injury type information. Format: [typeDamage thresholds, selectionSpecific, woundTypes] +_injuryTypeInfo = missionNamespace getvariable [format[QGVAR(woundInjuryType_%1), _typeOfDamage],[[], false, []]]; + +// This are the available injuries for this damage type. Format [[classtype, selections, bloodloss, minimalDamage, pain], ..] +_allInjuriesForDamageType = _injuryTypeInfo select 2; +// It appears we are dealing with an unknown type of damage. + +if (count _allInjuriesForDamageType == 0) then { + // grabbing the configuration for unknown damage type + _injuryTypeInfo = missionNamespace getvariable [QGVAR(woundInjuryType_unknown),[[], false, []]]; + _allInjuriesForDamageType = _injuryTypeInfo select 2; +}; + +// find the available injuries for this damage type and damage amount +_highestPossibleSpot = -1; +_highestPossibleDamage = -1; +_allPossibleInjuries = []; +{ + _damageLevels = _x select 4; + _minDamage = _damageLevels select 0; + _maxDamage = _damageLevels select 1; + + // Check if the damage is higher as the min damage for the specific injury + if (_damage >= _minDamage && {_damage <= _maxDamage || _maxDamage < 0}) then { + //_classType = _x select 0; + _selections = _x select 1; + //_bloodLoss = _x select 2; + //_pain = _x select 3; + + // Check if the injury can be applied to the given selection name + if ("All" in _selections || _selectionName in _selections) then { + + // Find the wound which has the highest minimal damage, so we can use this later on for adding the correct injuries + if (_minDamage > _highestPossibleDamage) then { + _highestPossibleSpot = _foreachIndex; + _highestPossibleDamage = _minDamage; + }; + + // Store the valid possible injury for the damage type, damage amount and selection + _allPossibleInjuries pushback _x; + }; + }; +}foreach _allInjuriesForDamageType; + +// No possible wounds available for this damage type or damage amount. +if (_highestPossibleSpot < 0) exitwith {}; + +// Administration for open wounds and ids +_openWounds = _unit getvariable[QGVAR(openWounds), []]; +_woundID = _unit getvariable[QGVAR(lastUniqueWoundID), 1]; + +_painToAdd = 0; +_woundsCreated = []; +{ + if (_x select 0 <= _damage) exitwith { + for "_i" from 0 to (1+ floor(random(_x select 1)-1)) /* step +1 */ do { + + // Find the injury we are going to add. Format [ classID, allowdSelections, bloodloss, painOfInjury, minimalDamage] + _toAddInjury = if (random(1) >= 0.85) then {_allInjuriesForDamageType select _highestPossibleSpot} else {_allPossibleInjuries select (floor(random (count _allPossibleInjuries)));}; + _toAddClassID = _toAddInjury select 0; + _foundIndex = -1; + + _bodyPartNToAdd = if (_injuryTypeInfo select 1) then {_bodyPartn} else {floor(random(6))}; + // If the injury type is selection part specific, we will check if one of those injury types already exists and find the spot for it.. + if ((_injuryTypeInfo select 1)) then { + { + // Check if we have an id of the given class on the given bodypart already + if (_x select 1 == _toAddClassID && {_x select 2 == _bodyPartNToAdd}) exitwith { + _foundIndex = _foreachIndex; + }; + }foreach _openWounds; + }; + + _injury = []; + if (_foundIndex < 0) then { + // Create a new injury. Format [ID, classID, bodypart, percentage treated, bloodloss rate] + _injury = [_woundID, _toAddInjury select 0, _bodyPartNToAdd, 1, _toAddInjury select 2]; + + // Since it is a new injury, we will have to add it to the open wounds array to store it + _openWounds pushback _injury; + + // New injuries will also increase the wound ID + _woundID = _woundID + 1; + } else { + // We already have one of these, so we are just going to increase the number that we have of it with a new one. + _injury = _openWounds select _foundIndex; + _injury set [3, (_injury select 3) + 1]; + }; + // Store the injury so we can process it later correctly. + _woundsCreated pushback _injury; + + // Collect the pain that is caused by this injury + _painToAdd = _painToAdd + (_toAddInjury select 3); + }; + }; +}foreach (_injuryTypeInfo select 0); // foreach damage thresholds + +_unit setvariable [QGVAR(openWounds), _openWounds, !USE_WOUND_EVENT_SYNC]; + +// Only update if new wounds have been created +if (count _woundsCreated > 0) then { +// _unit setvariable [QGVAR(lastUniqueWoundID), _woundID, true]; +}; + +if (USE_WOUND_EVENT_SYNC) then { + // Broadcast the new injuries across the net in parts. One broadcast per injury. Prevents having to broadcast one massive array of injuries. + { + // ["medical_propagateWound", [_unit, _x]] call EFUNC(common,globalEvent); + }foreach _woundsCreated; +}; + +_painLevel = _unit getvariable [QGVAR(pain), 0]; +_unit setvariable [QGVAR(pain), _painLevel + _painToAdd]; \ No newline at end of file From 65ec2cc4e5bd1677e5bd793c1cbc492086b681a6 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 17 May 2015 00:08:43 +0200 Subject: [PATCH 033/252] medical dll --- ace_medical.dll | Bin 0 -> 1456128 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ace_medical.dll diff --git a/ace_medical.dll b/ace_medical.dll new file mode 100644 index 0000000000000000000000000000000000000000..7a2c969b7e0960be5366e6cbbb9588f0b949d6e1 GIT binary patch literal 1456128 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%0A=87vqI;g`cW?YQyU3+) zJm4!2ddlITY4kh=OUY!IBJWk>7A_ z1B}Vth2mz(S#rf7xSUo1^10?Y4+g=2Y|vCMBlfIvOH-~C9_m{5k>=3>ZMFG4ubhME z8^v*CfN^K|YG9n!i?wVHIsEMlaT>9=20=gd;(5GN4*uoyQD=2JwgiOeS5+Du!7Ar` znG-w@&F>9C*|8(|4mM*E=;H|??8@W_t`{Y2z9>!G5@t)aMp~+>%v`NZSgM*zCQJ1x zUP*XbjJ_F^VHshq?N>|hF=mR?~vz@9?0j{`ZRX5rDr;6`ED^2FKXr0vM?RPoi zBLIEG@e&kDI9wcsNv9QTe8>51GNJ-Y+9ksgeGxobjQt@oWxJSNO8@Toe zYJijJH~=9ITWQG|hF3@9*o?F=F1C`#_r~l{jUFxLz~&k2@%4uOM7);$`FqVG_ZD46 zVk=)R(?Q4Z;l^UuBjxny<49LNvNd-O#AO>LDqci?S`o@ZfxB(ExeB72HU|}nEt9Ev zxSK%GL54U~^okovx?$lUVCX)QNplVgJIHOQBqpk(Sf^V<6~n)gOadRk8@|ObCu#6zmPE)WL`+P-dJ% zizAb;17?pFKt+d+AzHUT-zk87{o*TjP~%v@kFXVhA_;aAEwX`BDtyVA59>B@v#7^9 zvt?Aq?7H}j*2%BvfAn{oxxXhy#a}?yK{GJP^oO#<3w- z+@nq#pCJPt#P>04$1AW#_~$z5d&LPDex}Z`4&6>7Zq3HyABRu#(L%hjvUhPFPHhwi zuSdKDfrO3M7)P{*=x;x(bfE6%knb=BOApWIQycr!9t3eANai_udw4otUtCHW6nlEb zDaMCMXd+6cI9}SvO*{Uu(XZ#i)3`#&kPr6mY(LGDN%79Kxf4e#eFn*eV#B|oJv%7v z1Nkg>KsrhXr~{~RuH$fV4un^DxcQ9>Vyi%mypzj-c6VW)B*k)4Y6ntN?{*E}OFS8g zJdH$Z9NV$&G0wv*V`hRquA-L2LJt0*h^2V3T-1|t{9OB(?w|L!j)@vSOwLNV7|2l+ z!KM#B-TBRFzRc2|E#>G4zSH3Pnc1RW89@ZDv>c0j3`Q8@TEWrc45)I*9uh3_L|h6) z)pkj*pNcUmUatb!2-ijkiCav?;0q6tAN0LT;#bqS8kFc37a#=_c;?mIJ@E*1io513 z0_jK;Vo!PEtVW;^A7jE1b>i$6HKx{cJZe8l;1(uu9ZVz;$RECbgeb@6Dlz^xgTUoT z!35qrJqZH0V@}2h?nRxX9C3MxqeMq=ugK*vFw?dqI*g@3BQO_NN{YLf4qpQkI7kx6 zA0`_F!pV(l7{UFpx|zT$&c$h{Yg%8u&HFU#A2}L%jPTnJaj>4_l zV>fmlX(SFO61OepPTs&I&H(|ykUzY^9|*&yNd}398i_Y>?a?HbYb0Kec)F?w6^6~I z6LUb2*lfbES-7#lfa^1e3waAaZW{@B>oo#7X!}e_U_BGK>rp0l z{p!Q;+&PrMtvSx1J0XlIf5L~oR zB3mq-N&*M3yEs(aD%k%&d184PZGR5KjEn5gHfVXX{rL?G4z;dNXRk~9GdzH<{}CtN z!yO6*QZ=q8J~ocWBrmx*TMaJIL-z8TG$ni0^Z5|Jcz3;OB_2dJDGo2%8Srfg z_d;H5P~nXsO(7CNh!@0)4;a6xNSqd6#>dbLf%oZ38&M)rV?Cl)d2N}3xmi*GZ(sdNU*?$T9{IAI9+v1P!`s^N@eh)zz}U_axQd zm?_8T@0E~A(f$3wO|kp?62D!4FZSB>w{u3P`+EfR4PUZg^mhf+HT%iP!DZXuIKvzL z4e!-BkQh%>J&cQ2ou?3)_P* zY}Y_j4HkcfH5%|V1U(HHh1wYRZs75MHD)6PAp{DCU?)=e0*}eZuH>>%bv?fneNY5< znr8LTrt=;UoLW}VfI-52NVE997^}f_9FC1~8A!wZRil0N{9sUEZh`|347mlL@%=r6n zHQ_%N#zyzz|9Exx;qPxXG+IZ%ySn%sn7Q_PY&*}Np~vb-S7F;C{YTm)`7@DKs%2LY{^KvEw>=;r{T48~kPU4vLDc-}Fg(Vd00K4Id895tDzwP~x-B z-JgQ@VxrqH+P8+dyUv!osZhk0LeFH2ab8V1iG*5SsMK8Z=I@J2*9(h z_|lko&M#+l6p+|9EAgxcp0LED@T@BomF&^VhS*po@th6o6L^07!`1$>4UQ6=DzJg@ z#GxS{dscr8MBim2DiaBGL~Af*iHGPaLKK~2BQL1XScrZJ?b6kV+TnR)Ogx8UM6(=V z#!Lp!?_I+=3_MG@h&Xt@$ADY#9E;J}4R}5WE210lgnw>@S>76>-*lcE@$KB0IB#LM z0_1>_x6+>dY6{8PH9_B+fR83`#LPixv0_@~Gb97qvf$*OOTA*(k8d{DX@U?~T^ z4G?NN?@Lo$%{XjyWm8ODiIQ^YmZwA}>lZKvy1Lu6=}grBQh)9-_owD>h117szx0gR zpZj?hZ}cbGFRR&pIT`Ys<_`p=-lyJrwqKUcv(ulu#;XzKsgw50N9^K3pESVs*XJ#( z#aM`Xy<5Izi#c|;)Y*4SKQ>_+$h_PVD3HRP4 zaAEXU55VpblmXb3XMt820Qa0eEOf{PT#a~y(H z9izGLKoP}~XcTdsq8@4sv#-${9$s>i|80t%aFh=8zfEb=?#~P^ryl{{W~Tc|COxbM zNc6l}iez#jK7Pv&S(7M(tg3p@FcV)rmiB9!K(7#&Fq#f? z#VLTe3lq^T9TbH?-|0PKzj$Gi9R2OY|J8i3V2rZ|>{t%;zF;#L)O!29|$hM4T&Go z0{;N5ijU~SM7RHwi*XbT7I7{v#YC%(Rv3m9k$828*RExm6TU<(*3o)vE3dcG=`}qU z4pZx`t#Z9}55lWt0e^-ng3N3!6th$jjqD3Xul)+2f}Y)cnc8j{@6#maKqP8H5+FX# zX%H`AdiOBBGkI%meCKxk*VXT6ywUp3hgkZ@lo#{e57FZ|9pb|uc6`Xg)Vkt|^t9s4 z(_>ElGnrgln5FWHGbaylA09ZHPf_bA9*!sQG0s&h!J8319k&j2tDC_bfroQ(P)+fu zSV^#fAh3v&OrRuK`Hm`O=O-$~{5EFQl5=f%B-EeRFb;b zNsdxUnqno{^hpmz%ih?u9IZ;}h*iq0oxN3(EMH9g`=}&iVkgN|Nv6h5(pM!ZiJhdM zO0pz&5|>J{GFFmJpJXUpwono~UYNDBzbd6QRw=V~4p2!lr^LkN7?mU^c9JZWWK8TN z167iO*hvPdBqgzv9IKMl#!iy0l5B{b!pStevN-BqDZ_(^Qg-sWEZM zQAq~JPI9_Rk{3J4P?cmt>?CK%B(bj~=xP=6U3n%1p#Pv7)n$q&1(%WT8ZnSm9?pZ7 zK|}2nU5fLhu7i`}FpS~2n%`1hrnS6|5*&p>VMy?jx6`#aM{$XCPr6lU$D+@bpuBYt z5QWK?mt!q2qP=%;X{ofgm$kf(lGC)vdMrr5acORQA4zK%N2Svzx1YmUVGYtnB2JhM z1$3rr9AqR&jJKQnZ`0l$!7A>*zTAJ_j*?-qjxmLFq5ef5&_OuBEPRpTfupQ#*l*Vc zoax>MOH*9NdE3J2$q!x&e;i}2tE1#(vemRO9oS$9At4(7e7~fz_sn^R2TlYodN_xP zQ%rbh{Csqh>|5W++t46|bvEr(c7P<~jT|ltaLlG%>+Jl7zcrKjqPO#$)wMTiyhaUg~1U zKnrc0Z&`#t9Kd`Nya<$0U7}!AO+yyD2U(<-aJ6ml@$^$p2P8)(gy`e0bn!@U|ADm9 zqi{)J_`GoD%)U|_k7x*=79NaB(&!4c!viM+5X;w|ExdUsp*GWcA^HC;{dHUfzE=C? z$$JUWlf|o*d0aAOTIfAFZh7zGYUmZD?=WwYp=MWb9POz32F@HESW%`bfTi%CQh)b@$*gds>^7l#7w~^>p z+9%6edPm9e@Q@>Bz?hHS&oy8?(=AR9mLA0dEWQQ6cu;**5uE&=;lH3~f4--E;W+%? z!_)rcu+2M_h=9Bpmi7Kr_yPjHw$h%EJz;EnZFA85KOKCS3*B9*ZcW%9UgvM3HLsX+ zL*hfOAGZay&AVxUJsH*PO=Tkvg z^}{WiYMvv0bq4nhdXSd>60m~a2J;WJhwpzWrNW0Zm47+aOyzvEu7fO``zQsb5*@(| zW>NdWsdkiK-#7V)cueLTHSV7l8x&x zJFtDwjq58rT`8#@z6gPbWl7Ca>i zZ{o#LG457cej}U9{>*#Cp#?nPzo4xB~ediZ4;lDOz`^BGXY&~{MQ_xBV;F5G&B;&;~) z-PlD+c7UVw%D09O8sJ8RCM0C(X~h%ppf1FkIjMLmuE(00E|##m$@aIWm8NZn4wD~> zD=2Nw0PIKp9=HKp^D(qhtN+uz7~je+L0kbe?*2eVZ?(#L2rb&0;r<5y!Z*WyEEFD% zAh{Ly%C}aT392&@biGEK`H$I9TaSgke61D;#5xI7(C zH=H4f@%#e&@lwaLd`x^i2f-`_o-3g@x&qH0Y;xJ+33;-pER#jYmG!G|Z#6Vz2Clw4 zt#}U}w2?kd8(7aHR>VB8nB4p=(VlDgI3#2t+tU7waE{r+CIKO)rJWKNi5is6r|H`2$%hf#`Gpxg8FigG1XU& z2d%ymt-dWjYwP3(Q+;=7^|j}FI_|r2{n#uN`7Qw41;B2`gI44`t;l;Lij*HrMINt; z^mYux_0I>KbFO@=j!M-8Zkwsp`C6$bM3gE&m`dI9Jqe7jV;Cg;H)qT(te-bfZ~oBY zHF!|87FR$YXa#TP`H(I+jc=y1i&fbkOzbGu3!-QM)n>lQHe#UvA9=)hXRV2qNV%3$ zTmmK+qr61E>7HPX+!*PdDW>1Uk~;bFSEZPKUW(}_#z}9H)o6d@vmJiz9Aj?ZKAZyP z#2`O`CyqF1M=Cstdqb>zCj8^&FHa&rM1MZcBEh+Oh9BIQb$+d6!(b4rS(%#wCHzn!%jQc~YSrn4Jmf-$S zb>HaO#}H9Tq<6w(g1zw@HgcTRI4Ey3oKXgJEK=8BMx|xhnt?h<;5X2#%3H?DGFEwW zd9PF|<+<dFN0EK z$C7^9{9Ngy=35h$w}kOaw!D3V6P0%vycEgPSDUcBLF^GomcFl?iRkm6lL~z=BrNZ3 z7P-mNx4usz`lj_yg}yrymbYYN66Ha`8TX~9OaB1eO5~`A>m1I0xaTeRrSEKy$$+GP zySO~;KXNWN?e8_67t@XRuYU_$Nx6A(t^v*^#*^Ls>wh_c(rv(ZZ2A0`+`oS8C_b|o z?g{<=^$dR1jrXs=0M%uG|N7?>nWydUUw;oG+qEw7{p*)<;R)_vUtp>SC#uJ|e|-m> z%C`5f{~GEwCevC~`oHxF;|Kgc@n6sHefuWI@6Te6^RMOiGvMsP8Qo@n&*E3z$nS4L zZrbzvyR3n+CWe#!X~SSv4=)ZjKMylTF&s-Q$?*FWE<6Fh-(spKHoyNFL&uiie>?8~ zCw{N$9KScfMdVtSaRoG0E{+{hPwOeja@J1xy74iqfBxoDtWvuXz!31b!;r{xa_8&w~0>9_UFRSPLV3jTtsuw(<~_&2M#{j zc;d^Z>2P2V$jo%+??f+eqZ7%9wh@?_;kHsV3|p*m)(Tz?;aBb+v?;c^Wh1R1dYXH9 zwgjmB=2&gVy}G9QOL0-xmW9}1P1)*bS8&}zDo9oF_IXyWzd_pyARKIcE3U^GQnJ30 zh%Rx8eX#jl>l*UgN^qG3myR>ey!BLiJ(sT9bQ6{Ct;gnYoZi19t>qmkRjiWj04#_b zmT_R>2{xjNd>->)OO^(Q+^9*vaREJ|{alShO-Z|JX6G#1W*ieVRVK_G3bG*T1v{0af0S{?+A=TtOGKRKiA*R z8QZcSAK->u_M*ld4!h86M99Ub$~R9nW+VPV5~Cfr2@--6vs`Pl`WK1!cv1*YO2-Vo z!T<-b4=m7t;yVhpHoAj(o>O<1;{m@VLF-J#YaMFAW=!USGHq&7y7raZ< zo@k*qgz)(YQZpo}Uqd*Md(t3vq|Ip?(UhWo<3tF|BBxv%@Zzx3X1LQcMUaf{vhDt@ z+3Wj|nrZv$MVvH^6Beku@O>&YYk{~uM^(K&fK&fH+x-pM%m7>CAF&pYE*xVjFejR1->lo%H0yElG(C)EXFv z4a3B3=O}L5zhaioZ4(h*hX9)b@v13(BzJCErl+4IgMtb~nJIntTWr>BCg6gFV~PEO zS?(Eu!c5(epdm4VdN7!g)>RCr_{&m9o>51pZfwyA8Hs^2BbeEHMqnayyA2D)<(D5o z`A6|fruZe4dV!eTp}+ys`HZen#{@?vQ0sSD)@K=J~$Y<;q2@k+aEvyrVu)|3Nes|{kGD}9m zw$ArtmE^$`gsTWohzHHzS#}iSv%}snb|m5j4xFZs`J2mBO#8_2YbqZdQA5s?FmAkb z=6f?sqPNJ%y|R3AP25=YXz9fMP}}&XRR@WivW$kS%(B0-hI!m7Xg+h8*SYh+Xm7{; zr-1EueyRmW^Xr|T@Md8#V@kRM2PK026DecHHyhG1VzKdCUe>au2loq&XqW-nigOsf z*!qiYKW-edwV$sUbK>McT<>uaBqf?NBOwK-Kbi9W_V-lE%Nx;vTXh1SkI;pM;(u6` zWbmYDZx9Fc_}b9NkpGylz|kneI5V|v7`3DgJKB2q_G23z!qPc?J8egpdnQlOe0zX( z8=w-hjn_+>R8-``^l*B3t)8!VFb=LNE+0q1khqqJf))>B3JgqenT5Y>A6-WD_SXjy z>$neB$`HNHbVCEqW7bJ=GAS6v?Q$ywcHA+iBVeVSXkye!vF+tfN0@SfX#5-FWTxrW z5%1!Zpc!<0`@TfnV8^lX-*Nw0@hko*k zZ#YQ69O;Ypf!-Acz5dplqacLjf-?ec9tUJ;aC=~S6NMOyPr&cAe}S&_*+NG`s;>

yf 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%0A}MCsxWTY+BiMO%BNSn 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

>uE1F}QDViiwArV&6OJEOTI(f;&+%MK6aG#p|j z5Z1ySZ;Wh^GKhjAWkew9G-;?)&&p0IlV_GW(x;3_H63P|4qc{0%H*15{@$mIn{5-D zDXG6rmuW+p1Bc8a@AfGo(p0NiO{*@_iXvu#qhaKqi!A0C8u4uuCS8;tUWy`}@<} z|8$f4PZ92at;zi_NFXAvuzvWU&BV|~9pQb%b7Vx~BK>+O1&KkYoSjKwpOI&jnIf-X zlTkcVlOT#DL%7KydEg~d zeV7NT8V;;Z-{c251E)!-tMy zQs549_Ri4|&jYF9lb$Dk$3Rn^;w)-VGTBDS*oO}vL21NrV*4EjUbVt|!vfC=?Bz5t z0Ls(qRo=ZfBO+*TNvv=sY+ zLHLwIjrBq*D}PPeC)8bV(7a06L0*pM$e~ z2gfC_92Nm1?X!ICguoV82d5lCauCer z%Ii+}E`w&Un~RlF!aWy&R&fisgnKTM$i2nn^4=2c9%z-&5B+80deL9R59wL0FG7z6 zXNG#ZSv*4R5E&BZCW?n6v1rvJFtd9dJRH9!%_(K zmH6W~hD+1Yj}uMOhBu&!LudvSK(84M(RpwbE&2q0_L2G#nlU&qnS%*n%gD*CRJl2bHC>d#c|wzQb2c|LRzG&Wb|yAPl@5Wa>Is z;z3P^!JY&`9dqnU-F~O*M+;No+fwzeAHe}=AXO_n{|U@LWL=UU_V(_6_Vz*jU2aoG=UwY~E(BaG z+%Yq_EPTZlsP(wJ+Q226h>No1L@ENQc)J+#4V<>RsuL#4`ryfUIFk>M%sT)^v`8(@ zdpe$t-liJ!1s-dlW%3y?11m^~MzCl;6Y)#x2WGw1_*09v8)SmMT{)88zuc`ZSHFtN z@C}H1A-HV(pQ27P0U7i*0ff}}aqnTa!~&M$Nu%arCUCnoaco{K&e3f3|| zQonH@MxJZOoKcPmTz=ApMm+{+5A@s73vb2^KBFMpH?LQ{^&C_aN94U9I)AMTop zT@D*}xe(;w#A)^MQ^8EJR=S>cU=hYGAz+XW<8}`0JjNLymhSN}Z;Lwo5S@HmR4uH$ zQFr)$droi~-|yqQEqtFnH#k19Ri!t$E3XVB>tq5*hxB(7^SfdCU?t_1ClSUvBaL2=mx~u< z=t`ysEwJx~)&PXg%>hQwRV(4>)o42pZGwk8EZ2g<&%>BQk7zmwu=u5BRT3($MSV=Z zcO|}*_=4HaJ^~QjU@@Pd4O0HpZR>84{*^m$+Sh2?*{T=*SZ4Lgto{vnQAa&0Q3QWO z6T5$uw9bTs?fErd23i#|^!v|#5_+a8Y`LM}qd(zH@9SBsTWZih!hm8VBbCuZ*@EgSH-1;$3tH|&BO)YI zzQrXQ%U;dQ%ku+uc!LMbYWP=JyiSm@RQ(!WW~K*BrOp{BO`tF#s6uhXGj3Z6lXrNr zyXLJ^&#fhMs8dVnPT}q|vt2b~KxV*hLG|0cAo-Oug$vg#YCrumw5cCYlN7!|ZJ5epmyVh_gP+*|%eQuiZb|W4a3(fSWe+Y zY;M+%52SvHL-YpD7MVEn!7a;zGwkYLroMxXjWo`5PK`4{P>TL$doWp=O`P4coj7Yw zT&osKNj=E>%|V_opZ6#9S^#bhD`$#+3Qg#fAmw7o(L_d7rzY^_zc-^w&+y}WF!%u_ zU-rC`nlomI1C{~3LXjzb|K9|?CR56%qvOEgCi_)x@J~SHC48Fpz-fHy1`RVUh!`a$ zzmB_Ein$JAijG0p%`;FYTFchf84F?M0(xev5ospiF;7KAnCMauC@BQHC zfPr5csjc|EQmv+sfYD20H(b@76GFgEpthelHN=4sfnV7h_~VOX+>6PuY`!el4)|sD zn0{GBwkj~GB4!f7dubEU?vxwsJa9dTEye<%be19Q3of^gKkj~T3P zGg%#`Ef;5_Z7U&|L_M41&p=~^cp34w(CbLZ<`Q)wKBft_CWumzjrZZVdKaHbxvrXD z0c3a=Q}I%d7cQ73!qjP`%L2^&VW57xa&P!wbK^7@JXU!=>e`&d+lzt0`8LQ zvs>A^m91PKABR>}-p0j9l|0N&fdb$i)np4!##||eTNvh0yN`3IeHq*<*ZSLQA^S9i z>#+%d-TJ1zIl%MIi2spn`1c9?N8(S4eZNId*elhANHz%yKBtev^K_*Daqe6>_u9_K z{Fh72Am;mv;U|ZxU!KLPU;d2iY0t}Hbr~El;h@@!Y0&7|gHEDv2JB1JZ{h2i#;s>V z#Q$*AzhR{R;n2qgdTAQE9*^tn)rVw$dTJxyby0uqNdLMJbdY+2HJ~Tpq+X9pO!7rb~J6MpAvItzC1 zwPA#fOmNQgcbEBFgW#{o<3Mjhg;D=DjF9W;-MU;}GrrZj6L1j}FuS2%@%^+k6r-wo z41afR4&5w_9uci8i3h3EpxHzRye!c)EH5YUWDAv5lZs!G3G~u36j|$isTQJ+K`bUJ zu$C44M}~Z-c*VSR>+C<(HZQt}G#s*|d#l)@ysdo}`9@Bt;jS`>Ubp?JHVt_LLma4mKZ z4Y+1LPnQpuC*oKp^6B;=3osqx{+w;a9BJp`yDx`Oy%;C8b!N8!Z4U3o3hu0R1G1jx zlF8o%hNf^H8+xz-(d#VpW>Kn+cbJN3j!#8HT>q#>^@4x%64#!@beugqzrU;_3;^;*UnSf<#h;pDsN%X@ zwyJ8D%XaRHdD_qph%q^sgFR@OGtbkVhsmSHRkKOZ1r=w1u%Pe44!h2WaFr|~W#}%I z@V;;OclwI}MH@@h$3eabtM)+>uz}B+)W=t1sY3(1sake(s*rs)oHWDhq(GM4QSoAv zu0T`wy_OcpDwhWgY3vWMrC791MJvUm=8QCE3eX?*0}_6x2}=i+?1S^_Rd( zQLoOvpKhqafgu1Cg{R9n_ECeqjy!KCL^SCM+ADhr>`I4p#n1bBTQE3qex=9zRVNXb zT26*-zbHK8d|W!@bR<2p8Dct9DPB{SH4(9w# zloKRs)GQ!=HbGPc+eh=U3E^2yJVC3Ru~JZss>8c;xwE?6Q$R5fx%TFGBpEm2VxOQ0 zE+w+Qmb%t_58x%mE~{|zi=&|n9r=T7P^Cn2Gx`XF+2R$Gq1Alz$;BvhnEM;PTs3|>xuvX%p9$L>1dkKuZrs>M-_!rV|XIJa(kXlx~v zKvfJ)71SpQkuW@*Z2ciB4TNaG@STwC3A|lsN@j(E|7Qp+xle~rGE7t81 zdd`m?3=&K z0{T7jw&x^Bz7Qmjn?{mlUUz6V5EZ^mx}V)Y=)-xQWS*x7UCFTCZs=5{^4f3+ay4E@ zpij`7z!3@t;s{LsqTROYL$KgWbPF6#pr^;*pc|2!kbjh>`9}f@MFGV9zhx( z;_RmRKSdmCRzwQ|3bT8Ef_Q~63$?;iAeN@qj-ZH%`K>2%0rqQbRSUpn3c2xv-hvd4 zw3d0?EA%?o1?MLtQAnpN;#HIevnssCXe}+6rNUA^R4XjSFe$Pn55S%T)8hLazT*}J zjPWid{WrrmO&pqWOho9v892+P|IZop-z-C(y+UI=A#;Q2L+gWYypS}|ku;@(^F+NRC#-A zy>RPm5n6@Gr6+}9^7NE>idIaK#Xd*ZH_&2#tDKiAPF$O~25a9@=+Nh2W`g_5X(pWH zCi(MZJsd6nj4yj<9>szQ0m6XEK4|-(+5v(1{ZGYVjioVu3o<8tFhe2H+h=$R?s20< zFf!E9nK|x(GK`Kn(Xq2I2(t3HWp%|ga^nVg*hXaJV20kg8WtYt^ZL)8HS*S^|Lm`o zw`TpPWu3gW>OXDk<*h@1>wHAsl>XMWS>C$!x1MeCmgG0gXjvM!p?QU99v1V>Xt7wM zHbX2y%QiX%<8t+1=hK?T1MbLB5!uKY!<|0$s1Dd>}c zm2KIAn&a22eQ6gK`epdZ0-WdBO4ytLz>-hRy-#MUPhAd9h(YB!QyxXyLtE8<{lcfm zn~@I3OY@p)1OiojLFbK@g7mv$*IPJ7zPX zR+D>E43>iqTs9R+0<2Xm#;_Gn4D7Kq;NL9`XofAsA_*h!G0qM-T0feJ&vo_!v zK$CEiXh0vi7UwK+#*qOwCI)P8W-#yrO9MWh-2mjBrv7!01q12Kx&efvIv--I4Ger# z8c--0Xf-Xf;vEmE)I6a%F)-88fFD{K@M{=EEEs5E1B$E-NN3g!ARP5sYXcZa2P)Sr z?u`|Bf+yqmY97rkx`w93qjEI&XwF*y(ON&2t&(sDmcvP~!6ViH&X-61dq(=3LRVpJ z$Aw`6*Dj}Pn{B}hu$cA}Ppu^)X$&i&9kAyiSw#s0IJr8j&gx*nth0VEdJ_OEXHAww!`+=M?- z&s5BUo^o&<20P`&GJ4_T#7YYbUxGUT48-v*1Tm}<`{2KT5{W9EojTjq&AP>jyR3&@2-GV8tp29VHuo19>Wx4rUSR3$*NeqH|*hLZ}8(x{e`5CFjJ2P zXE5~%N$vTbOxkF7!_gC%`V~oiNvFb#Z)sC$p7ZC6He)~D+errAS&EI%sK0aV?8&vB zH&$1@ksCY#zd4~(VfTQGF0BMHxg^sO=ec+Sy-a{c44`JSN+k6jGu3F;Xh~hzr&-Cx z?ASG#X4RMG*>$r#9b&GKW_deY+sh|aA6|`$L#IH`qL&L+$dnGDk_brqD)X`32IL~b z1X#_du(QSLhMC+a z=o}9j`P4&SmQv4RU^_wNrbYbIpSt-tr@4vVet-Mm+bfPomVuG)deD~KDvhxSdw?e2 z&3KBAa04%I6-j7-SZl0Y@@s!q%!3|v_czF7demVo;hM={sQNey!n>cE6OPl458Og* z8xAvL0;}r2CJE z8l>zu?qpNQg$It(mCg@_4H0_q``a;%)z86s`wX;!KPZ*-i67?uzVJVW9^L1D*q5pR ze0cZ6@;=Hd92pFrK!pr0*=3OP%7<@G9z4RcEGZF~ zr=m@2EL^l6bK)x*+Z_yras}UPp$ZG21!+LhQG`^ko~Gjm0^Y~GUFu2=>6hEnkh;{_ z7Dy7#>M=A3I|ZC^+(Jz2;K@AK8oI*6c)JOEx=TID>G`ej>h-A?u;wlGCZ|_7)X~e= zpL~=Ji#XRq`fGUm1j0Cc<^iss_IZ6>12VH1W5D~XGXRQZe zqT&4FJ&FZ%^iqFvdgB94fX$nq;y7Z&DE9w_YM{{1QjcSLK0BB_m(%kTsD>3qE!co5 zq!||NE@>lsDlaHT_OZlG)V>y%SKiH$u~Qf^6T|hzaNeB`=iS5}%#BgZTdtb#km=Ew zFXN3NINrV+^ba)CXS3fnkS7VtkvPdfxd9!T`sEX-DzI7zQ@y!~ZAfzqamTz86lrpc zKss}vn;-~BeOb1Hw04z1s6pNdo>JSs22k|$1|_G|f=}VC9$0`Y71ht+D5lOvD%9#o zt|)|(@j}T6ji(@z^FD`P^AoZj)>VS`V1E5(Asa&cm-6tcmAta^_k30Ie>a`~k^%FF zyP)h)C`_u|D8avXN)gDi-B_0(fxgNu{0MrNROS3cS@tx()!i&|3q+xxLnHxfOkA|q z?||0Fj}wuVrat`dpqCgdsCa@=37c_|5!hgWSIO}aiS!Th#_hs~;ZshgJVC6bmQ{_E zuK$z#?3~y$cFRtUHKT@iG_a_jywUu@$QzRa(|cqQ`{Z|so-|oP-nc+*2JbYp6I>>cbIZv31ojqzIG7e3D}B zBCtOcgD?W)X>afx{2paoiOz<1PJjqvO6421RNg}Iw?#|kEvxUJYzuuftC**=A&I>$ z#0R)?>4DO`f*L92Z)UM(DduTjJNNw6hjLuo4`{pHel$mGqBzoy?|6?T5ErTwiCw!`_Lu20 z@EJ^j@b}<|Oh5R}8>Iql4Z)2yT#ub(7@B(En%F(^&2HCEE)KmlSgoG|tp3%e5o+R7 z;CmcLnxinD^{r$4d#@u6p9?N#p=D96oEWIntn0hqw9G;>Qm#c00}uSW!%xm~0_1#9 zlTYoGS!Rc6{ltsw;|xg0OkYE$XgB!wkC#ZkvThPpavlblrjL~Rg3geu9?Ht#V+I1s z2cYQKIe4Y&EDtQU8-j@rh{a4D;3UueSZ)?mcR#>J z@BmAX8Uwu>OKJjUd>}TG%e31+ix*f3r`tl()lc7u_wMlC0>Z7pOJtdykJnh!FJpQs zlS}c`IMac4NJGw%*FwH-%}HFz9HUu~zR?Kg!uO->y}VWf=OKk-wLs+;Qap z&2aMLd~fNzzV?ltLF5hkdm@ni&rT3eIzb0ag_poDIcvp|DE1FI7{$J?A>nvJ*bBbU zKKJpq?9Q~SEQKfyqhLg_+)4t|@^4c-*_x0@d?SXT4fBb#t1H)hU@wP9V z-M)eG_Yx+@2Y^4U&tfcy2`f*kZ-6)XDDm*1FB#yCOo(}V)x@mDZU8nR^wJL=m~|FB zx+V*}d9XhX$-oAL_k9+(w(rAc`#ulT^ReNT8>SKM-x2d1mA1V2nE}d5{T2o*@233= zZee2(+ed_-LDuZ|nSTg-k!eq&|Clo}TaGm6G5AZSKRW-ixgt9Bftq1N+4Za^!qq% z`0tOb44U8bQ}+0jt4&uAcRV$n8{;(<>Q&%5EGvP+q{#7gSQ4O4M8!Tpld)0@7tz?% zg)<837I}o-iKhi&Y8oR}TWB2F?ka0>D#ZgOMyYXF=je9;8}6mluV!|DT@ z%kc9^WC#NY?Jy0tsL$eBBVVOmo&9+|VA<1h*!b#;pPOM$gB~^LSoF>B^Bhlp^)5D? zKuF!a{conyP3{Z-ms*`0W_vOO`UdC0nCOT|H4n88THM?(dJp>@$Gbmr9Qn=let>po z;pe@6*ZVbE!=#Zrdp~T5)1K-5HL+)ihWgJd-)Fz+jH}4flE={41b+kWSDlG1iT6|f zbD`rYFXj$LZdpS{;unk9BVYnx&^kPT|8Cw;aYw)gk=tN8AnDlrlX5H6#j+g&FKoSQ z$&53x*ObSsfg>>AUUE_aTnF(39%~$h0SBSiF!_m3l|wD20YaVlF+LO`aquZJBrg$s ziVy6Q^I;r$uopGGdNY2q+_FM~ zSZuLBF;6gTgb0Fzpxd=$&4|?)bu7f^zyY?pfiLBOsTeLO{m_Dh7`nvvTVP&N4dAXF z>v+YH4Qs?X08_o2FBO4OUCuNpZ`0*0D#VcE*Y~3_Kb(Q*0i36kvAuD+VYtSz#~ou3 zfQ@APIzDImgb(%+;p7FOWzt@8o|iQAaUm$PA&sp%JFwM?pGudRH4n}TmDme)7(G%y z^ATmB&O0!UpiZM6ml4otgM%GM8!GX~IIe*GLvN2b3-<(?@-Y@PpMM16pv)&dO=QcK z_Y#rX5u7MmFbnPzaKpzA-L(*)X5MoZ91&9JM({GUxw%i9301=NAh^d&!OKXqoee^M zg%WZA;BrFq1l-l|F-e8r{&esPfctGWxcU>=$Rx%ZaerpQz+#Yr+Wv8)^LJ{XiBADy zZs-O;bl>BJmrsg28M>iULpY2X_dWyD z%3^-FJ&BJTY_mMOMdHZ2_v080_+6%2MvKI(K```jDzcUmM4X$plvoYm?`FQFV@Nbg zzzc5sB<`Ok4xriM9t>k6^$AdT<1G65g9E~ku3o05{nMX17M~LM)m=`IaK?p@^{n6)eLl}5 zJM~?H9|?p3Jyz2LYV}pZoDHr54weq0#Z~f@*hYTV9JT?wm0Hz;KikIss->lunMb2N zl$f&HBV6%etiWpJWq@1ni_}a)RZ;m3*B3@=iuoF2Vz{9w5-Y$%V~vBa#L7l~sNQ`p z07o{K$Tz$3t+8e*o`}1~nj+%~^PXg>m!NI$fDl^o13^OS%lC;z&F~jiw+bHxLoF2T z2g|*~wF4*TuL^zYDbA0E!ys)WIo&X%Uk}hXW`mxY0{n;ZgJnlJmim`#h&wEAdqw^) zgyS{bC2$(25$)$hamLpHhK%)GSlO|5N2C|kyVw`@_?{1=PG2;}zLu+JB@>iW*P0ZX z#DdWpqR6K0|(*|p|1sZHrCMNg_S2p=x1riMy5tKI`PZeVzE*@m8-w% zl>wVX<>6iYXbVn=ZR9u9%5h5P{Man%XhbSaj2}4D0#RU{I#YO;v@dv%fox25}-oRc+lO?=QEz~}x0 z?g{Tv)Xy-%|HV(j|Dn&U9=1Ni#mcqj49@Kt}6;WUHjDst|`NC4eGO-LDfjRU*Q!Nrw!wIN*(St0?z zws_@I$!BDP)sA;9+=u0p7aUg45M>L8za?*t=r3$2h_ctL%dQp~b)i*cD2sHH`fd3g zhemaL#3c9+cNMBaGz1E8;0|=q(2pw}u*kiQEn)4%nNq$oz0dnqsP?i;AA(NtO#_-ZK@E$c16vi#V zZ-E2K#(wBx^(LIT%@!*SyhqJ~qRm$P8g>{~Qon#bQ1K(kAO-_|bYsE9X$v{q1k1U0 z!s3S`;F&)45_YvA)=)ENogcz#jp0tIgZLWtL2ex@;ts@=;MGiTkWzmUA`nN4&qBAt zvMllzCQql?xW^3?U1T(Fyfm&ev5?i&-^uO(4T7X%fQW)#lB)R&G-EKwPwq9-b~26L z9~evY1+km>-D7}%0kq0bdp^Owcl?umHTqL;#(pS50zza$Wy^R_n;IE(u`<8AYL-~9 z;4PTKy7!~>y4Q*&FVM|(kNY1f5lDp@Jp&a`gwl&J?;(IBeq`8-j$^?y<`?c?lBr=%o}`D#kkqSd7{ z2kHreaMax*_!dBK`GlH$0S7y!B1lOG!gVU4jg&}J~(G%mZp2Pcw1E=N*tqwpM)TD*|B zfi+V*R+En{Ko&9R*y+}WE6`rGA9xjq_j$NExr8_0^q6s3we33NJ`RK!7fj6=QS1xM zfmXECn{r0Kx(p6j6^t0t1tB_FuA+D7A*o8`S1kpBjZPETT&h#|@uw5RpaWCEXu3$K z3S!j@!rco|6ATEJ%Cf6g-6BGgSHS!rY%2aG@HYwiT0^e)Bpj-AEI&thg?o}M_(@Aj zbe?-s_<0HhW3CI$npPhgk2V^onNKsD3d#zLE!d!}%G{>}=5Aomfx`onD%8`|M)x@C zB%J{lQP+qP)MZJD&KXe>-p9He*P^Z$taTMx>N+jEuI$#9l&cC|m!%Djb8q35Q5~j8PXw3@$iZqBF~b-uBWA`SvbLJLEeWf z9l9FaG(9aVbFB@SGh!01oYi$%I*NfJ@+>JBsFJ}3YO1BKKP=0tE4#HNSXy*lmNqnE zSctsrBtc$w(xm>miqlC4I!Ft1a*7lA@!uox!*MXfff)Gz@HF99)m@AgWwqbHdUdrN zsVFkFC`^n6`V7ME_e!vx?vE~va zavTWRwdPTL%`)dZ-QlOX|S9Fdxtcn$C3uPs;-jqzbhjCl^c9f?iHU-&$4WGZyoaI#EHS7%7u z=OB@7M8gIX$=cFqqXF_IJ74^ zseMKbOT)yRoA{1y0wYyPTQswkw)@lyNQyMwOZMQBd4RIsl*9z(NZNTT%X(To2$k}P`iYvf(0~Zsg-h;9;US-e4^ote@SuC7@s0y?ut)D z`x#awws9^Jwb90GHbTOvRbpI#g_1-Z-o;;#E9IX?8AJjEL2TrJ()(FI7zD9GC5~`J1ZgcFClBoYecMn-1$J0K4j)4Dxv}oYdfqb zcR^DB-_1Xd#r_TcN*iv5zuwqbb2-kb6Wd^l>8BFoNzEG%;kKp#udw;zH~&5qkJQY; zBgTmdC>e_t#3l-N9*ymduc8ex~K zyi&Fp;^{P~3J_{CotF#|pg>lcrMnS>eqDYKNSiwVA2OF7Y)cD6171$S<_S1i z7XL%E=V5RI__xG;X>BxZxGGlobd@&I#Bz{-jgT3< zTeep9iaD#H!8M3qW?F;Gg5gs~r%D5*;b~p71R*Xg>BNxPplLQ`VME|(`w*OlPkF^s1*L;`tR(m}ynutL$Vns$q zwJtVYq~^ly%`3x~Y(FJ1eJXmF7;=Gdbsi!W| zGYHOTIGf(r4OPmQV_L&_C70gFeXT**(o(rWcVcYaTbR0uQ|e%m?M*oAco`G!!r-5N zpah{td+v;RHsJVq9gdU3fn_gTqTmRC)4BO^3hPmS6Ymy;D=xx_!-Rx@^__YCE`-yq zMkMoMo2?4AU&eT(5l=Bef<1P_(o~`T1`{n92uxFD`At6<>t1S zl7?w9afUVnFta`S+L~X1a8zzNqC5q4iAxMm+%mXFcbB*Y3Q?HkHTZm z+T7Y%lj64zioo|tmInR{4bvXuHZTIOHr^rZ#RQ_?+arzb>C;$vT_wX`EbK*mN5r|f zzwl^qEKudzK6g^}zSZDJNUgnYQsO_5xOe8HYO(h01b@Y702yw%If-#+dl>}-(PtS2 zV}L7QphO{Flg3_pj0LG_fGeIX3A|Ra1 z!>BMsTRF^fAfIHdZ&KpYbjnPfg7?N*g%GXGkRw6di`64RKBCU`jkDbR6mOzh(RZf2 z&w(+D%lKe_(l_k$bCoBmC9=TbGLFBPN9Z7Zye7szE~L4M(P|AWN2(WtflN7lb_GvV z*PSMF=GnELzr4?_K+P}A$(1qdR#&A+BKKU(>2|qLzYP=PW!l2+5--4~?lpYTy{Se$ zKTyDy*tvBuUvr{N>Vr3(84#*PHcm4q)(v{cuD{1|1*NYL{fKS=({WV4%{`l{v5dU+ zXeW3poFIMp;2htOxOfTHWOx@MC=Nm|Av}0W;;<%hFIex`HQ-v9)&w+yj(obz@CZV; zr^?a00vA0vNVqG<2U6%On%bgBo6P%lf5!G*spy$VMla7~52cNXLiJqY*fC7IU_(T8VH zIPZ2iXOEZ2{QOYBO|YR)-VZ!qr2Xpa^Udu|N{rF5+}g(IT!-sX69tKr>DQ{a{?x0o z$1)f;()(4HXOvkQ2xH#;>RVV4u_M&G;$mYUR!wH|MV~dhM29ML$%!k(`C%3)3v4}p z8i)p=G+=JScHe%LgZw@aOT#<3^qT0ZPzMV+aj{ zWCAN00Epz*vV1>Z`!qj$v>Eb>p5T%{+*OpJ-@u(vSJX~O@K{%|K4L#ACx``2#UH?E z1=fIj^p0Hy76q>bF0-LiV1z9{WJRiO<@S)5e9mvg_E$}FrgM?lS}H*r6B zqKzU1+H%&Vk_JRBMry}$mpU6YYmWvb!WUT|0sx;H#i4{SbBRblT7=FAeI(9Pr^3zy z9)S%?__}YnL_lKRxzr1=Ql^3BCVnyi8TFqCMvAnbXj2bpuZFDN8T?T9FE=q!%k^B6 z52bK7lnB8oin=%vjEgDm`m{7^sQNWNX`asTjoP6)BO8;r!#Mce;e($ z1jzlKK+ELF?z-d;ca@|!t~KuuU`@d8L^4(xYfNhch2rx1&T61*Sl1Qt>Zf4CzRR`iSj zo^gg)(tPULPZBri8ujnU(KOOJonzS}_;J5n$J1sLNsiL;4j ze1ki7a|UK|Cr1XWqaQ!BE1Je3~L%)n##VESo`&CkKD6CDsi@~DlIM9RFK;60B8 zEbQWHjC+MTXOclk!f-@Vn)6G&Z#WtjK2)QfK&(TIN4)qnV<-? zfU5~KEkM?E1No3*Nsb*RId%Xy&}})9jJWI;atyqKk0wRz&>L~4mk>g= znFDLmL^)5EFB0Vy(hzu-kAatXnb%38Y-Qz~?X7GMMhkb3hN}>8ePX~ul!3onT5(Z! zE0DKTty*GfMLM%?g^=c6*?nLucAz5AmR<|Ohg0y~(fo-335V^kEN$A6e_RI#`4Ui*TOE7P?T)V;0=>2U`xDoPJZ%58^`> zh-f~TE=)-1bkhufGISb<47bzdc}P^8ZXvAtj>JMV70MFXG}@iV+hp8FUKsy8&_*+t z_%@+OO;GkQjjs{QGK?k41~V`5*bc`)tPlvAH^tlYl+4=Q5_hTq`w*S~v{`%1Y5krv zSoncHJOPAZ-`UXq_KEv)k%cE1`~bH|Nm#bDSRh`*oc_zts_TFbJMD!dArO`O9+&zo zG&qx}5=%jQt{-!a1*t<&z?G9`(0(wDH8M+d>;^NL7ym#ee9g^~F}>h|#V|mX`BV4c ztWIhQj_g7_^7iD>Z*5&MGh#T0j7v8d!qWJlyk(J+oIcH;W&D726j0ee&L*xmv$EjPaopJWUCZ8^tFZEi@(N%eB$eesO(b9Ied#MT50N zoOaH%9}~i$l3&TBDd^W0_S$Gqp{N}F&%$#-G&sU|t5{fBf=F;;rg>JM#x!|8SjYKl z%x5y(*2o!HhU{7(ym<xEdgmLaSftBDEF3|*`olO_@fg+$> z@2q84FdY~t7${J9CjBBEJc&D&I!A@6bLgACzZ{arB~BH zkuNe-I_#t|ehxi;bn(rRQ3M8M*%bHEtWjLgfiR41rv{qzD84I-Zd#U;2;tX5`!QGU zN}V$>a|{X-g4#G)Mv)Q1$3#O8-NYu(o4pT~M)$sVTuFb#D51$!_wNdhD8nl*X8lIv zFAi+N8!Ux0t&O+X4l=Vk^Ca+k$F@R;evClF253&V+^v02{~Pn8F<t}!O9wgoYbS*>O#Pm~b5HO6j2eVVXi&x0%Na4nTHseVo zy8_61hzkoTzE9Nt;|aEx;a}PD*iJ;Put{d(v3(Ci2UB0KI%}jLXz=4b(tnNo7oIFe zu_JF*fE7)X5UUkxtIWQPc|Ai|#?t`h>j-AbZoN$2r2$OKXGq-vII@&CsioYJ3$tVqeu&oEBc0ULd(E>j{qf4SQFZg)Q#&E!t6 zUoZ(mYsh|< z_JQe{LnrTn>4jiRm+*&AsK$eX0+5ExTp1WT|9obh$Dg7FC!?uq?9llaG3x^UEXEI5 z-YeqRJ1G1$%({X5Veb+RC3!=091{|7eKzI8R4bJAd5xsXRsfeCYg_FzZzQEGB&xsG6bk&t%r= z{F#HF%CX8nbpB<`8sJZm`A<_5hR(m3S#ROb9FFg)>Tg)lhUo8lX07GV2K-bOs^^Bz zzm-`x^Jg3Lk5e0m&fmhU`}xz#{HLqihR)y3tcpK9%zuWubm;t!GmzEJA3jwUsr;ey z7cpxgfA~~+ruv;MDueRF>C9TnpUav5EcL|D`4=(k0{$#!{L@0W*8qF zsxmebVBg_Ypc1!nn{hNaQ#4eyt5#GEygL;|cAl?$=Lf2wVG z0IC+h-P=3ElN8roUhXBepjFAZ!kc;9Cb!Ym7lrn;hM%&90%{V-&|uOB6tD(nP5Xe9s4bH$R2}H$JN$4i0Kb}+cg{itOS#a3`n_83Dd<5M26!ReP)9tTP( z*~t}voM)-TnOdn2CqEH_Y=&$w6Xi$GR;H z_dnnkl~5r&3W^@G2Lr%A2wy@I{`9D45)_9L3~(`!!aI;nyIaQiH9#9C>Wihb@5R&z zQu7O7N9Y}UACW7Kyh%55cgXv+_3B6+%r15dB zQKfwtRSr+m!@aa_8{Xr5!cmX-ejB3H3v}h z#>hOFNmeKGpxkI%(I9ObXa)?>-hCirlimj84=R2dkRVmQ^kG5AG3*iMeK4B;eA5Dd zfce#rwntRn*E@DDMu4Z!$&~KUl@4o44bZ3{p_b}g1veY;A1LDc`*xUs^=A>!yIrzg6ABD$3 zi=@v1@DusZ3_T7tUr*)wptlTq$Ie4ba9iU%lTa@;+B4X^HRr|v_1`hf`t#KRtW26j z_hJcP_m5TGK>eL;sjt|SG_+9BZ>=6pn$)~_UYa(pH7a)w1NQ^;_u!iud=EyC1w0@n zGhwe&Mt*L3Zjhp;@sQH5}P1qn$6Q?@tP!oT>*e@NL zj0YIMn=JJmi+=OfzhV{Bm3_^qY)G;lpuTaI`i4U<`D${y&a;d<2PKdJ>O1&G2A{*L z?@4Uf>OTJHLXFVlsqdSX`Uabi)B|M1yha6stqTM6=MD?}ll#l!8t&iV>@v=F!SuuneBrB<1P#Jn2#&SXbLgWC$H)lInhbf6#At?5zvaGr z^`zjZ1BbtWAKbupx4K;rK+kKPvItIj`Ye~(_qH@bv9F2%HfSJr>Y@2T|90|9NxC3& z!(PetT%BgQPM#}45f}k*lW>kaV_Q~Z@+WW{7(OO-hm8IdXU03w3jC?3PcdvbT2DO- zMwc9VS}?GRY@B!EuWhZTGyW9*s*MPYXLKoe2YloBvC536*mP25i}B~3UM|LLyu^Wh7Ahm(KsTu#O~oxZ(9C^oWYy8n$$Mcjfiqh>XTfk zaAFkx#~pe{-LOE}Ugf;fPH(3falcrg0&bHa(fFyT9xXa>xI%qbVy*B**|b1=I|$&c zfUStOPE5E19X_>6e}`i|)<;G+<53Ajt?Ook#N$_6#AsE*tdw?~OTbhHc!qNW1XIjy!uyB;?;`^5ALde> zMQTD{)m<&*kv1QopMX+i7u15X7NDV zvsKPy7DQ@v2p0Y#Ud(rqyKp!YL@xge83Gk+XsBJQ8ASRpWSjIBdB8MXm2iCCJ~FHMHP zBLwszaDBM7!M4mh=1e>0{Xqf0MuP`=n))@0{#`7p=-gtqWEX#p)^Lxia#^N>8~Lq5 z)j|{29Sq`K%|bU~F?p=T6aYOIBjyRd@IT|jgIJjm83+k+xz$zbLT98DCl1K600c#~ z0wQt1Y|>1WK*S6D+6eU)Jn%oG;6(zJiSZv`(iy2=vu7~fSW}9x7$@`N(bw4!CdThY zk@#Ks0Zky7#|W9Wg^`W(@lj8BO##XU>We z`f3E-hj;Z$NQkkRJbnX~dySyE_`?5;4{k7(XbltNF9T#$ssn?}WFtF_x)C z6bXG+OyrzX;4yc+t8>;={~!5ctba50dQ-3F9L9uY0BnThD1yk7aL2s$stt=WLKw{E zCXXzOSj&s$6izp8^voQ(5JFAQ=5CCIf|dAkXttImsskl(DzRSunBqT9WS&J@*Go_e zsxLfXGD}o>U@JHdqi-Y+94c3B`nym4c!a@W?gA&1B}$*EA#9#%i+P*X%clcA{iafC z83vbsPwX(4s5ae-lse~+T%zjLIntUop-^2L1SAw`c^RvT`j;LuGOq2ivKWFQ9APP}yZ|7eY;p(&*U!?{)cywISOq`LZC9m01El5{X-NL9vACRI-> zIGLwaRx=754EFo8cA*808PbB;axuwvJd685{+Sqne2D>1uTDH82nR;Jjr<>yc1~Bn;oUCjS6*Eee*FvM#1My*z zDg%$9dUGs1T^y^4I*U)eeFF1hES}6U#-fd5A#)K&q=1PnYBDz$C|LHWr{HSOzcpBr zb+l~AmV0#XdQ#ai#!2stVRFigxp8|HOtmJ4Vc>@xU(XT+ z227{GtdIW~l@Yz6Yc&2SRdxY$J!%)&hMWp0!CtHuGW8zt83Ju5^X&b-ZsF7T8};l= zEKcCg34$mF&bbFfKGmb{Hb8kw(({~ZFuo)QoS(_AN!Uk~k+ zVe-c`x5Jr}Q9PL_4i$^QujCjCqVBkD%OP-JKN0bhDbJ7x_PL*k78q^E86TK_R$9rf z{AgeS-r$pRDpoYh0ah4%E>Mf18K&LbbY$UDX|Xg4at9`c zmLjxU1TIX#d1qW6)xli13#g9xe*#KI#W+u0hb5rVb{_g+++5}ctAXGLuCYa3EQQ+Q zyM&)1x)9D`;H+AbYCggTA)*e=QxPvtSoVZpWmutbRjVy{55Bs#oO2q6pz-u0(o}YuNC~J_1OZs(t}3Xf$UZ)DiO0Oe_+H3HF3$ z%2+;3AQHPGyP4;xe?#~i-ONT$z1h6438eZ&apF|4I2i%()Gg|MN#B`p@a1!S8Ne$2 z-+>eTW7;76#uPk>T+vXM3*Q>RebC%rTm;NwFsWSHLI~C6#tk>Zgyi{Nu%aYCb1_bW z0x6Cg{#-by>Nq>iiUP0UqsfhGAud?B5w7u@rhX4wkjafQnFD(Wf^gKCZwW)HI~9Q9 z1;QV}3vcEObuNjx(X`&6w;I2Qrx=`r*PP`aRfP}$VDr)EduMpN@4*RH@=DGWw;WwX z*orQQeLA+H--)Qk73wf-XOP*20VAWsxSA9zZ_K+%ee!o)JPUEr0S~c4K~a=k3&F@B z(&DUebrpHVD&i*FsESh`I+hp@@hS^$-nHQ7PRJJ)+`#laQ#}PMW*Rr?%o;a@qjLTx zxM}q4BzD-yb-A2RJL3rq3g2%K-P_-WVW&9&-jH8{^CLtmEz9(Vz9gf140P@j;iuI^ zXDiXkgUK0mwnV)xebM>#zX&?jU#Se@R1D;jO)3FFF6ya^Ungvo0r};Su@fsxA(Q+m zAlUU~s`gMJdR=Si&dFsEgN#L2eA473;6z|`~M3n?7oBGB*ovyKW)0_*5n zDuN}oKH}ZVqK`MeuBwD!O^8$-NxO>@&DJe{Z0$b&PxQqZme;ueys??6fr(ij=2kF_j)1 z9FtuaL%EbO&d7r6cx1$o`^3YNv{}bum_HHE)^OEUo)Da$q0P$A23F$@a^G2EPfZ_h zM8*r$of9+M#K;*)u`nU1?J$EHa^ESam?l=5L~d*D?zM=jt~HI|!2IwIwJzI}&?jvN z4uy9*HnCx@ng;yhC_CqH`0IT3;96NkUgLaTIa#R*Yy%~%M$aa$+DH{?d}yNj?8ekcw;LXCQ0*u!y(K>U7a6!}r@^Z>Pk=C2%<+Nf^5*`n(YA8Sa?B z1Lt=22VVQGT}x;RYF59)G9;TYFimKcPmDdm%Vcly5>RKJr_=THTwEg`!ggk-NG<3# z){8Bc2JT1^Gh5>K1NZ6)Sf&gV*3k0F|15c<%qt(_*CTuUWa&?b_@Qa@w0YGg8+ZvD zNIP9xk<<-DbYHAM#jrVv)cmleg7c&?5652vV97NyBSKGBCuUmbS>2~;-G65{R>yya zk|vGZ2yV)T{1Bo6g*}`k*cPtZmcJ4Vc_--5hBel|E#lwFtw+w@o#ipu&bXV3dw8Yj zG8W}dR~pIt!&UncZIZ1EPFBJ3X@q&!_i55XY0~;Q?;v2I6)3bnfBA*#%1j~Ir07#_ z0?WyV_$%lEMl8>>AJGMtV^a^*wb_ENciv&IH;dk2tSyLI?{5-SrzuUE2z^@S-CtE^ zQhw9gdHIU8&xxSbCJp;>3+(R*?8oDuK^qc3#602U47dRJJB(LJDtg3{`3sWyk@zLZ z94|KTJ`Ef&>X5(^2M&jKj@bm1V;YC?Ye;}VG-P$IrF&%N?LmwTeWl`TB;gi>>UWIE zJrXLhIk`9VL0He*#KMO74gijN>Sa3Cqsd&z)>#_4U-GSse+BsxEA`wm6od4DufkS# z_JC`m)dN0Jg`otR?O4;N9d`=+HHnLfc!gN;E0Dob|2%$|#DvR|d?}N?J&Plw&@S6e zFv7vnft#KGdl%l!68TSklJ!>3BSEawN;t#TK*bhjnqk#S80YwmmqjrhXQ=s*$r-ctfzxo823F0J)zcg9m8eoPJk+ivcovw1$lykF3N3DP!OkgHUxr;Rqg&yw0@OrSP)M$c z@(_HfPhrQ7_kAnuzz?oZk;P&Ju|j3*Q`9L;Tol1vldVrpQ)85W)Sk}4YjOc)8;w+3sd%8mev`;`P*_$&6vSMh6#NE=`33Vq=D@^RU5PRNOzd7Qkrevta`=j3d7Nt0+LjCHXv;`T;JgMdV^(1do1S^Bqlbq*f2=i9U zV0;B;7t3HkPbyXIXK*miMT?;)r8DcnARJX93R*!Ovm_>=eyFU5Y6N`ec~g65^`hUf zpJwzTPyMhb?mv}lz4yw~`bg$Dl&Xb;K8SKaH71>Z0R80wnfe3hFF3E}@R?ypFg`f2 zzh5@P3XLrgnygbfh^czgemFp#fPcAgy&A}{CiR!&ME;8qHO1~ni!2=7PzD?iXW&MK zuV{nYm`)lDOd4SVueys?=(I+aszi`d2{&Goq^rv={=#0aA9@jF{w2^*V@)TL8A&H5 zx41`YQh1NX_*>n;^hk^sZbUaSC9=^jLKLpFvhg7%uN(P{i0wK0U2fabANX4)SAqmT z6qO=abRw}X0mxEvZmIwfv>3OijjP_>ff3eG<<95hf#j1k#3BW&*4SsqF zAQwGzvK#h#@OH#nyW0f*ZyGqv=;f+RZ1lWWD4e`}`Hg67h5C?A!}r+yS!;FUd7Fr( z@y&oHK=L zeYxpUTeC~qCc@c@Q#XULo6SPMdQLDFa6|MDv_1>Sg3-k?uZJ)1954MGZ+@Y-N68R0 zJCk?x>9I^w7D$6W9S2`;UkFEFXyib&v-%Lk`c;r&j=X?PZ<}rP$mbyxwhs{W#H8IJUIsk0441jx;+KQXieIm)6Mpzq&*0{&Zu9w zFIFNWCZi6scRgsJbgqfk?GXo$vGtf~AA;DAp3uF@X1jtv;^nOm@%CRrjQ$k#DdL03 z-R^O;7nP_l2xAB0g|P>DUr25cR{^E+f~O|Vs-weP{Bbl>wu9o|;uDf=;x{99t@xMm zikSMNs}I>$gA3!*h8_OV)rX~RQy_LVbnv1hNXc01&k)HSVn~l0rDziCK^X{YJ&D<9 z(81UL5P!Mjtvz$@PiO2dHZpe4l#JaBGl!4_fYIeJK6UYUICkpaKkpQL39^!D{K6cG zi;YIX$WzEZgihA|V}|N?_!~M=8~AW4qyGqGk-ND+Q%HJO@Ye&^xbhUR;ZOgZ)0?Bv zXQb}Qj8vnTJ2^#&fRz{GH+Q82zj?tk66Xjoh?(W;6b%dLj6Vhh@$a{ZI`BR`x8*PU z@X2mM{eSGe4PaEo)jqxn8(2edgC-g^YSgGyK%>wK2Fi!TMoa8&ARvBWTVJ{^zOCYJ zMGKO+q-9yRY72dBYps_0)_zJ`D`*uHpd?tTV0kSl+JLd0bkjDisVp{<-}9WAd-ra3 z69QsC{{Pytxp(fFnKNh3oH=vm%$d@1yX@fE2tsortRjddpSU%xBR)Xk`dZ%91;vHC z+cLAcRT~Tw%ytP}6#RCHY9!X&uk8{aD!rlF^=eg@)o2me3!jiSzXqqGY^p~(;Rg9; zjo;U*3Z3m!Ps#cvQ^yi`D5s7A5qN`W^%KC_lwYPE#x{VMti6p7fcb>E$<}z*Y>mIr z`mv*|-I)*+8PeTS%IX5Gc!Q;Pyb#Y`^L0_Rz8ltGYt0wbkb(Mhk(ni^ZL+v1T2Il| z!E22zBXg%!b*EG<7w*WBhqD6LGPemsH^-{_DRhuStH;@h3N_4GwT9GHvjpXLR{aFq zSBFa%aHZ+ACD@_IBQ6TPdKoVjgYpzAp=uw-nkDBV%Q~sgB!Vr^`G)P8uoT|Y;rJ?4!R4`%)L8^RfWzIC&zR~y2!%g zmUKMYiN}T!4m>oZ#zPp%W8p!62*Kmaa4V)iL?!SbURPspCc_26+xQhCWH^mXr#bBa znNG7}QyKPZxi%*^;_L+6{eib zYD}|aF8F(Z>1x1a2pRjlX1c_ufy#myoIGmYCi-88za;Lase8Lt&Du+v;|q|eGLA8* zX+dlx?)m5@@TWC!RX056Y+$NEdaHyC-uO}oxM{|&Yz}?NV*1fo{%>a)v)}-YZPR}) zbEk27_7~y*^-HkF=g<$=*Y|l}+~>V~VH!Lp8Eed>pVGs$VrEC|tlbwr-WGbN1==tO zAa6H|U#~51CH(7gIFM_P84VejJqi+&C8%rRH-IrC2DStof<2EA`{*Gfu?*1u!^eM= zg}*xs{#{VJ<{~5A-o=*QS!SBw-Uqc2Su<_sX>%RDt zJKiJyP~>1G&1$&qq0pmZni-0=iAb4g^ir!ui~dUdoGq$QO|Y=qEz*#I`#yloEJ5Wv zTGTP$61-kHf`{8;G4Quw4Qz3EAB}>+gDs8X2Q1RyQ*Gh14<~*c_=rYP;lxKnYJ6CN zy7Q$Jg*#qE>my4M)E=>UizGI$s1qcJC>U~nP>%Lti0yJ9aJhxR$I}sjUNKfZ4$GxY z5DlpjUuudmE3K`bKo)uOFZOiodl;?_zooz#}@%mp_>=f8ZBgBX)*ylK3~k zAhLN(;v=GVusBr1LM#MXkORRSCA;vO$H;yu77r*E`?g80uQA+)%O8Ea z3Dn;^ixw`$F_Uh%IS>ehCs4iy%EKSoXmtg1`4?6zVB8IRl_xg6$R}j2N4X$t8W@fv z&@J5}S`JLb^E6njcs#nhvUmo5mwr?LN-IY&Z3&gF*!0rMJbt^2Jo8&rF9a&Blx%nL zV1BF`86t~E(C?naYCJ=p z$M>72dkT+rxrVgfv{iwQatmoHQ}|4*J}O5{Ao@_XGgMsoo#I$Pdu4GoYXC$W=}W2C zhQAc*Onk;r_g9}9hQjwB;K6NP@ld)9tA^6iRPIY)t6#Wd82sFaK#lH!TZepDSW_|# z+f!QNvb57Jq?(}mVfQN6n~(JCJY8O&cXgRmB=|Jm!fFpr4*6CUBmZ ziJy3lLi~30CGhpBk3PQ`fgZ#@A-KycZ_ z$FcfvNDk_jKIIeJ5Idq>{rShBcB|S7)pHF?U|JQ@OtmQgN|x^m>`liviS`i{2tL1> znkw92sgC^-F@zIBu5N~z?@`d3=>-MGu%K=!C^*&J8ieV!GggER{bvoT>gV5QdC=Rs zaY+s;_HLk;45DM1^D9U~+jtCT4^Z-MfSqk@*m;L@Rqu+bgWe}=4k8=PbmG!Rwnan; zoNY(%+|Y)*OP)-nkks2*{J{4O1&h^xn4I2X@2#%E@=o)E*!cT(@a=$lKWrbTwu{F zQyJiC09j#$rlN0(Y_TZ(+lIag!ovvnTuv45SvmC68FT0R)LAc*Xqd&$_@4AkVq`i5 z{5oV$^6qa4ae1CpO7rDSsBtDdeM;Jg%8xmbqj9>j&oDAL3 z#w1?jtC=`)HJ`%;Esfpy%K~6=l>~p%d)>j5EQzp(qE- z-Q&~}_~#q&21upE$+|e7x-=<%9_HJB;T!rJUa>uhnD8FRF7&{CJg%Bz+~6?UV;!P^ z$+MsPcmiclz%%4^@pE7xh+G_+9;z;t$^c8JsI)r`j=e#i`AaCjQfSU`)Q9k6ap-kK_vncn>KLHP}d=L9g_N9F+`j{ z`#%QfESC%o9&HQXroQ<0OMg`TvM3}LqG}Y}gfd9_o39)ZNd+H&fHxdr{{j?vLzFq{ zY1l@`{>p**-1^Eey7tF{raYeg*X4crD3llJ#QE_8D1V)5JmzNpeTDle9`BQ|JLKSA zd7tImAP2>N_dGsAkY$;)1wTh~yM<>{>uCKwh5pWL-(i)4s*^m10p5D1QVJXwoJwl> z)weagY$jzxK*|r6Y1-W0r*N>epA#(y0aEzs$mJ{6jNJeQ|I zR`mhV?awvs@AJ`We_*bie|8@boge#qTWFm1JISj!Ki#^%!SUyBL~l!Lpl-j_|NVTIbD5fctNMVX_kW*{R{uHszYj=y|M&T5<+uC4 zzwcK6Z|;YG>p^JK|9wE}?>rW^qXn^VT#E^<{>9w--yi(xl!SZ1&!-%}Ao`8#k+}PZ z{Qddsu+Qv%Qy-oC`fJZJz||Hx(d7F2$~e!-ZQr~7!1m^q&E?+TcsDdP>~+I#9D8NR zuE?gs-m{KEHM_U!dUn5Qsz<^PrQ$cYzq|bxD}RBCSGGB@*xtUqJ%4j1F6sqPWB1nA zc5PCd@sxP`wOz06+Wn_Z`p@z|hH`he=@+%>)n`9}roH+@{=VIK6Mm z{??G^wY-<{{`%HUcwyVDvGuR;SNPxmNIA4Bj$znvNAS6y*>2mmx>#pqa~pgva1=z& zl$6p`dyJh7uTHrrxe#VkENKu%2u_jlnl_&w)-Ua71-H%x4NE=CazjIQ|F>uBz~tE7 zw7X}|-rZYwx9#rQtzK{5{qAeKH^pX`yWyD$3uxr|WjJqLK6LlZuJelu^>b{x`)rr1YuRM}goeD9y9p_g&U~B>>s=O|Q9cx}v3&2hTZcFA9gcT* zw4nUeG3AlX`6v>jXu5k-Y(}}qQAUm=Y+BGTsa)DIru^zn3u5l_1(Wf5+JZ=1S*ZBy zzipF;g7tJ;R4>9pboHj)grw74Q8|iqW44o06GfS6p~)KG`F6qQvApmZR>37waO9m+ zL&MaqQo33UZQfM!THY8C0F(p8K*ha#PA$bd@;)RBzS~;%jF^Ok#B;CZmG=QGvH(G0 z*JmHvGh#dezw(dZS1peZ2B!91Pi*c_|CRu~9<>HGI-^%&LtV|rB!}13G68n^Ld7e| zGZzVmbET)?2mktUO%nImgHRJmbuq}~gU?VccpX}0xB4s-c%SD;+7<_xUX6aH_j)n< z27mu0M<{n(^hn)k#k;E6!3^q6dJGt_?E)0!? z#kiPnwdx(Mc%`sf!}JsiUA;N|667!kMLPZb>Z9Kr485TqigfO2==e6qB)S*7_s881 zp6l^GdAIt4x3IUoaVP#*mY~?(vpHlhv~4@}@_vSV-?2B=Ag{+6OVf~;{%m}l?nOc0 z#J|V!Zv+0lfPXHx+ns}d_J6rU4zuMN+>D=cYpB9AAzrgb{qSDIEy$Y$F2Km4E6l<0 znfe{wigO{?N|ax?*6&gCp5T!p~F%WjXlP~f@~QxjtW*AqTBRUSWg z;82L1N`~>5@3{irh0CHz>rN*988Y>~I+^SKHm!xrAwx{VM&HwbLse+nQUo;d$l16O zS7ING<1N#<-4CtY(=wIQ1_pwsrGaCI|E0>|(byd97J?6kF7?Xo0LZ-{I^&9h#J&_* z-|C8Vb>N$oce_4QT)1LdN#d0hxOHd|*l~O8}+LZk)-l$-m@&UJ)-;D!OE94ZAcli~R>5c99#>OYSF?l8d<)PtO`2>t^D~`qa zymB>vSF9RA!JpV}?4hnL%O#=AvYEy2$@>%FqVYETqS)2^D+j*#5NqVGSAu}~^f!e6 z(p3UjDw30Atjqd7J!hiebbF}-t3nNIRiD_DSOqICT^roKc)SPMaWfpy*Tz8Y3sZ#| z9NzV`_QIjUZ3FP=mgC-i*OjWz(ZkF!qxCknG$96mo zvU!gJG$NceZP66{aP{pUvJvn;=|3s*JU9Myi&pqfvRI^mdmCpWgtDHMgj+IYS z$&m$A((J7qt!)qrWj1OO8in}@_S;D~n|9>G@rY#jKQfawU(A`SK7TiNNs{Wp`ze-T zFIg+0v0z;7!ZsVVj;gN8>2C39y9r$%I1hXt2w)xz<^~usL|u)YaBkRfSN!-d>+Sb% zJ;HMxtvKw%==vb5Y|77uS&-57&pro~wK!T1s#<#2R z=40elb)^_jF^}-}hTia*>YJ|cT>$92-)TmVAkog#JV_|Cd(_u(J)#d+X5R*sQ9Mkd1=#M&7e#7K848d?E^W+v zzT|D2|4;PX5dQE!nO6A{i;_d!WF0jV-V3m!6A(P zS+`S^x1EutJM+Ae5XSAos+|?F6<1-muo7Mojn^W{>?;wxUBKJHB-9yi!}6&BfvC1j zrOs#^7NyrE;sm#9-QLJ|P}RaZlv>pmzh`3rB}Z#`=A~|roU7Vn=|)J<5lln3Jw*W` z{tZ^r4U&YNWgL+4K3RYwL${rQdc7M~_)sqv#*B%C ziF|l7$TFm+9g}$Csg7GA2Rkmq4*)>JC~Pn_1ufG&#DYmslGMAnD-UGFho~sQsn%lD zQ2}Oahu&5y^aI-?TNr16mfvzMD%RTY|4COYx4Ys|l;3d&R4Dq_h0cH_N+DKbs00rk zeDLC|4P#SXg{1@}iri#zEAqs#`wlGt(V#8$bP7@j*-O9y%0blcM%T5}Tk1Sc>*aVq z&lpSbnm-{FExTuzbk8oF(b5`d6_P-^9PE@{605-@4lJ<~AU(K{z^F!=Ux*JMT=Iq1 zEZmyxE3P;x@#_QvT(y&|j(q4SYSp)u05x=pR%>8QUV<(%bjNsk%)bpqF)AWfCdgc?k`n)dUcIG}$+G4PL7#%7)Qh^e z&9x2JYX#?;je{S(j)DAd`Y7@z(g`oGBJG|37j%+vYPOvls6M!}$rV0XeHhDGtzf9B zySjRHc%Yw2UihM5m03_(Q{;`rk-|QZMS@Q~3?&FIYK&*ZUD>4Y2z;Q$X9r3Z%(voU za-w=2r=m>xZND+)C$2(Km32jnkX2k=xZVX5FA1G7C-!{&*4zcL9GvM}P}vgx+vpc| z9EcZPfzgfc;l0<#r{~U3p9;6dayE@?!v9lPz^v|vTGCs50}zdMjq7cEJ9Oh5buWbG zyt#Ad#&*pe{rZl-0|Fo>Mm^-j^x%TPW1{x@)Th3K(UXMI+t?c_9oOXZ^@e-q&YFY2 zk^#^|W4|5Oi;Koz4d%{OU6^<0%}eCQev6uh&CzXyez)nG!FCBqXXD%WHV*IfCT7f< zqxL}Hj^45(8JucRiURC_s;#LMme;W)pXKrxvtk~bxAHia=u4uS>-n_=Qz004&r^>gy%PE6L zZyNV1l#0o{%UrG{X9tp?pd7ZE72sSNsJ=iB6y64-kbT_hvH*eSsQ-D6WRskW&JHvI z(&T*1k#nLm=Y-Q@AN;{89IshLLvrN@pTTqZxH;;RFpR{yR#x@Si^_K(+4w37nRs16 z=tC1vT???#`RYs9h;D51Hb(J9UHX#U*kAUt6Gty6HuGbfu9se0-W2W#@R(O%Y6Y7R zbmP#+MccXnJ8KPbQ13)Q6sZoD2Xy>8T~T;kV0WKvf5&Q**@%bQglx!Qu)159fIdGz zP>+fX1?Zk^(eC1(TeR~w`oP26Iu=rT72!q(?VATb9={sUfqBy z<{^Gxa>8}JVT6YB#Qq+2e^G}wnDIq7o~KPL{bKkn*&(;v=bxkQ0|x-nSeH6guq=zU zpkWIV*P|eBHl!7o*a7WRn)YvBF|YTmW*^2zKx-+- zs>yT{{v~8IqqPQe=cu!R=)8Fy39N-?1ukQI$iac_?3xJ|;uPLlV1dlB^lzP#AqdWe zi>{uwC(Wx-H5dmd1^y3zDFt@G#kl(ra$w^g6FNQp}3Oo6a_obxsPznQXbSmdS9+$ zSnWd=EH44_x*!6I;OS==u7$g)7Gd7TKY}r~b^IQ`%eQ(P_u(&it};Vh(96db7r&I1 zCdR!8u;t%FCadBsBBK?u$`%>-A*+TJN#kA4Q#`%l?zt+7)@Bg^^O50*1i-!Mc`X1+ z1>JN3Z~%043V`3?-4Xz=;5kD8Otp*q)m@~X2!OSK%n$(VN)Z67`4s}d)&e$#|7L{1 zjsun$$hE}4BeeS%F)+gt1NSavT@(XQhP$W53$9!cody?vOAKfkaI+-?CSpXV$$&F} zE2i^f)#>s+{a?tDl*7BfV%2O~&Uy#^ahy z4*>*rGe zQy+t25kA|~wJcu+F&=25ET0SR>9?^1e$bR~l7c=Dv&Ov|Yl;0bdR@<)iKmA=q{zgQ zaI!BwIya^0aVG#jX;H)G`Kq39H%XGl@gz!8J&w#E$hf8;!u#JY?blSPAXSp2%Ds15 zR5?RaWewHTS?Y2?3stVsWSOwKs~5^`CS7<^V8G@N^ifCytu!{7f-bh79e!Tyx`J6) zI)puH|IaMsM#P4$bPt&{Idt;!rqBtIEp99@!n;TBZ$6m2|MmIkylbx8ByWkoX00z( z5rv1YXl$yYgE6b3!q`ynI`>tPlkzE$RV*j_%8+Rlv znCuw8@Y6vw>m+f!NJXKtsAzgeESi}#w!SuFXCw7>J^6LhdNR|d^;}tOT2G~7lQUh) zzpmpoEV7K1_PUN{=gW6sjIqD0K^$FSUCGv4d<)oN%~eknSvBZxlg)4&)9)?L*UR zhoxt%n(eGzL+aXDf_g|c4ovhKoS^o^idlPf8#~|xR>ND(5J7#TM@~8>@jdhbD5jB#u5fPRO>QS5 zf*NmjweGR+)?1#riQL2%e6Fl3kO;q3G!Q2v3OkoLFQ3F-M5uxV-^uuk{IVD^LvjeuG~&Vpr|wg5Z6}R*)E&t`*E^raJULS8kv`#Dubr9|1Y($?2jvUeS)53 z6%UZ1(zlEptuf;zJ^y+ZGkT+JE~r1tsUXj|JeFrqE2$z3J=o{y59pTYF?#LbA`S_n zztKIht|tV;y!H-+#r;jo^qDHe@g(K>ky*9DXD^2?x{jCB2_>ivqI9)gRlQA(RHV{J*GEOgp zL^wEH_AKZjaq{;D+qs~N)UUVnDw?F3u`Z3lLSPWBxITrgfFfvdxPaQ=_pv>UrJDI{ zno&5e3F;#k8L%s36?ge_yCTOIZny!Gdaei~U$9~h@BhILtu2Stq79f1Q=)3Ck9Y>7Zu6Gjo4HLE(WvjH|FIz0oPhP{9E9spirP52_V8o z*qCkFN_@<5st{ac$@mm-V9a>T5iCc|g|=!>;-3{XupjdY?qjJ{p}3b-;OOx3e^I+#SS}RZK-S57~!&3mFhJPntQC&gD6Xldw@TE z`cN0|63tTA@6aj)F~kOpT%xuIbye-by#*8ptX?j*+?BdSjp`~qX6|6K?ERjdFuur1 zAlaD4m2kL&GO~0#?`fFu;}kWYc2G0)Xc{#EJ5Ftc&C8~y4Xmlja?~-OcTjT_?Ns!! z#0-NCWqmCtTnuqspbK2ki*x^wZFSuXV!3ENo+U=(6P$e*2Nb!wB~Bt-Yo5SetZ-$N zn?rhVkaSC87Qg@?!4|Qnh`f-LYsuieNCYAiL1Z`;@-nVa2_+{<)x%=Cq?j%g^K;o# zlgnI_(g8i_5^N2F7lGc1WCFTv%0+MMeMs+^4MGmg8y^DQaL1kQoQXBt$Q#?Db*(Ah zXvLL6eR;#BS19Xm1{EQ0M~p+@2HcQrbsLY*V0PP#%Z(#To7im+I=W5lSY{AByC$vM z09&DkKh17C6Ga4F0UKC%8_Q9(%XPOABoPumytx6~NS^;BS~6PPMJsCxZmUyszRmVM z1AZJWuBjl==#3MroNfwthdGVjTExJN&LzK~tM{_beV*H6HKuCIKhh1r$}wlH?c*Zs1;VQy}j zZ^_r|p-FAwEjEyNxC}*e8g8+Hbe*KSQ4gi7h|-Bwl&*5I3`UR$K?qv78u-jDHVEX3 zTWp#_hLJk{4ynU!Zg1l*88iLYbC1-s$Et^twPufT&Y-Z3*3mg5y`HOdJ=Q*YAGun$ z6G2-KAy-QuPNSm8)!>s3DrS?bKNg+CQ1K+nRap!$8WaO&;UX|-fkhIL8iET>wG@E* zioPVGutck#pq@-`4GLWGr?I3e9LI6pRu!dcYvN;CBFjY@kjER~g0fcRF(9-&MiG`w zwdFB_TXjhxl&Q~(OvMGP$t?_ZNr}pBS&^s+VFNGof-Tc~U0R%82>}OTfcPodS)l`p z=%IzFbuSJB)zqq=EfQ9E@1k@O^gsu{izsbED2o9_=`h)YFqh*jl2!#R2LE`PD4nH- zOY06-lv=H|1!*Dq|5n5Q{}H5ShR7~IUmjR~B19?lrvi9gVt_^NSi;3Hz4&39mz1ZL zgO%xJgT%Y}Y^B#b()nzq-{VNIJFHu%VSVzYBbb@d{)sCkbp$ti{3q+LX0NnttRt^BbW`Q@lOaS!v} z{~!=)*vLICmNDQeZt&Bs&|B!Yo{rOqAWB^m^)-ki_2L^DVYHb^XwIEW@cjwC@a)49 zm@mAIbjRnnr!|eo^V14G)3|XC-DM5UeQMk%$?Xu=XbdZ>RcD2nLh41<*CWLh8ZTe@ z9Jxg2XL)@0tG7O(^Rq1MI z6NDsujjU&HqM6cYrqrsQ$E_x@0;c)ZJ0F*Zr&v%_IDNV(&wKC5B90ADH7v=|YzVW5 z;Y_d<*bv4T!J_aU+3ZVPek+w8qWgN7(xdsmHIZ%kw(^3X*axQ515RrHevI z$s!7MdOh-5B9hOhgs1d~(V~;jNKf&hbsp_VMIr5AS~Lz$6ne6V!u+G!r9w}fKe*vA z&L6aaEH3qhj~V^9J?;DfW}y3t&zI$!&iy=UgL_)AA; zhxLbU!JnY~#KIjGO0K_| z!&%jh`#2Y^fyo20(Y<%mAJ97F2wE|$JaXW6Z^nJm9^mlqZ6`m$f!ylfvjPuHu;pgZ z7bv_~gl6>1B$mB7(#FlF-ylw#rRW;Sz&2)P3F-`41{p0Ej_XM*=D1GaN&@SIUdZKp)K(U@!kpdrWK6QDC;V$PCCV@y%PYHHOWQW{_z%oL-+UD>&KFOH8c&S8A1{RMVfFGX<9i6_&6fDqEE8etynx)QM`VY-M#1$-M8MmV?anQ z=~~z-W+-^u7a5=|9WORX8QA@F{CzlJ*SF(ehi$X}jvpn9E7S2c@S~|is~~*Q_1a{Y z)YqTD#KX?F%yW3C=~=)L4F=HmIWPcnSPZb`AI<=#|I6k6(zNkTTPth~aK0*qDQ+}+ zXiLsmVE~u}v}I877XpvMazL{LHfkUSO2)lZ3stzy2ZMrN`R<}T@5B|l z@LZ{dVHkTDdur8;rA%fvc-~Vsa7>U*aET?&n5+!4fvMyYN2-HK+FZBeu8Tbus}wD| zTUez?ONi9bAH;~v#|VWGDI%lviIQHUaNfsU1e8@md`h;uZ3%&kfX1qy!O+=1qx61; ztYu3GN=^SYh_*U3Y^Keg-Dm!E4pB>t*rZ}NQm?)Z?ODQ z@svmndt9VU*)*M?=l8z?&WLQMS7IFu`E8(zh>>*eI0Z{iGEG&bR;MeY_{R7QM9OD^M;l%Pr<Jrape&5zyg@1}iwsth4P*?{SHj#B?zkmiWymVQc z2Y9H1gwYJ7MG+VXIV=YH$4i*3{4)k7A@N|y2+oF?Q+7Jf3bbP_V|g%q+M1->#W&2R zB(_8=)J5MSC3)Bw{wW$VupD!`l%ST}tSQOw9l6FV%DuG#oKqfSZsR=h8LR4>(yNB^ zM1@)hwal(sL+Ywog357L{ROTn2e^paeUFik`XcU5*kR?0JMM7tK5Se-4h<>&BJS8pEaaLfF-C^!BjsdP9;e&!SGsiUTsoW4z3iHG?s-4}A~gWny~OGG4v_W3pX!#(3F*&3Stl zItGrRW(DOg9~%v_C(KC0vj1Gj{pXiZflLmC(6}d7am3VgVwi9}$3Y}Z54FSIBjJ5> ze)ZrrtOR35Rx_Dnh8M|a8#6U+&~64AGndOAx=m^sGyn6AfyT_`7cM+950wDWV@+I_7jU_ zv|vB6i2I4(M)9J57hz~jtV^3;iZbRGURUB%w}|nC^Gj*=`K9Ox=a*AutKBBEjFp97 z8)&TjOiVpmlkWH?_!YO%$ox`rMDxpo5t7bEK*q`+zUt`bjQM4}K|sdJ86*kjlq}=r zdvd6|W_Zb++I#>=_Rsx!vR ztPj)c zlt3S|4#5}T8BrMjS7I*wyNns9A}Hg>5B|vy7jaFq?ARr85&UggFQO5RGzgQRLnpmc zLgtqsZ7?Fks;^|Q^<|MzyBNZ3^Wdm$)pz9Wd;ZV5wtrmvMoAo-!)sq*ei&|o9@o9Xo{^eQA|4HI-%lFBJG9}r|$JM65->maL^rpohX}}QN(q9^%wASAEN6FC_JO!Ut z{+8bzZu#T&c+Osaq!a#%a7ee^zU59-nsK_I=z`c?P(vgz%~?*j@8C(6&-V+9(^P{_ znrnD2%buAvWI)l>A`agRuuEz$wePhZv0p}Y13UI!2bXHZx&f)NW|&x`u;}K6ViKZB zJAETWQ+vwMRXcs3J5!V*%VBT;bCkmoJ9x6yzCVeBtgWq!>N5!^zwGvDNZmeh!T!9g zT#T0aIJ8XIe`MQ&PJ-M;#g%g6Y7HF?a@_W{HV)DWtn}%#_u3)pQ3KM$58a~2F4BX> zEf^t;6Z}p%n)jv0i60eutS_8cWR^f0gd1PW$D{VEc(VES))o3r% z&9SP@DO(NvSz)W`x?ITgwD^PL4zh7_1gFU&QNh`1r99qR!f8b;oE>tmG)oyS>$(`{`|D~ zGFk_b`XVpz?^(Wn`Zjip%|RkxpMizi9%vczb?9u(L0tKCEVJe7OL#?R_v`fCi;5^+ z%`l;Km0iiyFlmP)L%K8eFE10G=|{HKwPAnFm@Tu))-TCkw%s<7t!=QZ+HK2_t>?{h zw2k)=h<^yg1on$9*@~km)^(j`6W10SmTYCLCFB%?RW=9sw}2QWtH_6mb(E~KL-3oyrEAT#YwQ4(@sRxp)%fyY?CW*+^U%|R-lO#i~ zo>=Q3$$gZo#wQ)y|J~a6g9Ne8=A`YQ8>woa&4CBHma3eL2V$0&faalPYC5w#G(!mV z9wqAax3CnOKq66p0PA!A67_ALCXh(f42N*1M4hGHLFtDtQLT2`@-!d(@c5lz<`!I1PNK=T7YfQ4mX|> zbDrk=!i_^P#=Pr_avJvaE<<#+DN_56Hj|2LBF9RKL~a#8B%N&e52Y&S3Ctg0=z5>4 z>3Mpb8)uYvc%K7jZeIYg#>B?0%Wy`kV+CM3A_53;_s$2Ge4gr7jiN>&p&*w5yiR3RB~leMjyCUtSV7f#=y9Mo_W!Zd-~0|} zPwe0bP|(J>N)F$+09*B@Q@LaS(nX#=UCIiF3l`G;Z0$9@)Tc<}b|I8OeA=Y8 zq)H@lE{hcUos4jlF8Q_w$3Nh&(MRCIiSg89Gf7oXYCJU@;HV0JD#hLSSdrZ7ZqNup`D5lHBFxFGNZ&>0gNOTQ(sgc~U~8@uj=YGkjnP_db%qDd;%#b!>%BvIcpi6WEHNAB;)- zeI2z~#;fp?W^VG+Wd4Mwq$HnwinM`;%+P`X2Wc{hvJS+=b%|?IEGVE2du0@68DM<} ze8WDe|NR2h$`F%1*ZoI{oEN z4Ln>aPVG;~uC=YH%gQxZkmJe}{&E^JP&&!-mzya|C}TN`LauRJi#}w1yk*7eXS`*d z{&J^TRZmQ>8s4%M>I(?|V6UPyq^?^0<#q^vnW~RP)v0j&o-OV|U{dJ13!RK!X``5E z6B74Cgu-lST0sEcynigtJrY0>baWH4MaW_Ul33}ls+*_&;Pz_$lRlO^4 zbj>~*t(~U|6VHO#;jqktmVB6s+J=$TcgJxISZ5q0ZDN=nr(0YVEQGF#$wWKth#PXT zDn}ZIOPfo9QUMv!T3waJCoMINiutSW${~wKxAmh8C zQyuHPA1t!8)O9-?V5g+mW?oR>t{fMSKx{y-%*@AE@0Yv@}lT zSNzw~IKw>Q?vaetLRU=EqK%^f6^j!#8Xtq-RAB`zjgydok?l(4>t_zwn50G;p#|Z^jER8?ExZ zR$8uReWa_Ge?K9fZyt5Z1lSrHLx5>`mcRIKS*Soi1GD<@h2yqDc#N8w>WaIpuDEKx zqbpjZ5M)7Xh@USOC$j$d>M_uKYt^UDB5*-Gel0HVQa9poTjW`y=JMY2O=Jp=k2fx1 zHuWcwzaC#a&WwJwL2S{umuNeB5i{1g==iBYEIAjA>{1%U!d0@xaI=&&?utXiTH>T#N^!l0cl(+XD)I+1OJ6u zwM7Im=_EO0G)YMpx|Wp0q%+JXzq;)@DJ4-7Tg^V+|4OY@{yhB!XH}x{#rPD=xBBZR zdb*D{vUHndFPtbPMH{aIaO7G3<|ELA6icZq53xoTwZ(N|Ov}Rp14F8 z;et>Uj44&+AyF2KOBFc2u$rZ<$k(MpI7X#-N>QmTI?`(P$qjIm1^?b|N*hvD7;T)1 z%(R#mM&o>pt>$lZbv2)>N>O2DBcE?OHda$g(H-~UEm05?i0Ep*VY7EgBOjuTH}X{) zQyJ%TIIrV#7{RgP2cMLiw!$YqB2TS3Yxwu6TNp>}c5MCy_++u{=OzgiHB0ApOhgGS zjio5=7_eGPV+o#I&ws5lz#prp&McEWy0`67_2Cmtf82mP4bSqInHHTBcpx=m1HVVH z)}UQ;4RaXz+0qz54i7%_qC-9l3FP5f{`Q9E#Tr@axR;*F2iX3<;E3Xi)wd$0PkL0q zVyj7&(b8p=t69Qrxrs-0*A0=%R>qlmg(q>Z6E^bBF`tESoQ+SULE^ZWkb1OqbyU(d z*@wglqxq>rLhegl*ie9qi{NjkUV9k9-v*(7{s-jfQb6W=#vjB2#HapvJed)pEO2db zWZ&tLcTNv;WwHf#3}G>WWtM6v)ev<(TW|>xz8zvc;Vd5)BYEJqtB(SI`cz#|pXG># zX8=GfsbYndBSY?sni7|!j-+Fq#Cw;xPQt1R-%E*vydWlDY(|5-a>iHOlFOagu{P%r zcjM{$sMn!Bzq%FEFD5UM1hi76yK5gZx}x#tXy~LvK`LZsOJf=49cmU@;;6r2*2kV& zv&w^Zf=_tHfG(2(9bH|{l+{dc-j|E3g5r%8c=oA9qlsLB959Z>3H9rJG07iYB_Odl zGl_iXL}#WB5Jzn}i4}sT9FtM_A{?UI`eibqSEO@%yk?ua{#;xVXClcZW1{&?Q65g9 zZLkjFHUaoyz)eKu(3K4sesEpZptuTCMcOW4k@L0#zJaVcIeu1?Ua z0*RK_B_SD$TBhNkH)fr>E{XfpEsGI&Cv*?-eqlJiV5!nu9#7^L79!HyndvBuLhXTj zh=OrORdXy9u1KM9B2i!^DB!I00v=!iJolv(pP$%mVhX0ILaKwhH({s({%jATfj8Y;@_~Wq65> zj81b~`M?Z_r0VBs87#I^O7f?~c~AP{Sd>EEeLSbIunYe#1W^~^U%w3dFZRKVpToXi z?Dd;0LxpOC&1#VMi%rD{g~YJ7;!`$v^dq>^alhDIsq*Ws@&|dp*rk${_6JqPtbEFT zzu2Yc2s%g8$ZqIaI0qJeE(+r{1?uHXc%>}ky`B}g_OEsv&ES;**ECtPULd>U_L{Xo z%{mr0$Et5}5ww{`xZqHha|!GldL}qsU5}$+EiURpLBwq>P&?6R?ugCBP)Lkn${CYQ zt)Wv@g+P-K8v1_?^alWqWeA{OpKh+b4b}1WIxmXHEXy3YGqXT#kndb#oyFJ5_#W%x z(>Oj|>5h7IIUk2#N8&hL%T!Z~4D(z9pN|w>-bBDLr5i0Z74dZ+%H!{zHY~{Nn@;q#jAQ;ehk0TY)0z=)A_R3tkhno}A4- zf()et3a44#`|H)%-wm39q6t_uHP|6$?tjd{PU9~i&sKgGO2UBr_2S1!00)1)HJo&r zUL$m|`RkRb7V*ze2mdRbze2DFtf!fy<2rKK`KWitW__}12)llKGH}egbH;47_!c?FQ05lz7GluIykdkXwFhz;S=-1TFUq5`F@K#vPI<8GkA+u zF#RWzUK06}q<@>~w_rO&JcD^s{;o4%X{{yX3PMhGL#M#Pp-|S#@OJG=EQC8zZ|DsC z9t@oVCBFHcp%5mKwkZo+D~1%Tz5!8_Xbpxzy}N?7Cy2vAUmmIt~%)=MfK=#$#oThp}!Lw<6t(gHm^8RcB&M;yegd zSqh;1`KPn|f=Dul(CM2EE34E$iEGmMJ_rdDfAH23FfSw?ymjQDMxxG74O+!t0Q$Nj<=uj;yS4M>2%o^AXS z^r-n_EVXWiM@$N6Aj4)$e8PyMb-!@WTSwCv2QY{m>=jf7AODAkLbY%-=r!_ak3d?^(PM#nYd) z#P0b%1*Ml)AXh$+B_Dxu#lIhQgSZepJ!%@C?1`yIU1)zfmrrxt(L#cqj2Bz8?NLR* zEYdavgEPdCc6Slv-3yFtlqh$YhLWyj{D=s^NoXcL>g6FQ(C5bN)uX1McX8K->~Z4i zIUg)2m=3tDS%nK;xbcVV!q67--5EzkB)}zp{7UQpLcv9L5i5Bc(A3 z$`GYnwv1eyb&0!IN^I&~+?3Y?&#hyVS5|HFE^kF42=)~liB4`;HE1ROt{G!-Ms8vo z6Q*HMVWUVk$tW=}m4aUFYPkS%*^-;M22Kz;;WLnpu~Ml~btd|@a(J2A*P%Gq266&BWaf<7*w&uEM`b)1z=6nv{k zI&G6629p}%rf*LSg;zQPpvS7VBRJmCjvtwQRQI21$?u0V`oFuM{uk#eeLWyy5RIDWMWix0pdR(+bN#1#{m<(8Z&A0aGpEbJ&yLyt##T zh;s(j-=z&_1*X20GDeIH6iydo#J6N<8kLI;;IRBU%HiMQ^UUxByWPNqMUY2&?U|eS zn3gbSfH7j#Zom2|^gPVSfvKYR^{A>Dx)2utj0u!Q`~^JULgo?y@CM(sk zi?k1xI<)X$_&9YjlyYq*fn)MRsDdqDLhr}Qyw>j(OB~E}n>wflh0=uBS^<(+YnG9L zq$W_qR5r^HNC3}MFJfocm}6W)4H>xkQeLg(bT-B4HP-{*O1z96|r!3r25py?k zdEtF>Mj;jyQ;(#@Y0cN?F{y8H3I{)40G(EAMcF4ln_u*6;A{qhvtNgd{!%UeH37M9bX1tp^>rb zg31xg5jZ?FQerR1ro&QvF?49Qn{m1eD~nfHp9x;*S0&~%Vopyls?58``b_YmT6JKk z&Q0i&$`SWjp9x;#Q?HoMgf6WtUS)kIc&T6g+)@Op3)v5;_g_l>3c+mPx z@N%D8>L`3dW${|;GYg;KSJyiVpH!Lmg!P$)PpVZ@9EDG<9I@W|%)+PoRGFjj8I{G) zSf5$=48O{86kc7K*JOQW;nlTjUtWqVGb=}Iwm!4)nLf2if6ka=t-gCd{u=(9FlVmu ziUmX9%uh?zHge!o+-F(11LrY3k!K1YW>WYhNo?MW7~V+CmqhRK+&s+XR|e`aX0fLC z!Q@ybrimixHM`V981m4ptIxsWkwI6xT~sgIISJD&(9VKaR<(nl3H{0}%EX#pXyEzl z3DdEVrO&oXccb);Gf7I8zEgdg>&{lS6-qYtsN_m2l+GHQUvfAfSFkAVMeG0DCe3O8mhS9RNSi04VhbOB?`S%K#|z2Yn8JJ2C*u{Xr~WZ5*!302t*D zo-6>^y+boE&H(s;KX{S@;Dii-^Zdct4uHSOEbAoHXn(NI0kAUzV2nRF#{r<{X=e#z z{Xs+vMJqItU&<)qe18z}{%wF;GXO5|2WL3|d>H@}tnP;W0(7__17MQX-5TK741lRt zcWZz@%1q~M#SE*vHNdtEfNHBZHNf{X0A^afsR33x0YXr)!1mkqjsw}gyH+(p@5V^P zTb1&upV)6ToqqLg{icV+JkDLXlxKRWPf@9+BI$jKtCS7A10%My`>jVgdCA2U@KKHB z(-LGZqCmx16-NEM$U@&b!J?*lqSIxA ztGc6dO~<&VqjD4B`!QSnr%bJHqTjUB^+I%<_&rxFDM!a@XX#}p>F<#aGA}&)z+v>U z@gy#>U@CEkiJTCFx(odVCd}@iK@bQ(!Kd?R%e7s*>r#~N|mSyy%3hGPUXdldxCWZ>srtQY4kwrrapX8Xp zQ)<(L5M9CR0`)S=MQ!T9f)LZP6{grIK$Xxv&|xCrVry5BuuGF~JsP~p%Ia3XlFhe5 zXheI|wHWG9M%FRUDKD{7!`?NNDeQyHnFH#Rk*s-#a%_`3)XEo(ObNfB~v zuc$`wVQ#-3^TTuh;Y?r#@Z-UD~ z;6lZSxcuN9OOSCEcu2o#%*u&bU6)=i34xp2piOyVt8yL&t`a~m=?lX5RQaJ7)org; zLtzFKwWnK~{vu6oU(o9Scr&LjfX5evLy=v=<_v%etBPEyVoe6Xc&iExaJLg6R3WXr zRU5O>X4o#(`U6&*>pE-I_w*b66E5Ps2ZgR0hLJKe?@hIMurB!s2U?V6#AH;-9G8rZ z;1G&dL+~db;c$sguMiN94Vln7tqBbtP#E)FsR>QE+n(2w_Jmds`np1TLgTYN3+V}s zNiv~N`oBAoguiU)E{tZ+L3m&nm%{jL~Z*wB&y# zw112F!eMWD4zh@LhyHHaw%Y@*3(ijVRoytx{2Aa4ADz7xX zyz=*2UPXF&J0a@O)Fa2QPkWcY*Yf(bcl>)TuTOj1y9eFgL+m$N_Owgi#nj@o&N}U5 z^nm82M~FypME10`XC1CR?E;a_9-sP-wrq>;1bfy4=9Op8Ce*6k=9OAmz^9(Kfg75+ z(*xt0P5~oBqq+NGq@l>SEcpj%cmKDMR;#{jr$Oqicuevx(`m@ru<;3j%BKsl+}W4M zuwOoPz)>L&Li^Rl285YP(TG}gb}G|MB=}Uw#)c0wUe%1R|3s2&Ht>jJE zY0P_rSam_+z7QY0IGu>{*qw%N_o^sG*xJJZyhsg)3I_CI|Q&^Fk z-JHa6qrV8@v|dxse6Z!#uf+qhi5)A++X%r^j;jf4ghL(#Kpr6@Te+z8Tps?Qoo=oy zTy|EV39Ynj@pXZc%VZk<+o<$u7?novW_d@`r_q8E_s+~}VcrK~&Vn>ZI|m9FXT`fuvTb%fx!vuKit^-b~X??FJIIwHXe`UuQr{hz62#f-hL* zAm?|TkcPK3IVaQxFLMy7-U*maPC$Od0XZiF(k3U+tahL|#tE5DPC#DnfXvMTX~+r4 zD;$u!WX?_}(lAXl zR%C%3ZbS0EZEN@s%>rr0M!*-G;DFpC)0=Z_NB|ZNjzDd2qN9&~;)Imm+_6s+Dc}$C znsAHbqfS86MciBgcLK7~0XaVdQt!BcoIrDu1I-UQAq_b>&1uNV4#?qIAmL14AaMZS zCemJ+ot;fz*gDLHoZ^67mjT(_#%&W#q^S-f#hs9b^=glmmF5%*Cepf+`|Qv77EG6b&u-0Y^{$%n6JV8=4=Bp}|Jv1ew$rn~svJ=vgILmIo`Sy%=BX`CSf}K&fEm5P0{&_Sun}JO z6tZN0P|uUt9RSKVJAs|@%L0a0gOQ|xr(^*Z5oQ5@$N_v@7GTq#8Vx;p>XP65vx6Av zl-n+p)AOgM+32RNQnsR45VbjU1f%WXFfs=o9w9kxm*bg|;HOhK|)hPec37k%54Xo!_4g63R zU_)jNtfyHGd}|h9nPx3C^h~RPXJi1InRaGQzSY2g=yXuS z0Ly%90qZGO13#MuSf*SHSkJl|_`WQ_GV3nS=YrFkcs1}RGl0#+yDCRkr)KWeJ@_Ff zu=Jpwd+#YEtTp{=%H=y@O$W;KYXR#SSOdS7a1g`D0j|j77Rq`O)+n!a0vpQ7By0ie zc~}ESvH;6GYys=3SOd?=0xVOp1*~Ud4g7%&U^5$Al+zQkrd-b-91S!BMJ8kmSkK8C z_{A*1GACQWdRo@N-^v0k)3ODuXJ!o?&H`*^W||(XnOOr@X8_wXGlBhPX4XA;iW697 zX4);RnOVc^?{E-7V8o7LW@ZiZ>kJs$HTUe=`c` z{Q+aGf@0uZhs~w}TwpM|6-MeXE_uMqNbFY9Csyv-#s(BGf{fM_Bwl2k?WM!$p+7P) zf-iRs69eDi1Ctti8N4&FzijPz=s<%ApVn7?@4p`i&bFJn)_?W$vmzZv+@?H}KN`%eT(r2U`*+YgIkPhx1|<-}8i zHg8J(4V`PDSf%2B0C{Y{Hf(ic8h}O+y}}c$i#PheB)QP+KP=b9f#QAsx zX6VD|D|V!zAL9XYPwZw>ZE{HF`5v?c^odTVjTuqT;0v1uoJ3=_9U6bR1^`<{tKm@y zXC!?WW;bwm;W`Rk)pWq4h1_Ll!QIj6aQesph6L7LR#>Q3z6sMhEAlk#qlr62rxj9l zuM5S5s7b>4BhoeuTwCL5ndXsN(>HqtE?74TqvfVn_=N=JUzt<&Ld7&pa zxW}NwsoUhVCC4BbZcpUE)ps3-(AEg<`|%~`>Q8qrgS@h%Fd~00BNYR8JvW|7qRP@|s*S(|)_BnHk#bSnHt79)%$LQnb(lYSCx3#AXFkPTAB}YH+ zroWDq5cMH+Uf?G{NK1n1d5{G4_yO7dY7bb%hykz%Wq@QdV&Ljm_!VNH@c;Nw(s2&k zCGhvaiIfMZiLk7Obr_;vTD_jL{b6Q8+Qt>iKVFu_U42?!{(_MhRT4!tTjLNb!(2Z z`j&pG|H&IEN@c130;~Ere=XJ9#Y3K;FB%T;*Sq`%;F``DH-kVHWAM2TV=zfGM$3!+ zGRAn6n!y+`?X*L7{DZUG8lIaWph9xL*;PVlZ< zl|!;4K>HQwvfuYZv%B^UNVC8HhM&=8KgLiadr@R-#3GByOzTq21m3C8rD+T*rxkb` zPYDw^}yQffEvQ=8bt<}EcgpBjV-c(Dt zp;xC%Z)j#-zq-(B$?q|G(UQdHj)aWwW~rQp!VSL;*8Dkpms`Q*0BujPsL+y&%7l#d@M} zBgK*jd=`1II36#+Gv+5I>G^5hFRl5Bg`~|-kD`a;tC<7ylT-mw|2f%o!}fo8K8EZp z@U3R_uB)vHfsFo3(fmX&ei5u6{*BFVL%rO zuo#ffngRKw8Sru(k$ArtQ0R~QYY|=ibTmk>ONs-}T+8TUXz%Bwy`;)TwCwlz0*J$1 z29@4wu@9;QzEbDG`P?2?*wb5F(Og`Zs7X`@TCHNn+r^ZdVuriYia91#Oc7#nvg(j* zkw8HePoX2!ERB9vl47plF>#z-2+ouF{YzVI>`xDJle3l|)&4@dU2qz9tOrHMe-=k1 z22#PKJ~>>k8qk5z9Z<*^hENY7&UGPGY7%fbk%=D$O2FoEq5fM{$dFamaZtU}Mu!3|I5VO2*N4F^tzWRu_XpS;fZ?x|KZ-rTaq$RrexP!+kvm8PzTInia}TSYw-ijt+D=sC~;c& z;j$;KSwaL>73ML&PhAcjOf;5Wj4RCZJfvOd4^T!U$Y8@pLe;8Mx5%I)jy!?@AQVuK zCtrZ84P z_HU-jJS~_H&vE2-5qq$^Up>|=Es#NYL=4?8r~hL<$are#^q@g0k*6x3(Sxfo3D#9( z@fNF}iCNT4uw3b^DbQ=>M$VwI)dY;(sh5PDiL50dpJhq7INrz!6l*gkSu<~MaXrGT zpj%GR6Ke~43)}{5TpcU%W6#qpA0x-7+_D|W31&tt&brYDBdk@(g=VT0qKfq%Sdsu#N@k|saGb@BckDNTv#wGV53N-C0RO%^bd%!?HmNoFe&7m+6)7A1c z;B<#gO7fa+ZMtfijx{~HjAB?@c)B<{@J?08@>*2`szIXSsIBDcidGkZVzZ1f`+4-tw)_70tvG~>E!+*9FOYmvvEJP1FlOWHS58B8uFv$|Aj+$i+Va`yYNLNRIHCy6WYQ|9bxmbfK zNGDoC5EgJi_7RODuQ}rN(nRPJo$l_~$swTSD`X5zSDTn1l9$$oP*^u5=BL@ph<>Z? z8KM|aU;da?w^*&X__1Yjs$$6oroKxS~KT zJC4hXleS~5KTZ9-5Rbj69o&LP(hTBu^5D(v8~ zn=&Z(Cbl8ODL-7J`_+$dlzMEcHrtqWq20+_DeHA3EXIp07J{X5MM`zhdIHrEWE4Gt z&v*pyi;^OG!WOu)zpr}2QCB?vMG7?XyN^El{U00o%`vLJfwv6#eLUu5k>4ULq{pq1 z%5Jens&pLp3R3zglLn)YmODqP%n}%>VKHMtBqnB!*#Bf0Vv0e09MH+aRkUSrEF>hSQxz_W?f?B909DXR=qAn;=r{= zfT`A&?t;{GQ#F*w=MCrEVp8-;h(FGH)(GIU9szuU!U0Wr^ZtK{5n$<88Ttvg(&RP( zv&+vQHlbO1r|siQO7u?Kf@NGM_vGzH^SHH^I9&rwTXKR1xNO-70pP`;dhadSycg^H zx}Nxqk+?QInTQ|W9-QDifPL*0SShu9t4O!6!7!iFK4=)4Cx#cxy7tk;W!kz%1Nh6_ z&g03Y@R=wCHiLjz*XjzeO#z#LQDImJZEIZZm1r~Od$X-k#F+lTUL`a|6leMc79(pT z6A{GnZ##)31m$oIX4Os@1uJ)mv1?dj*CAHgR)5byw;)V8MxA$EYr|F-mIdB*JEC<- zHUEcNmLQ5e43yoz0Jyk}Yx%T>PlQ@rS=Sx1OmSFafDFglrZ}x-|FM;X>|=^M#EK|g z&|3J~{E66=1d-UMDaFwTSWelQ>zVgFF?GY z9^B|{R247$7$sHEIO(+3VR9z=6E4{_lDO=!o@kNZ#+7{Rz9SKhl819tb$wpgcS$;2r zF~LX}x?O)Zc0KF!E%+?fIt(%~)Jd+iadv5@H4i|2L|I?ETf1LX{D>S^sHK5SIJ02> z9~4Wc55Rx&n~X2VdHH*}Qa$8(`9Yqi-iDomJ|wa0!z``lyq5jD#3MY6^VV{H8xk^$ zNyNwxIkydC^n^hNk~aO~$loVEVi&EFgN%>ZS%M&xotQ@u%dR3gRn0y~D)UTmQhf>( z=ihf8W2BNMOo}I(Bd1JFtYs}-9SQ@2@8#e9Geh3N;DoUV6Q~HbZd?P58H}3<6`Ue# zdMax=5nztP%N2OoOW}k)g1Xp!X3O+Zv|VkP`T@sP zwmn;B6rPtaSKBu46{s2c=jk{yJl2EHIp@I{2|<6xmLJ6XifK5MDR1wlz5U&O+cN!p zS4RzSV2iHGkuZCFJoq>fRDD?HsE!cRpSbb{8ydL@#v6f_gz48JC%ns&S;*O~uO-vr zxD#(MCegX2@kx(^cz;!(`vjpYcCXBeA z7uR&~diR#9UHEkchbcb|z`UhJ0u7s>iriUimnpm*1kf>Cm*B)|dt_3afm2fl0Ag~D+ zcpa5cyo2H+=`S=bOHkM$8!<;!V7tJ%*J;TI@{{)-_N`49Z{$mSt?@J;;AxD=z9|bg zR>TT~PLU-!CB5OWTF4`mxIqHPf(oD6zWqFC#jzxnv-S;wGSs)v?>#6?JKGWMX$a< zhoay3Z1ltUD9jii{l)tRXFMsB6j*aR1z84%g5MaPtQ{&yJ$k?!7eAyFkA@ej((m`j zp?MwR0+-I6VCLq1L!))Oz>7XL1;!POj9ASs>DgUrJqu|#3Mvh5p4;B>Jo_Jkqzi=m zqcuAbX}jV7vG*?UQB~Le_#^}vAuxjmjEWj1C>EqBK9GkE%20~LhDQ)ol-`SR8mXl^ zgW3{EIz$tOvDkv;R;pO3Qp;6rDUKE~K!l)FgHjFhXuwp@I8jH85V?{3zTdUaIdkS@ z2IA{}y#IgrkaNzQv)0;cuf6u#YrodsEM~iKN6@niXOpnwQ6Jbe1U?nc02on-2;{#K zta_Y=I3RE!jTH)C(6^%M!3G%b;jr;71seT3YT%{=*bY`d(6j5mHVy%WBgZ;nMfu)f z;a)jDWv@CuC72~ua_g9GVA8W!w0v(u=;Li;+u^Jmi9=vqG|Z9w2)n!emIY3&cpgIs*Ym_|}Hb|gr_ z4YJhLEUBxfN6&>XYSh#|csA;3H#{4)w9qM~g7wHe)J89rZDYEL==Eyay~V7iBQQw+ z^;A>cUb$hfj``2h4q^~q5!O~<;i<9;Fa?nU`1!PH?TyWSo_8D@6+P4>Lz5Vd(m`40 zX*NpD4*y8)ws^Ar&1B)Kn0VfGq(+k3Y|MYdS0Yn?R|T5HHoMkOK)`O)mNwy3IQLYj z!o;2Dt+VjRfo+4wD-(H)Is8{>+b{;Mi>3?}-e^O;CZ6JvB(<7qgGborq$(C1la~EW z`ZY#1kn)8+jkSrNpX&URt)BN#OELrXPG2`fn|Uv=J*Oi7J+v5@dd$PrVwqRQV3U7>P)ZTPI z2r`vCq!NW5?(O8)X*oeld+jfDaO(pl^{vp)u2}TC&5?}+waekXnsp#@7_YW^-i5y+ z?g?3dA)TmoQOl%UcuGq!l=%?fyKw4Jyp^-SiwwNN&3khrVKp6D>coHCC-whA#w< z`)fFsz)+X3{jTh9yj1#^&PNNp@M#nmDu%8*a3WivI&ia5ZvAC~8_i%#U^^`;TqS58 z#>)^m5WY~2ET|(Yk0jwqIY7nk1ci!TJ>v@k6){D1)R|bGebj-gA8V9adT^mOoT}(| zC4Et8u6)8=78H`6K2~3Wi5yVkswa%qVUSwy;C{(Pd={y;k;f>wzpjOUQ1TFqWfexC zK10usE{ecGXQCVe2i%E52;kf^y9kg5M1X5j5m1iFL_nE;-6F8(KTto)SBR4M26B#$ z?}^Ln+s;q_v!SjQ{V)m}YZnwhhD#M*s_k2V^$HQ z0sX*L*AHllrHVlR4gG*h#H$GEi=iJ-p|7Wk*vmuD|5~GdxTW7+_Hrp+#6^&(rAi9j zrLvP@Qx0&ES4jT|AQ8w`sy@)WUlDWJtRBzv^WBT#>~ zUSGa;O=uUp-%5TkJ~(w~m1X*7cS%cN)UXG7yVK@nxSpDUX&WwI{Y$+#A6U4I?y~kf z<%)EVmA%V47TnsdGq)uFZPMG9G`)XumRJ@_Grd1>K~;4|_gLWFvr{Lg)3?lT=mYEe zfQuRWy%7}v-cC&2n$%6!-tG3+dzmBcoWDwnM{4_Vq^O=gk=8@K>n?A0-%@Xg=`x%p zK^l^k+XyN7QqnH_4$EKq;{zKLq)v{JpZ=X5?63Vq3(s@&`4%kjqgxi0N; ztRCIQh8Y17qqnew72h|@Xf9&AaNrR}Arb7!@n|i^$lzPo!kISKQe)F`bM!k}HpWUZ zkB;dq9D4BJ-y}zHGhN!Q4=hQfN7sKb_H}--Uf)o$cfhQy*Kb}hT2|^e>nrs+&Wsjl zVAemJH)o--iK+e2X9p0H8;kMbyKyHsHeB$XpVIj`J%O zRIONFBO>GGl)z`B=i&4aJf;VluV279G%WeY!H(RTz*Vt;fnbVI+(ptxVgI^;#Hau| z5_h!=QjAE1smzZ7DF!4C8rlK{VD&iWEGrA$KCC0~v`|fG5izITJmO{7!XIHohwt&O zdEh393DbRFOiSW|u;{nLcQVJW#dGHanq67f{}77<8%q3LD4hjzE#YGNUn((SeVhsg z3+3lCB6=py)B7DCvY|#8DEzWHx72SLZ;}N9gTxM9o{*n; zCzX}7G$5~ckWuVDZwY2dl}VPeQU8=Jpg87X2|!Ewe4L=x(#dxkPAu!Oay_g;K3X+r zWp6%1xuYeI@+mrZXcdP*Y>Tt8v7P}>aY|A@Zz-f=OdNQ;RrrO8gDcf0SB^xd?GV6$ z+F}`V>I1$pZlxf-W9|SlDQIs>yTVbK_Q#%xYfbz~&#!Zz$Gxv_E*jc>9w#2OpsWH+ z7-|t=ibRe@s(~*Fv+Gzgy*Q1) z6SbAn>~J~D89>9b60E)fT7g1qiG+X_9mrQ%m63KI$^o=+IQL#{7j`G%cXKog zrxwGsV>fMJ-yto`S={nTB>er%SQDCPAg6;fW~PH|0T>-b^=B( zZ4!xRPR9XBngIlSiOMm!a#9~0;-l3Az!|Lp8tnc6M7m6B`u%}lN3;TQ7{d0H;P7V z^?zy<(oPgt7M7WfR>iar>n)%|dNKVOV~R#Gjk6Zhb4#to^azUSq2$F>hGI`4>96=2 zRkwgu_n#P8AG+s?8BW)-Ekh5N??Fw9D|qo}(HqpF`7({I&oKaMkoGE8p-$BSyzV=p zUBuhwV0)&WCfypG|0ye5|K7U5;h0R5GY55K`t%W7&e(HgkN;fnFrrCSD!$4{Da)49 zY1%AFNdc&oh!E+3qPOJ2mp#G(l-X6@ILW|l+Zyyx+1kzIrKjSH#rky7#rIOx1{wprMD^f{sF1A4G zt-jVI`ZOCe%I8=le9aeR&&L3ufVp9!1o;fS9l(pGT~iC_3}Dxg>7ttVo`c` z^z*JX^bU^K#fIWN#8%Tdzo=_#02aGGIktvih0zqN!ms%Tj6>Qd-ND&WWegBWX&s11VB^60W4K%ZE!- zrld3!eMxv3+b7e@*fW)G#su$3pKh`y7yCA{QJo6wI1}EBDNAh~8iC?IHv?d*cOJos zQ#nk_SWT#`;5I`$OEQCgcjal&lrzf@;}5<@#o1_2v_06|9ju*>U@=$2JE+CScf8?v z!uOa7zqi$z@CYN}d-Q~f6D@CBgW$)Gu5^Ozqfjwt@ww9?KSuL33A%g3{UpfRbnj$u z&~zLm8x`=Aw2$h(z7{D_%5i7TBIT*YKGVTED)ZF3ZPTvB(nmT9#lGt-QqI;M7JuF1 zCCtbSmbfb~f_2G(gmZB3%%ROr6!h2xLH`5a>*Io+T6~Y0_WXpjU*DsreUF~D2>O>4 zG%9k7QIX*%z+6GtJ3phiTYV3Wcuk3WCdGZ-WNqzYL)@iPlZv|(9de_heGPY!IJ)bt zSg@SQi?elzcB^8-Ty&Kbs7rf*&TJ3RhM?s6_{pu18kKo`p!a^Cl#-dTbP$<7-Jqdo z%l!H))Sc8{w;uQFgq^=r>8Ifstt#6XBV?31{361pdp6A=fdD^8I`khGlGp}jVn>TiJ|opR1nXVmqRJ)H7y_WUJjgP{gAn@Pa(4CAKQs8+Lbtmq1lEHpKGd zL~YIzz4rKj5uEI-T*e4Zffsmn`?AzSA76L%a3+>{0wUaSy~Ia#;)}>2n=#E2;*QwHGfelkbxHj-rrN?JyF~L zCz8PuIBvC?4)+yZ(%?HcY+2%7=5}9#zrOezfIt48p#SCJ{xw*MuS7x_b?uQ7W3e?x z%Oo-lcQoirNsc#>Y5I zjJ#FDwJ_Uej-304XeT4kg6gTD4k}1*-@AcK3fhe;iIEjX`7MYrxSs5jKsFljECDrT zBpPG7#^L4tywym|NcuJ-=^rE}tug7}!s9iQR*))bQqT@SMa-l}Be}8?H`%xgsW%v@ zH;7hY^=}~;@o>no$&&hPBlTBg&`fVG1#pOVnl*I=sb`$2|ED$eEmU1Kn0}N)>@t#$ z7?l`eSEKD5&fCkm2M)Mb7VgDp*j~;UVvvx7=?aM>={gb~(`5{>j!1;Ta!(-DaYzkR zY!PSCO6h@WF~pwVf?5On#OS!5<`K2_A@*o?6bk_{Dvz<~Of^T*Rfcoi-{45xSE?o^ zvaavrIN&a$`8!f8J7ThWk}3Oeqs-sJmI=GE_s7t)sc{O@yNU`U%KlSnLv>}JC`n_} zXx9+!HH?KKF!*fy(i9%stgIFXy2(33_UycgCxTTY_ZD zwk<;JVH2YUzqtp+82!FP26D11J-Y%WyBz+rwYM;Bpo(;xX9rCak+-2|6ZGteBBb`N zfCd-1hHsydw>97T8faFlh@MsILNvWP1M^P3%K>^oCI00uggtkT%L3^;lwgjtx6C1+Iy~EJ5 zp_BS|aW~8=0>Dw)Nf?haE2x6>t}`3L$rv0$YlOLdqoDVra|JUWiJ-n1t)e|vkHtn= zTg71pA43!QK!ZF=E5jJD$%leee2AfVMT87K>I^=n3LkZmA0=81TLW#iS=J`<3WJr^ z&oYCiNMN%@X@@bMWU`_lb&=3&ztzy>xk5yo)PZLd76U(m8uJmML86IMiLtA8B$Qjzk z`?v@iiyB(`abFNS>2S3xG2U|`bCra?%;9`rE7ob|XCB$vkJXWjH-hQ?Jel3)=t?9o zQR|ADOuwGn1tYMzcpl+t@mZouo?zKeVAKxGLt_QwFOe7Y>s(LWi0<5&+>HLE7-b(- zdNyWYUAsr-76mhMivslviUQ3GLbGz6{=&%au@1))9p88H7s2fuS;R57#>{k3~elI)})7!D8_Ne{Ryim9R4!{^KzXIf1my& z;CpFb-JT2AUYMme21n1;Hvj6Q*60}u^d$wlkuZybfPuMmm}x~ZQ(#F;`ySH1KE=$Y z-AaG?-)4E8j2_V!kh!b;034C1;}h3>6mF4gK<^j~GwwC`Yc6u#S$j#5YkpOcYf5ML zJ^XOAw#fCy%YTwZ+!IE%VkUQ9Ns;T5mq%TU)ldt%7rEY?kejg&w6+wv2Dknq_xZ+7 zR3LZdl-$hVuE6FjJUH=}QHe4hD}5lhfEyfq@-kAcD{^h#)MXUoF3jsc>SB0D3)Yf{ zdN6m$H4V&}$?WT#1ICcr<})35=mM}a2?h|TtdRclVoiyu+Uwp3fPorcnWpW+j0Ngp zt~9P(km4Z5qA zhxL*tvS@nxS(cF?Po`|>$V}MK5uD)8#SQuOQ47*a?N8G5GjHN7h@YGjP-K@n`bF5LtbOr$8R+n&Q66{m4#KUz30jP znGL#IHM9zCB0BJJ=hQB~5rtK*z(02MoOT0oOYW zRRmsI@26Rcx=R8#Q+Cgw5wq-KlaL6vRXG+-=r*`wLg%LE*{q?9qWGTB8%rCLp)DHI z?ZRAa5l_Zm#h6|fVip@qB17DN`B%)rz_cGMo$RQU@cYtf+yp5fVxZeiU-?O{w8nL=Txlln>=)YG6M zoG=tA7D-J75=0@3G55;&ZfBm?$&*0q3NS#CzX9<%mWm!?71$2OkxD@+6O>T7@@rAC zc0hKGsASbZ)+<+kqjF(WYjRdzfl`2#f%)!E`C4UuL$I(Gn_utjD;2LEOGhw(Q~(pA zG4dZ+=ORMa#=^G(N4xpwhS|JhT&6~`0R9VW(BY|$*Y0!U46t^$Rgh?YprkhKPB|nd zzioQa!3gIf``k6NC?a!P7&Rd&Ib|#g&>j6E#=>ei{y+Mx+wZ<{duW(w7&!FBFtnE0 zi8c-z08dxr7=tFuSz-FL5%~?Sz++UELQS16(}>YF#JTDAsI(@oXKOLy);OY;?OT%! z(KSWQvgZm(tc_$nXp(w>0JT)6=xrnt_^g|MY;h0mMe!vNGpjamw1>}v%qAd4O>7cP z#NkAO49#c~&1k~m}^#gauI zkWGhW2TK7UkhJjHw*O$C1FMOfgX1R1xYEvp#;}sV%T`ZoS~LS!$0AQ_h36Rda2~^; z=Q$8@lAX+@^RR=`pK)KSL5pbN_a>XGE@#{J+5}i z4Y9Zlp+j+a^h8_+df8ar;;usW~iJz4y>(QwikC8(NI0^h(XAo zlhoIOpok@I(+BG&Rb<1OB@d`vAra7c1nMJidKJ4>z3wEGD+MIDjH!%}MD9G7hCW0w zqlPUL3NZH}p`hwn|Hy*~I&h+dl;M4g15jVUOZ(=Gt<*=Qf1Tlue*^kwRjfM5&lR{u z^zUe*{x#xLa2cS*b=oPK6Jh+|}{iFsCGBhwJOs<-z0&R?mT$u6$SqVvfl-xZ;HI6;JL@aUb!8ManG}?t1quSH z$vO&ap*t9f%6KAGx>addC!t&^+7>JqWt2pqjA+%Di8A&Is``$OfK)Z*PDcAjDyfVo zNJuH;c#c+mE0hsxuJmyX?V%qHUHkO02C_EnA?3bJ3JdBZ_E6*`Qfgxl3GBj#Q`*Dk z%JLofi318hv)e}41`-9MHJ z6nKI4&*8twu#8l5Q6)a0PogX&RjG+Dq+1y|2_Khdq=+q&ifz8!I)zwqmD%|&9%A&oA9{qoojDnR ziS;YA+<2P%|7N5KHC9O8)#$T(NlY6cokNMCG6C$sj-4Qe%3eUpS_0W5iry@S8UiJC zoV^K?s=kcjB7?inA5P#7fLCbuqVRQzNQyfW(-titvT*kll0^-gsO^#YafEo{ zOokESDY>)hT90T(FgpJ4X?2Llrbo7NnyC-n4z6Psu16SLf8WY=^wfl@kH)*n6gCm= z!k8NrUJp#hV{ZzyXQePQ5RPNlw>un18=V*ZE^DlUoa1eQIl12l1E$8r*%CtqmH-wi zv!v2f5h$tP=upFDrV4mn7!EPyc?3h&799obNUapDj;;m6u_DQsyNcs^HI6lrq*lf; zXr%~?IntH1Z-IfL3o1NMl$Jb^?(2qYnyZ{!sZe-BUzf80k9>@ksaPVg*vPLJYS4DrWlzAn_XK+TCI<`~08I1!I!3MV-!Ga8gC=2FcHzjmX&T zweSG*;CZ6Lv%Iuqxx?2RS480As$M*$`#h12cr@6c3__s^UmM`%SbUI{dJOlSkm7R^sJNg!;=06rhjE(`gxN6fQXrXm84%S>DOS{pQK+c z>DM5A*@`)z%fftvaqa9sRr?epu)2xskHs-EM8V*_u}Ruva6B<#$32;t#yyUS&-3BL zx|Obt*j{|P%nqKTJuGDVLgL!1s02#kNvR8V$qwW&4M)R&ijA}18rQasZTmL7F#Lxh zU(|n?hUq`u%$$s!WM9R9utZ`jF7oEVFk$5W25d#J*k{inh#^>Ql$x#q>#L8 zX(c5Fn|7CJ*S@m-@CF*Nl>P&EprEGyU-cj09~ZRI@A~8U$LDBw zV`+-6YZqfM)YR|5%dL?^XfVE*i=0%&@0NXwrV>HLM`~&DWdHu8k!&&*?=16^bVA9| zOg3T1Gocb`@Hk#_QZ0Y$HwkqRT0T;n302VLa=MklHd;Q*XVgJ5_@cCpaFqX|jJ_EQ z^$YpStFiD-Z%pc-%O}$JQ?2|X5&@PZs`gP|ZuT0>u^N#|;7HirW;*qyQb1JuT0}zq zKjt~B)Z&OCk9*=s#y#(@a3t}laRod_oJ%n%Qs}B zC1xW23%(tebs2s>r@~l~a9#ySwt!@_`0XayEH%P}86J2Ex{EiQ&f&a^79hF^T=Uii zbI((qi3XsPJDy=cuCy(%5USTgUFyV8IA2~T;`%Sq>yeJJ@-LYbdYSC95aCKTGZxSB zQWyI13V}6u-t2kei@g@IR0--2&cM-XFbWdvJqAJ4InN^x#b; z@pIgm?{C)Lo(AX|ZQW0BixGXqHJHAe!^J<^0DR-C0eGbj3MtOx?>s01?{2)uApoQq zy~OK4pPz5f)xRDZPm+PHS$z3#{1B=w+S_;p7P_?p{)&JRW)q*T&8T$p$2x)H{whbi z;;SW==81nvd0<%>?Jv{&^?a45bTr>;_Y!*kwl%-;2*CZkHy(EUk_q<2aQ9AZ+?-jd~2GGw(%Rc};55pDp@v|i1*$sIS7~`zz%A-No|0(o>f(Sa>oa zP8En;1p(Km?tj(qG0JC2oAQaJ@Yk`GMUOoQ%cRXlff$Pp^E0&&eqv!-LN2jg%B?YI zJ~G$PCUcuJ9Vt{N>1(}yXUbtKAu)~3+T~D&0;~_gLL=7tCT%KTgz{Up#V|J~ZcmK! zVKB?r3ll~X_;PddBa|imFAtB&&P3`7^xy)QREnmgT48LV^HSjPBl|Q1&mw>rApE-JkHh<>(t4~ z275CT*yA3Q!P-+Y$i+Dtcufk@+ejlJ^Citi%#fIOF84mJ`+fYF^NI5%rx+~#queSn zZu=alond83K`NGHlH?YXrRZs@UNmY85N8hc0!~ubt4Pn8QmvBKwJ-BhFRxr}2pV45 za^x!K3Qs-4CT9{5y;v`|6Ksfe%r{5ji+}7LfM3w1zb>>(W{8$1V`I8SSCC$f$fTfM zbBh#K813W&J<5F2J%ZK^u~n9&vBOp+JuES4jT>U`l|d*yX$7g0CIzi_mL=)!)D%6` zBX{2EyHmL(RqamQl!LKzEN~MTSW$##Yd~l=?8A`Fr_F-Iou>>+2P8aV+bNKEN{GN9 zsw&CEWrMvd6*_f*9+a(G5l?Nx3b|Hy=S@)n?_3H|wkSG7Lt$sZ!gG72ED@gAu zYKZ7p^gk?xTqCNTRKKkIxvctyO|445>ST4XVJ5j*b%=JJHE9K@k{11%V@*0ANpmTC zD1V1`Ch9xyThN@e332Euf0U|tqTSI{MSXWPR1xafp54)MU=4K?^DRJvDspb%OYDx0 z{+RrC0{`qmgWx3XIdRS8SWbR>4^A`YF<1*GYQHzX9ar$meD>@1Zl{t9dR+q}DNv*S5|!@Awd%=E})Nsysv z{XYN?duKSw&}dH6Hh`+Q{0)v$OPU@m_@#NwbW6G<2>q9Zz$BOsf>uIqWOVPDGcP;Y zErfmN@b?V$!&QC^n7cnTQgxMoh~Ij))zV@_;l#pAi1etQX|(xd;3ye@{v0hk$n3bv z8I@8nH`R*}f>~)r=&y4xbi(Vx=Az0h#0T{>_a~zN=Ry~OJGqeAOzp7st>-YL+zm^U z50@PfoUwY&r2ygyHCYM_RS?lV1*-{I3tC&tK8vB~{N0M3+OhjY6=d(HAw(9Okb0jy zA4(8{=a5e7kYb<=qaw`ngUGYs%PtP!XS$2f(x4TJCA>yRVkNDZl2#eQynvPKB@rGK zXifS<>)XN)b!mMl(o%t4&o%XrMWNC(C8G4oA_-AlJ?n0*lgc`j;QvA;{|a_P>;vKt zXF290_OKe((k8<5Kgy_WJ;1rXCowAYx9Kf;f%MW@&TG;r|ml!?-gYN6_UxM@p=J%yFXr__D z)Iwp_z{0-w;6>co$AlWkG}z!^X1<@EgZ#c2gUm)QY(siKyP=&qFmj^qdVaFC0vVP- zOjTF;ucXaa?nay)a03fq+19@Dytq3%-|JW)?ra10p2oXI?0XE+E{2O`EF&pakly70 z_mYA(?|NeBAuqloNh^25HmYUybZ$I9p7a7E=^rO1jXuT@?b%;hl2(u^X;RSAtVz?- zS>n4i()uz;j*2c5cXrOR#&_|S0?J@OyE`H8;_qB$VIU5yc;F^@tz>#U``CqJbxofV zZzx$bgR@5y>D%D6>iRQ5b%bt*Hd8Z0`RlaeVc=1BT8|T-+p0yE8zE&8PytZ2dt*AuCj0EzK~t}s{$ z&Lv?}Bn@O`H^y;Iktj&TifC3pgB3kE!aD6Kbl(^pfju{}=7-(XgCkh>zFd$n9dW@- zri*ofwZxb$6lx>)fkN~r?B}iL;wpX`0AlEz@0g@*k>P$Z$BZ)$GmM=@I0X$pbPXYo z!6w4dttrs{%YZ~f16_x%R8XCQX2Jp|(Hw3SI>|xuAmM>xk|u=VsMle)fp`9Dg@)CL;glx{Z>YwE60U z{|prW4~zr+?^xp#r=r_ygwoW_yP-2!lE+^QKyDN|M>JC$VuHvd8Mzwg!nY&L z$jM`JGk78~4*eLQ6}hqy8|BV_B1pfDcDS^R_bIU=*Nt0?T+^FyKZLj^$M9SY>cE<|6`gw*%z7lP z?6c2-?z)fbtji+D(A0E#`H<^7AA`BWn+|mAwCOpl5O4_3fo6wm%ue!|Cn+${%7ESl z@;n_;Ri^I&Wd>mBJrnN^$?pLdRteA3KgIheYZd?h1{}DV)&iUwz=4j!o1{> zOiai%Bi!%-WBR;FkeeT&Cxi^T1J!+*LA=Ek8Aekj)Z_e|l@BX~o2fp;(^^vQ7bF5Y47KH9qzO0Ks2sEer(hvU=#12HCj(G4fvIm!a zb&SGPiYQDff%GlAKLAX_L;GG}^y`OI0;Bz}@BVm;4q=3C+R|;ifAW^yjnQT{VtfaJc<1XO?%I~HD4ZGsjea~e(C7;`;mV_&)b*i#bDf%B z&0+26eah-S;+Me_%tC+ufSG ztQ0pO(9F0NPQlm6v$$aO3A|U%tTw)P3RW#R_c`{>s7J?eU)sJI8v2F%()Z1XF?0)? zr~DPc{1vUe9reB4t%WNBbaegQwQcBHZgZRqGKBZU_MINNQISRkX*X%?OsO$Q*BGQ{ z3+Z#Lq|*|(j0WKQejKuaKy6ltq$P9%X1h<0R<-e8bk zE~L+)P8(cv4N6?`+!|`)iAb*t=C3nIuQN!GYD@ZcQ42$-v)e;@O)!6rL3)ir`XB~+ zb)D9^#`Zrlxwpq0Oo&l~PLF!Ufaq`X-TO|HO85NdQ7}_H-2XJ z?AfE;2EPOFYn6a%Khe4JXKw2(4JVX5$}n4KIrGqRKE_s5eWLQ&mt5=ZuUn2Sc+`!^ zn+4h%r|E+*Jh8NA*#XY->C>FI(7RA4MqU9;l%X1KoN&xP2iH#X)1#-U0}y0ug`xxa z$P-e>DkKC*m)VL{KfL>mH{uv92Gpz!0kajZ|XM zG105A-aT+I$ESbiirmie@3~P#9%-2<^~mdEyA#-!~p(L6E!*CJZm*z3x)`& zC~Ey6cL#6`?3r9l+FXX>%0u7mbp64H5nA+S`tWBC@cKoE^AW(l{ydbOp=+b(L$Em7 z9c+Ra^{b@^6G4L544dClww=a1E+70n52WQu`qq&0gEqQBncQ&K9=zgEaLQeA;Z7{tTUuCy^LMQlzpH+11~6f zOgK>TfrCz6>={bzfdj^o@mMCNP;zt>Oe`prbRQ3DM$8iw3d*V-12PHR>fL=VPDHMD2QXtpUm9FuQ-!0t!6m7#pchHYflbZFWZg$(w4(jb?&R!*b$Jj?49lXi z{Y`d_Na++h5!e|pJZ-(DJ67Xi{}0YGZc#^Q59I0JTA8o~aL#uZX#dfNrbmvq=l&q= zVnyu>GHB`-BQc}E3bbyDZVEbjek}GPQ13=nW)&+1gN7nGbwy%@lu92skYUt#*bPGg z({)rD4g)n!M}^%`sIV9KZeX)k>(+)xdwy(Y;<9MXk2K1X!;cv zt&3s#6&B44v1msX7Ry^1P_g<%?C;2=+{Nre3l@mk$Ah&Pp)p1=0=R84Qp=8O_Q?-g zF)B=9lkYn$H)_f$e4t{aqve&T=cc(&W9b{k2Vgy${kcoZP+GKrRFN-kC67~pwohjL zgyzX9%4`5`SHiTm0ICSAO@Jx_Ya5`jtc`%evbF*W>&rI-ir=aGN?P_DG%V}sNCtX% zk#78B+FMvi)_rT#73~3*&@7y)zO-kXfUd7u@s?q@akzRTn#Fj_&=_wS8ugYT57r=A z%g}7t;Uf$wJx%;$zx9V}+;7!>JW<7K;XR&pX=2t$``v3PRKd7!X*0mTX`wRe1%_zzLb?X&qhcx|CLz!)9N24ZqkdMmj0vQ28m{LMed1}{tI~jaSEk9@sBYS0&4{~)ki_Y2c;`8<*iENhF`nV;QO*s>b?Xo< z=Nz2a$YW(uorAF5jsopJvD0&UQ4s55<7e1o?#)qzL+oF~H*Ah8!a4SEP=VjMJAhM- zgd1`}QrPzfVL&+FG$q2hz1~pRN9`vUogt24i`*Oyu5r=R}MZxco*x%UiN38IvdwdD}qOtpl z45+jh{>0lGv)J0n_QpAAAi+uW^5~^n6-FadY+@YgT@4F{jc3EJ6;s8zxwIYFeP~f& zo6N00B|qr@PKBBxNLnvRlP42!_0jK8j4(B6{?p|IBre(dWo=O}kF$K*x^;7iQ7C_ug&yWAPb{ClLK_@UQ^Sg2l_nMhDI{<9{b-eB7w5$n zQaG}Ulk2fiLMMoNXZ2&{MTTQdH*cagZG=*-q=8qqBIG8@7v3fh zdnwQc$l6*7J(oW8c!yM(^&gAwSYysUg{d%~$v0%1@bs9_JahT071;V+DPp2)75|Qa z33oxLwrVZk(SF3*-F|RS|1~IC3=j{Npa5OQ%*QKeLUWcgRm&B2MjDjBF(D3MDe8|1!%PTF90lusQQSs|zRJVXyTT z6L*HBQ3HO-JV+fr`_as0@LsC0?mHIj;lwk#hoLcxaDoN8p)qzMWO!t=8X3n5?MBza zMr28tz#_$FEgdDq`?MkY#%bSG{5e^E^4R6{=nH)DQ@r5a2OnB#PB;Gi1PkV(E2LPP zrFbLDLB99`?*Q041QH#F*5Grs!X2K2rv2zD=z5KIGj<&ygOvyvqG>je+{_jJhMO zj0ughy$F*QWb&I@QfZbixYss7qy^gj@HbPs9P#pQmXH$Y*Wegzx>ma|?#b>j^)7WE zSjW#qgoWnk965kQCmII@LlF>IswtQrjCKDw=6dF0|Ka}p%r-l*kz3?xIZjKPke^0~ zxj_5uc=>_1ecjZ_n49gs-IpKqJA);e&yN1<_3Lv&KX5EMuUo^SuDwPC-n`Ue49qC7Q2RGet)6Lsc z^*@ZtX2{c=s?rX5#De!<0x^nvaZ~);*h}Txz8TH?Jos-;mtDbmw@bayT*CIv)y~ub zjn~G!+DWn~KiWO|g$^w{vb@zvuQSXYKXjqYPx~#lb zgj$mj!XPQ(v!gi{A~*rkpl%_w6GAO3!MKFt2-B*=nFZO`+J+35O=%b;(Ec_OwmkGAY_>L~Q49Qh;?kKZgzPs!|eM_vx zwJ-!hQhvT(T!XGn=`Esz&sGV?hXDx^Yd_2sEC&av5Dd&m*HjOk{vB^v47av~d`jdW>|a$WRnxmu?IyW=_=B zsMp8!%}y-%p;ZM1#hviqi=^|sPn7U-!z#@@VPJB+Tq4@a~e^L5obAL?ssf1WSa z+P@y%k=Fi0Xqwk zxz3TRPp)^%b)H;H<+@O=+``k^pWUO@{!8S#RIbbAxbuUwaiOd8}_lWU_~V{&bhYqMNiasDSD#$(mg_vZmdbUZTr1?dSgsD_E>R0*Jw2mO!nx=)ZY1gw!n;BF z*bcj%y$ap^<`B-2;vnzI7=oAGbr>6L32Yib7f*n?T;XZD6T6G>Gjqhm%scwf%^Amu zsZQgaSLA2j*%>dQ8PONpQ9Hm7dJFCX`{@w1siJA!qNxxEZoQX)OTN$iV8g+;Af(rw@>NjR-Ju(EKU-ZX^?LN3;ZyVS*ELIf9O( zY+;G^qAwz22YYdcZ?_jG=9%y{(R}?mIwqLk$T5>jPjy*Ib!Ug8irBI)jf-6C6n5Q~ zAoEhiUnZ3*0!UZn8|iH%>H>e6`XIyW7$WXfb~OKb-Sa@4RCE$sl%AmM%Z3+t^iMfx zbOKd4DV_tzg4G?;5r3ug7n$fU{Vea!-ld=A+}XwT$IWllZwb~8ttvfm_8SMc46Pda zx?ut1d{4%S!&%*{{MkXQ^ylfrLtj7gG44)WHxGRsf!b?=H{uIVxy9R^k)3;XzQ41s z`*wfRkxzm(M`q<_J%Ee5)6P43jsVbIPTT=F*EtYd1J0O|n}xd*_sk=2AE^tx?YLpH z`-=ozn;62ey8~;^sKQEwnqYN*M+^r>)f~E`dvMeAr5F&-$UU^>Le7DfJEHH!vt>S6 zi}{LBiP}n8kNHqdRwt9QQzu9|vO)VP8mkOm6m(cXd%_L6lt~ zO84BfYlprb-1*?a_S{AmGUHiL8$G}RzMVow!o57AiT=ix$Y4D23o>@w+wx$pz;>2)sN{$#JCmnfEkOBCpPOb z;vL#zH5O`YV&b8;b;lxB^AYtQzDFm-7{J^n{IBWQONp5#>?G(~+*K<=hcI!l0Pxr8 z^G2>;;`}B@u*7-SU9R<5eY1JfL1%aDq`Cd=L#{b{9Iiflp5xq1zt=E+`9}S~&xXGK ziR-7XBG*T+7rA`c`{aA2$o1CC{c8N#xNq-Q<9cCJr)}liU7lJX1h%=OwUhB-cR%c= z99lJSQ@@%Y^n2w718B@<^sSgIHpN~swCcz;_;S9lUizb8X*1{* zxrYDe_hWgX39gvys!je6Kp>3T+1d}ApFXMrKMtMW=h=mO;~)}m?swFmrGL%Ca0O_* z)m+}{YjkaRtJCJ_3&{M?s=)TvLr-CE(vjVPkJ1)-GC#+!ZE3^0iZM(NZfiMlFVHNG zFZ`gF#T_>zAYraESi7m-Rt8Y;49ORS+V5qQ!%mb!x5QG2qBNu=Bs}zHcXY37!=_G~ zu^;MfbZXr$&n8%(MWByLg9Jd*d1NzYYa#GO-4Ly3_$$8Y3$bfjz4S-B*IgIfvgsZ7 z)b4e`ZZEbTJ2pSKDR^Y)E1hDUJ_~%@8i=(HeQoI0z~&6DWK1jbpVOZ=-y6K8`JH9& zf^@0B`lg$27+SR@bXDsOTY^`$4Bz6rY+;q}{o(KU&R^KzJGe=6<5h3GdJC_*;MHr< z2X4Aqz(ZFZ12RxQSGN}4zOZcDgD^R`7yUl$PlWqX7`!b5^*4iC7W4FiDaj9Bjc8m> zDCB9u$#_b4J$p^&h)r0dHCY1AO?F22DG=AQlQT!Wj3J1txk^YJ0my-4NRdx*kHl~x zGSqpK>jF5?TFDLRLHDSG2EsRlZ%OS$djci3~w4L|-!a&Noza?J3?4m<|baNT5Rk z9TMn}K!*f6B+wy&4heKfphE&366laXhXgt#&>?{i33N!HLjoNV=#W5%1Ue+pA%PAF zbV#5>0v!_QkU)n7Iwa5`fes0DNT5Rk9TMn}K!*f6B+wy&4heKfphE&366laXhXgt# z&>?{i33N!HLjoNV=#W5%1Ue+pA%PAFbV#5>0{_2}Kq!A?gknP@t962@zxP< z|N0b6GvCGkw(!>kym7=^{7>LLZpS11e{@3RMI%3i&nEn!w*Wsk8T?%}Hu~D9fcMq` zerz)M$^UJEm;4jnE%{FdKOka(CqEU0Zy^8g{>_$egi4BpHe29p0Y8oKVe-Ge4ZJm< zLj;a|-*1OAG{Te%`F0R~9r?JaUGTL{fS*D>2Db}-CE=HlpJVH6`Ao{s9KvT(iC=9O zd>-NFQSJ}73*Jq5jr`xylG7Db~~PtsHq>+yLwdEu#e?& zLr`eDmMp;>%eFK;vX_GWq8z_(`$+FAj4!;;fMc!T_TK1Tjx|3dyAdj^#9cSLgE z<9$tJBCJy=e`(|gxEIe1mQMjffwme25~y}=35E(tau7ZSLlgLTj=+~j3jaxtYWT_n zgB1#m_Nxq7;NL7^@dCM@*ktgM? zgO6RHw0dnBmBI8irXStHx1u8F%iCRi`%igW&Bp zlwTWJW`SSiLxBUOKT(DdC6It((ro~cgFv&60O+O!APd9vm&2b!0pRzp#ofebBU2Rx z{+wpupLIO^yLJ3I#D{<9wbCIUcazSp!=Ur#pKbX|NUwl!OUUn2b~uCOVua*H0MO@P z)WzHz?qLm*=|%J$CiBx&=sR@$dy?VrMB^J?O#JVr#HXApS}by+U$C5rPV#;D$yE8% z05^wlYmWl%RXd!KKT{rr&m(;7Gr&LGE_gTLmk|E;cEQ)99Sjd4{FUv3UrYD`^4~Kh zJPxG@db9$KC74h`bnJdg0;{M{|A3`2@@%~$Qmw+jJsJLYiNA~Zp%nO`{OkxUKJ+;= zQja_POLe>(ic$?WG&Gmt#UF#rSUVYdQfFBFk?|`5A13^eLxAto7QQj^Z}?Cq{VKp$ z5Ps=Cz`wiNmdz0A$KUMm(+IDT{`zF_<#zZ1gs*A>{JnN~=C@*_g&+3En$g6Co$msE zYBKoZKiJ@F2*2_jz@L{4J`J9xnP1XhPWbEy;154x%P;w9gfC~pv%YuJO`7}&yLIy`i2gY=qwVgeIGwmm1t6WGb1?` zet!bnoWSo%BwfSo-+DaKsrhwAs!(ONm_%dXcO4wF@a!mvo_su_CJxKFlsGkS184sq zQ{<8Qq1D+kFphXDiTAi2kMLnTd^X|d5Pohl_zF9`2G=Q^NBFUA;H_m;ML0L%&a%T9 zWkh~HMPVf5yMlPDs4(xYvgMobFWKRz5#C4m^=;sj>615-^O>QqIgy2bw?)7O8qB% zjP`458+b$hgv%pbHS7Jub~qyg337K6eg)xgZx?+1LBNk8{FUv3UrYEVI$b^61z$?| zzNEh&Ce~m%;hw;M0pWL${!=G}XF=x>-l+k8e!Jjf=tqU?-vj)$?Sii&d@0+Fvr@uC zA0}1X^rwP&Yl-*nqqcmT`6d4|2{(;!8|`q0kP_gB5I)9s>Hc=XI|#po?b1!{g0F?6 z9rhA_a7uXO_tOo?FWZfb$VLvx@G&#;SK~1&vKiR&wr}KF<1sh#YXbly-+VMQosQ8| zNqG-aUboUFF+&pS&i=sZ7^pF^>Ca@dgCN5~JxQlvKj_R(PKWjPnLQSK*0Z{Q5sUTx zGCP);4$EsT;qE3}Pdl8!r3p{ErG#He`2A?24UmL8`8l}4#?Lt7Y4oQbx8o6h6h?9q z(#a`@1agb>K_ej~61Z{dfwOQeGqNn2ODWbk-7j2=%pRa%h~FW0b1o zpYS!**ZmKt%D)x9fbeLiK8NLTZM)#B2)~03$yx1!Uqbj< z^m{-2eS7jdlkhiw3iyrff*(ToM%vT++Xe3+d>zZ{rgp*C?ge~y1KsemM zpu!1yZTv{khdG3=WqG}NLU`%_5kAa%@Nm1}-GraXdT{#*;i;eXFa+V%)cz|^2v2_2 z623<2{|Vtm{|O%^Kl>kQk9-OQUi3c|Jo{(mud#nu9eLz0mU_Je{JDw0rjhwS9==EL zcSLTs;;#UH?c2c5`2hHXkB8q`$3NSSzl8WpiT~m6QskHXzw|2k-x2v2Mz&4;VEP5b zA4dM4N`-I2vpjML?`C&+e!Jjf=vak^5&qg#@S%{GBZ^~W(0y&>X=YVT1Y9JqDk3ZJ z%HU!VNA4 z92vXQ+7DTSqy|YIXk!*7OF-z2PD$@@t)1RpbPmD;=(`S2N$+Fy`jhkbcpG|)NpA>k z+WX6s2*8xwEG4-a?3>68_hcf5iTF%1L|tm3{9TbJo{pEm__dHpHc>BO-)ycOHI% z#K!LcrBaj9TvF;wOS9{@Nu**>+p&Z5d&@AFV=y(IdOnQU8vWb{?bw9B#SZTze3*W2 zQ8M^T?eKMQsKU*(`Gx0co6DHnD*3&+A zJn80UMDE)L6g8BZ0oOtv3nHJPMKuYrfPP9sgIYl79}grK2-}nSXwEp#G8cEQ-@2W5 zqo1@FWCjSC&q3y1I~n3#X@zI9&1j{=D+oWeEqqp_r=DIHD<0FSBA%CcXW8)#d2zmL z(qAq7aa~CT@s={1?=G=r)656?nn}27!fmv}ne>f(6MhKc8wr1ZDtLWuz?rOKY9&VF zOMG;qdPRP`JkIDM&SHb+Ub=JA+P{vcu)7u1hoquz(O2rzN@6q+IvnG!C0sSjd$1kOpwD@w{b*K9Jhn^AiMR3?@DAT^lYsl=Di$tx5;nvBfEJWWr1N6MhHbUrh<`i4|yvHcNlQV2P@EDN*MU^*0Hq z>`&f;Njk505zbWS#OtLfnuLj0a(eg`pgS^vJ|zJ?E_nTk>l1o|p2;`uV3^o9QXYNm z*fi|E8 z@Dn-%{?%0Q>_~HOgybQZ* z;;jQ-4IMLS6E@;0ytErA^i58I`uA^4j+ywofL}qZS;Ts`(k2(e|IH3Rjqp_`0e-z5 zp7rw)4C|QmDfa<{j}iXfWbi+Mlac`6Tm$&*u7ID~2A<;&y*$gTwLk$C}|VhwE4mrrJ@tqV#~Yd-ahst$3^lRm5|%Y|gUd85vRb z52FAqZ&=^0`eS{8_ILfUu0UI>Kh_p#e^ie~^{zrP)0xajCiCpQCz4qxe`Vx}-&^vx z8U(UIK#9L6Nv)u!&rVK?__x~e>)2XL@x6+t@DAb+N`=2Ra=sNmjP#eA`1cdPh4_u- zNwdP`uJ2j>JK|3>@vkNRAQtkPRQSlh6<_ji;`b!}2I9|7g})|ps}-N+%tg?8{_zyP zk@$mB<0ts1#9waW-%tF-#BW@fJpZ9#th@~vU*;n1A3o3eB|~y!_=pv-Bjpvx;vyRX zWhn9@;vua;W?JVmtvt%QGO?k1uvzE}SF9&qbv;*(*TlHQr#i)bB~ z-m`2aklxdBuZlb&@0Ug%k>BBnbG1tESNv^FZ}ldmH-!1>a^mzb-(j^EyTGrP_-ii# z{?;-Zzw{55+2Mx~et8byA4~>+iyhuc`1+dP?t&!w{hJ+r8sX>l1^oJC@a1;+ z0fZlS5#aAl24850Z$<+j-Zcd9Qx5L*EzVBIpKQ9^lr*Id|`oR1yC;aL&0e^UY zlKj48hxZb`p&#J4CWBvQhaX0GXBOZeOa_089o|X!4gCRMlnnk-JAB;>fUoZj_{);P zcecZ?CcJhY;JYM)|0mqv1o_-e_{>uQ|7J-N`TWriKaTLTh64WaWbl4Fd^X{Su|CdC z2Jf-MYa0MxO8YZ58GLU$e3XXoQK z`HUl8OAp{ZZpWj19<{?~6MiAnnVSs$XLfk)IlxaL{Ma_|2LH@&72$FTca|N_%rEr0 z6~i&6ev1ARZ)GO%-o3|`Z|eVRcKB(8A4K@|$>4u)^>;{r0O7OQzTcY+{wH?$W;lT1 zk+eTklfj?6#>RgQ;VUTr^OC_I`m+swIpMPifB5bs`E9_6T!MVOgm<%j-}qM1a{C*dnzd~FcRdPL-<{6H|MttKDG|<1+?GSwhO+B@O5lQ&T1F@62ecT zU-Y3bS!V70&m{ajmixwb!4DyP1IzvXcELLcA7;7VbV7KU|H4FOxPti|+%EW)gx|&X z;n8|K-7C@T>4L0p3Y?2k93j zgMSgtM*@5uI@Vz~>0f4tH{t5Q_gcbb(XZ=ihZAMSB^0`mBR3fsE$7h5d+b7oWIOlA zm3$SB+=y2O)kWOj48qreuo{raXA&c6I{th|3XvK~$z4xxsSw{4nZ>(GuS`#`@rkzS zz4wff-ab5qXVUc_(XRAleER?z*yQ8e5B|wMUOtZr)U$1W`)5fqq}KnXq{sbv@rfml zzYik4*`&89IlUbP+Gw3#tz|sF7UTK5BL9Lbgn?RoNOvt%3k_>O=bDs#D3y3Z6-a2y zT0=(9;VGO)cjMG#NhXv>(1Y|hp~0kl+NOVVs`O{HN&jjy{VSOMEV?hhos&d_w)8Qd zFMn{62#Q zHo5$Y+R&RodfBIe-jgZm{U{~9K5gi=ptBjSrLT57A33-kazOC-S!eorAE( zv7OUX(%Xqqf#mtUw++47q~{~OmuIKSZ&^xum$jkSm-L+Um4BX+-bE?tz5AFwzdO*m z2@j$#{hgHb4q#Lud43;kLvJ4G<+KW>|EwK;0O6e+kG;1od}-w93W{k(h%7Qgx>E>dcPsPkrcznMXALQ3e9E+r3P4JL}}vVZayNF z4SFggc@NFwr;YMySA^@Ou!NJ5g1-MCA8+K>|3)&wa>g1GH}_<2oB4n2eFjM6+4dQONgB(B)URJwmbtxoNmE;Dz!mDDGwfAsJuJb=_- z>hGgxV^ns1Dr_KBCt_$IOZpphnsv1UP%?Ai&r-NYL2H!vzRQ_0QQq~`qP(9LxTZe; z4myeQenVJoufJRP7UjL{db*18PDanC3J5P)m_?|{o9F6Pd4CAK@*K0gGZDwZ%e%YP zN6hm67uxkOjhN-Voj#26cHGX4*VSK2l;!=vb<~RT9%xB$%<}Fab0^CCf9NEl%exzf z3bMRAKv%bpL+CQc(JpV5swo>Fg0<*<<>js_=<13%D&1ZZk)#O!1!4aa>3;}EiR)tf zzuqHzwll&(x-rNm4rCTZ28obz6`u zMUZWe6YJJo514ct1(3X~zerfs)o(@%t5SVEM;1uHQ)|g39_e@ly1M0DpXn4$+RU^? zhe}W4`><}z__h#be4h%dy88SW@l6WH$1^*18@N7m=lnPC~JhF z-C3|_kfGgPutztvSgSbI&~7Q%)6vjwF4*%O)&fXjZNZ*>hIVDao_a&Ox?s=8h89QO z{$OZv&g~UL`%1x{-$|`%l;=xEdhbDY=5|7MwiYLnort{AAl47;Ml{IZY(tCuU1(^L zzww3^`8&_hB7Xx7E%JAkp+){u3@!54!O$Xq-(qoq3_$+=VQ7)RJ%$$f`$%e|@^=$P zW_6o8B7a|A)};LLe2(KLQv!w1jU?4-t~=fuO_l!VFN^Y@O#k^@7cXt-Kec|wDhi=^ zc(4fT+Bi?j?)@TaF>2cUbK-V!0gTOcs_@;5UPgf$x_WAd2yGIzeT7!M4B1m?#XFQ; zgq9Ci)+Y(=W@^8gM+)Le%CCfWKW+a6ZMe#De1wXYbC;@enb6e*2O&4B;je*29Gb<7 zsj2njupX`QFSIiM)H44+BW|znAo)(Uxp-GNG$m{UheT=&qPuW^ssqybj@HS@2$dT^fgyonupA_$AixTqCRwhxao4T!!CzNlcC~ ze5N%##}OmL;WHRMpF^7)=ZT%$l1L1Pv`P#a0 z_(vK3Ij%N!jvu~#bolCUcrU~6W%#WZ$I1W3`j^oRhvTnf{=?xj7+&wg{KpS}ZFKnk z+z=Hl=~vLz6)=2$yzt1sHN41wIQ*jwzl-5J#|yuqzP&a4CZxYQ9Nx?DwG6*?Zk+sY zsDBwu6yp{sMUtn}D%vE}7?)YC0wrjTFD!!)iWjon;L+&L#se%IE&=e6XQ;q$`b$1;3M zSA<^^FZ{;(+pOU!FUjHX-(ql8m&5Qy@x#xF4*v>=WI|q^VfY}!_lg%D`L~7_`45M` zlHrrMD6n&OocwR7e-8`G5#^m14nLOR*NObc4}V*9_~dZ-Z!w{++b;4SC%lxGLXe=m zq!Q(M^d7=$b^R&AO2|tFv?`%WUe+K6$*Z3+uH`K2y|ZHGRm#iO`Y*7stjJ7RhVq)r zkV#_wCpskWn?DupKaKu(a2|0@L;u_BueJJT{n@_?{?`qK|Jkwp&x!W`3jJ4;e!qtP zch>i}`sX}oHT?%k|6hesIp=xie`8@eoL~Acr~f?Cf2pDW?e#BP{qKbTk@UZv^ly#j z|F&rV$@IUT^h+E1zp=gy{@Kq=x!#hlRfuOBhJLavUxKbKk7KUXXbO?zExs>ux}dkA z{y&(_hx5sDtqs$wBE8O}w|!<5hob4-SpV_@nZDbAVR}s8kTAV|r03z7Xjx5H!50+cfwGMPvhw0ozI$OBg@#Tz|`J_Bw5*>bS zI6Uv=*X?8Y4ROND_j%S~@tT9wYb~U%=g9-4rem0zMrtcb?XuX^*nV%Vf6Y4IW`16| zMe*es=<4=xx20EX3JiaJbok}r@K-W?cTQh-UKE=jGC$j~QqBCV1F9ld`N<4Z8$xQE zn3|hnQ)7N!sV^49(66u?PQ zZD2uTKvA;|+=Ft{@&N#18)2bUGN&%Q=rO8wbl z+akICM*_FiFBA4#>X!n;(QHLDyKVw;jrki3Ckt0iE$QEk?uPWQ6_`@LH%N1G{T_ka z>V3j~OMMwIf_^ROr;;BZPm4=`XZ}dZyznFieCHxcjFU9iz$gC*;Bk8|$Cj8$T%l{S8 z{*&o{56ibSmj4;vDEd2Yfd5*S*N9mD&metyKGeM^D(GDdx{gKh-wUI%E-Fz(zANcD zndSUOOwR}r;eR~+f5~*+9nU|{3;r8J^KiI5D34@@+r#oMjSffuFGu^|aXtLk(f^2O z|KdE?*O=>bF|grzuA6Jwbj3JNw&Ew&Hf=c)6+k4iO>;B4)fAVPr^Mo!+4>mkor{e4 z8=mLt7ZDBT`khI9J!NY_EaGDQw0B&3?_On1HtB7?4)pRVdp+aQdkbp;cdPr~Ua`KNdIxsH1 zPciq8o!?s<&|6A+&oO-;P9on?C3DY&SN2htXQ#(i?Nfb#s1``D~N0AHxO6cNT&?pR9Anyuo7QC%B!X;*KF%6 zF;h@mj?w#*^XXwaJYX|0kNRwj=a~DG=OK>p-eS!C=x$aY(fgC)RKwRxEi|I{C&iBS zoAhDqPrd*>hf}{Lt`JMR3l>v5gbDr`<^?Ku(fgBy^sopXKx#DgE_ybk>iXfZK_LXV zOC=T++|bqSV3m4#VhoY6R{v(#t5k_~&0QFH$<4oap{sLJ>W4=rDeQkYvapf9^2Wp0 z$&tRyWO6?)XQ7#Uv42<1aJ|^RzMC7BVex*#E$C2<&6aBnE#6PK+|Xj*rP9#i{REex z#TLvZhW5FFJ<|n8HB@24zl=H}1P)oo=9oRk$q8@2o%H>Yw#sJ^e4G|8@=iZ?A7} z^}iGTtLc9y{l7aQiVK{#y@%$Xe3*c?R27@}?#y_ElVvu76xOoLRz*{YETa|prr))K z-iG?WqxA~Y;}B#odQVC3bLi@vq?gkey{+{Ru@%I;@@5SF!}Pc>u{KPP_wwrsS;O~b zMddI$ecS6V5%gBqj{`l@J>N=q4d~{D>5e7cB#vg*#HJfg56=nM=zDN3e0yX2=6ODG z_Gn*)nH6;u;%)S`b=@yS=ppe!bA4f3{ZrP!+}=mjzd&Hg+8an_bw0?{k3T3YA{oRLI_%7Io6v~r-81FalrSN7T z3-ufo?6i+y2UQED!EP53{&eW)L#?HPzg?sOxA{=dL9K<_1vedj=R?&(t%Z6HO4|iD zpbi`l_5I{>^W>@$Wwa8?22}vH7iBjDxDD7mF&zI?bns$4)N|m=@t>R49JF$vc{s50 zlM`(P8`|4e+R=X8X0tt;)mlHAhqJ9zzE2!jQjY$#Uu)f9nbtni-qtCll^5S9`EJci zD+ij31KC=pR-_eZe$A(q;jdk*&~$C0=GHu#OAA1srd4YrwGr9?_?rrQhwvMK|57ao z_t~%uXd#63z%&zfA~=3!%#vHZ!zY$P0btXuTt-;TGU`RW3)+=O0}-RuB4oy2s}& zlV053D!a$+)B{1k+gqkr`U38t+vgRIhFwGe=AugE*NvR&Folo<=DrfSrfU$q^GC#A zob3yFgZk((dRoA}#8n&|kd}V#0R0@DCSR$ZR$N#!z!IX5R*XFPK$+BZZL~H9f78He zx3&b-i(xwe=5+9Q09?+2Qf@36`Yi@0YT()jrhfRRqa_d z`SpG%mbVP*2y-9WX#2Ge(b*&_06y1)%Lm>O$Zz zC4%K3OJ)KjcM@E(AjA2P-E1M%lcAet*wTF(YFsYfsA36bqZ!<0!mGVL4Y>ELNsX^Ed&k(X(x zD6?kf&M2Na`I1}}hG^xd;#T8nQte+cN?F#BS!nm!7Zd|0YnMRZc)BCGs`pkE*P5n= z{Ls;pu84gNMKc#lJ$K}+t;>GAsoq=q>%N}$&^)aL{81C~%X&U}( z#g(Ygg}y8&-C#ag9B>wKGk&Sec=Ysi*uou@Tuvm6df27w6McRd%UyP)M$<}sPBDBb zw|kw%9!(R7A%MqKMx(&U5dlLT{8xTQimmrF&9=Ql&fjKv7kYh*y}GN~;i?ReP&94s zJt?;DY^J|WFqd{W%_VlH&NiR1QSb3N>>iiywO2^FDYbh7)CK(^VPRXFVmqm;X1l*k zDu&C>EGqE(%KY{UeIiOApr=)j95JA1s@viB1$?DJeYQIgvU~KI!I0DK)6X5AF{EgA zc9Glb@PwSMqG}l@DMkKL?oF}H=&#w@ov+!}XPWcWmX=>Nj^HS`vEN|iVF}8}nunFJ zd%m}6w{fCob3u9Yk;h9lTSkFqdlq?q2R#1BY37@89YENVOHKY?4nHaLHQQ|nuhLR@ zUyAKY%SIDTjxHSEf$?J7rH&SLy!%^|AXgXALk6s zcEi}%{@p%|h+Xyy22gqqoMENA{C=O3@$I1Xk6vb4o`Wp!y-21X;fhP_0as=wq_M;u z)B`Rdn+8q8jWs>e(F}(XbEK1Ij^TYy-R>_7Rk*y0Xdq~@(|w_!jsdsd?kzKlcKo`O zu&hryTeA)BE7MtfXNv8X45=TvCdHO?ipl@(f@7MNd{>HXKkBGq)RGO22lh`P|H@uh z8lbY=1^S!M(`?^C9;OY^Y-4k=A2dv}&B6NBN&Ph2pDxpEKOL>vwl0L+xHQ{`GvGH> zv;AnWW}9wF3rTmrJH>Vp)`JzT&+;H|kSo%9wMQf^SGs2Fg0hH5YddH?iEt{(Q40Melc>()&}7pXSHs` z!G7Kkot%YF$0(ZVk#oBlaFhLhW1}AH*km?nDeiE5&e1I0iyP#BG+aH1BY=M#X`1t_ zNE&iZHCp)aBZZ_M>3=3@S72UDj&aUf13hyz8ad|dR`PNzLP^EhoKN_%j&sPD#D9GR zWs_T^q`0N1BwGGXq?V;$Y9OT{z659o;nnfP?}3U<31fU2Y3Y2&mgEv4-CWHoHl&v| zy$o{c(8}TF$7qsyiY3*`2j!Wv#nyuot?b7lZ0uMgS134!w}w)6Kw)##g+vRmwfw9l zaU{#{(CgO0%J6tAw}4T*TxkD`(ay65k@IG6V~5ElR`uB9awVB9u1DCgjxIp2q54JE zkjY`Y8nNEV{>AK1SeK4uJ!<8DQ~BRK^`MpiIj9{KP+SG#dVj0@%kibPO);gU`P-kS z^1pfHKXM$)eYg^gML1(|i`JDh2J6hh91BPGDkg`l6eC+^)6cOwdOEaz+w60W{hS?q zOn9j_FS0nB-PE%4`s#==dSjVmX;S_;~zLlDmAA-W_um|V?9ss?2y(YZ_SjYJW>uk@B(rn3C2YLeQfr>^; z^INWea%WpC^{HgVM78#2?ym{)uU8z>!G|iQ(X_W;UP6KGzt1{Oi8m_%?#erqV zc_UX2xZA4&=R!qJU&=QsycaEKe2ij8en?Sj`}Kx{Ryg2Rn5j z+Y@u_6}_*Lc;9ZVA2TiExu*7;ku(lx-@;twRc$oamzpZ4%x8Rl@ob^ohdP{nh{(J* zZ9P7cM)UKp;hxW-&5t?%862f9g_*zZ52V-%P~X*FInO}YJv@rI7>rb2V=xx z3=hwQ@V5c}E|c!df@q}@jji17w>xmIP(#|VLAepVSf5u`eG1udjp};Qn$m+YFXi`@cCLyQ3WERO2Tj20zg9_+6DaCI_BO_qurYW#G6$mx~m6eL)@ViNl4n zZF)%!qLU}#k(-dm?ziwiUX%^*K-8!-)ZxzXEL57ni$GD1K2gF_Px+ zg*++`EWALa%i%6{BVVRm1zd|lv0IGD_P8M*QO^Ue@Rfju?tvN{TCP?eEbfAEX=ahr zSyY7!4?a(z$l(uCEgm+sC=hfyDl3bMgFcUMvCE&~Fw@ak7v z_}BTt6x;uuZmxlm5PSM;s77gpf@ti65!XaY5pL6@t~MUR+yUfJ`Ags;U~*npTYI1m z>RyMZ?XwW(cgR|9$hPXZ1GUIWYlUJINHJQElMrUF+2I{`NV zd81<|@W;S?!0UjvXj{Ou(k z!%4Gya0J;|!@-mn*ZjhS)KOsF4!-M7 zOhve}VVrcPeFZXu)g0;1?_22d>XmM>(xYicdN^ORmsoOWwKtNEtXA@fJ*dev@UO)m zW*=aM!J!CyWYVcj7!{pMU8$$C`_slzc1tm zg_2M}cC}7;!zS@KW;1RSl-g%m}k!Ke%ob8tr%q zA*xuk@H{z&WR!C}9`d5FF~%~A-|fVJngcH;zQR|fa^?2m_66=Fl+w? zx9edh3KE(jGvXc?ZM?4FVxNDZ?!*NTs~M#s4#z9^sH|&VAIhl|(^8B+G2alxVTWk~ zhNj4%!;mJ}g(ZS|AEvX>bqMw?Sw!!k;WD zj#>MNd+&baA%v9jUIuTqM&7KaS>8^NuFO5};g%wl3;*n(G8i^P#28x9wqhdrBVU;c z-udM%2EJGzPbNr|cSgL3%_B~c%X8yQQ3g)A#{R{fl92NFTNHLb1>=83< z)Je>p7vijlI*;-y?t`toK(noyY@QoQBwtcK;>pFqZ@z6u8am*9luE3?$BYw&l_?6$P3a3P$ z;=31ciXwi8n{K(U#F|invoj$vhf=hy$hSMV17-Eu@IDZC1-W;pcB5o1NbFXWjIC+$ z9NMneLgd1aG`dh9+2&=SCh|oH^_%DkWO3VvX6PsSU9!NSpX3V8W{WJm!aUPzo{SY( zH(m%?;>z|zhuxc*7!PAepKBB-LebB3boRMoOzfgo(2^IFbE_~y&8?mztTbsi(}jv& z?(@5ZZIoS<-@VYtq_4op=C|@## za6^Paiz8_&w}^Nx4pH>NE)zYWKzV^2i_QTDT@%EJHJlI@guE_SGpF3;RSBKp3WogN zurJKHUBT>-AG;qxgP6}hEmTnw=7+&Uqtnethb$Rx35Wb+rZ!oQd|+Sbb}SSxvy2!n za|gSLn3hcT${7s`c|wicpEnB|`H$l#Ok<`P6S1%gFh+3)Tv-7Ip@rh2lo>;=d|sz` zb7nTK3|dArnl{J2(3Ks>m2ME|c+T2PkIPlrz%_fON`WcYGiS`nH^+@x4ly@0EOV=I zg*)J`k_j*L*Bs1Qn}OjjuJ*DpczObx zWiv%*Y7`&J7dgfCcb2eWm!Cb=UK!y_uAc?na-DN2kn3B^fJwj`fo*|nfLvc&2W$`A z0Ob1FCLq_SHUm2Xw*WffxCfRxBC)k1MUNI-R%I7Yi~&lb76PXOi-25DbpmGtJwVE05O@i&7D%bT5%^=^YG4}(z#8BQzzx6? zft!Izz^%Zxz@5N$z%POAfd_!ez|J1X1+W*e6L2uFGjKHUBw#-9WMC1n3(y0kz%2!y z0=yB}6}Sf24Y&cA0^AHd6}T068gM7DJMc?j58we{PhjT?$OEt!uorMJ@C@K+;F-XD z;90;Tpbqo^djppO`v7kQo()_BOa*QL_62SR_5*GO_6P0+4gh`$90)uB90cs_g**Uz z0n>paf#(48fJ1?Efy062!1I9Bz!AXZ!1IBtfg^$IffoSlfSJHofTMsrfMbDsfa8Gs zf#ZS6KFAHQJ1`rV2FwBG0CRzbz==R7a1t;GoD5tBoB~`0yb!n!m=D|poCe$ioDSR$ zECB8X&H(NM&ITq`LY{yrz)OIsKo@X0a3L@U=m8c2uL3%OZP0)Ofl0t+!1lmZzz)E5 zz>dI8z|O!eKsGqrf!%<+fhoX!z|(+9i%{;s6yO=aA;7`F@xW2QBH&n{2bc|93S060i{19_R#i z00w~_fy;oMfvbQ$f$M;yfSZ7A(BN$WCIPnt+XHt4I{^0qI|7pe2oFpF_5`K^M*+tJ z+n`}A0CoV*2X+Kj0y_h1fjxmMfun#MfNjuFZU%M$ZUuG(?gaJ(ehC}}Ob)`I4tWB0 z0Hy&u0!IQz0rTjd3VEhGu$=C|YPtiL(>)D*raN#w-GOzq9}GUz9=L<{z&*4d0zT6o zm>hyVusg8LaKsPn031nsU>@y9B7T~IxyW(+pfs%t8FbJj74TNBqPB z#1Bkbiui#&fyq@}ZEOoCXy6UnXe3d?;YqRQ%03fDO^100a0u`N;CSG#fCa#{!1=(N zftA2FfwjPQfGdG-1J?o{1a1UA4SWu`1-K2k6Sxb=K433!D^Oe9)%GmF27Cp`K8Jmh z4)dMB(ZGekWw2)-Hy36Ha4FK;23QU=SfEt{xp%o7_!N+RKKI$y!JG?R19K8^6U^*u zwg9iCJM1|o*bXyTD8>RD8|;SpKHxs!Ex@E|**B#Ce+_dg@L?eP81`+$VZH&#F+_V{ z4$SPsHp83@EQI-fpcD8yFbLcLTn2m02fh!?0loy}802hVA5lw#1TKR)AIPyr25=S30U*a@oq+3LUIp9){3UP;@KL%0 zrvi5ap9Jm$ZU%Z#ZXBy5T`u>CIrcao<`kGYX4nb3oq?$^bL_#f4aY#kVGaUE!;Gd! z%YpeZU?GrW4~_{>0y<%y4%`fXX}}=N3y3hE1zZNR9muic$-q@GqsodgWEbE%n12D> z1iT1%0RC7(x4=9D$gx*Ca68O?Ajewg(jMk&U_Q*5zk%r(Gu@ZT3W9Og3M8kkdoIWU(33xPKQx5IuA&Gx0d?m0K+*5$VVV+HUm`?@fz&r<72wV+x0&fHcf%gEH0oMZu!~bc( zRWQ#54u|=4;5wKu1{NW{(ZEeGUk%&>{C~jhz$)Nw;2K~K!u0^|gZWb6jWG8CCS57d zz@z}5fjJfU0&qBRBQOV82P_2sAJ7SW8JLgoJ%K@(i-2s~{{&nH^Y4LcfxiQ820j4X z0lXbph;Tmw?t}RbVA7Af+U5aMkdI+Rn3n)Kh8_=0h535mXqZO=hr?V8UaDL70nysR(x-a2d=?flJ}816RRZ0`$OqCU70h^MSqKe>iXx z%y$E~0WYT+{`v#IgxL)|0Q3Pn*UC9xFW?_x9t>Ow91Xk|m=Am$SOk0s=mAayE(KNs zTYs$__`Y(0ujBAnB2MJsi~?4f`CEcrk96$b#iLBW~ z>916rDB^h^NxvK}{FRH7H#~17{qa@_e+vw{3&rUxp7W7(xk}9+U!9UD{qv1${Z zU%3%aK%5}rxt~SCJ|Ir`psj%q{8g>Kjn||LwUMH8igFC|`Oh)@vp$gDW_gpJ6SRvBch(Qa zr}*y@`O6K*&-#*%)Ny>pAL|XxiodKsj8CP9^(Y;_r%CTfeGSZ6cr#o6Sg&Zl1b_1p zHfYE(U0K(xvd21?j*u#E^qY>5DlgT7H>P=s2ydEMSFQe8XDN${x2(IAHC1-3!_13H zdxgmB)No#T7tbmitm{ml;w9@mWlPl!)_s~)-C`R+vx=W>0m~*9FW5d<<)}pD-Ao(X z4QpE2eptF`xVYgtx^vYHm=wQScWYZn>utA0K}c7x@|?;glsK+u~Bn}%{P>%7?p zTI)!*Xv;kY6}IinhuJy}L0%y3#|+VU-FVR@Qy%d|}j zr(LB@m7i>vCs@*2fw7BOyJh@2Vfm8rPYt&fDt@!wWc;Q)%J{Rx?V^m|OfO#qqI_lH zZ*)5t!1(~CMU}El%hYgMWjRa^%chL0AnY#Vnrf6XWk$+!ytvp>D9M#^6^7+W#$~pt zGOnC3AFQ++mNDPJiq6M$)H16)O|h8CliA^Xkq@*{QX`Hp=WaW(LZ<0KK`D z-a=!ERzc7c5M4g!tuzlyPEOQo$|wTK=LQs7`~>Gj@~$umK^7^gym0;>m6a9GhON6 zxZ)Y-i|H6!E;Rhh_K!5>PnvlT-)g3<)y!`SMVjTTN6k~x!E>&xQ5HFV;Mb4jPu4v< zMg>-LNjSaIUCnw`-FAf2FWt@jNHbq@w$fV=E_3PbjiO%}&YyHwvp5xBD9lgkZpyqe zFAm4Yx-!_UgtMZog%fjU+&E;X)k>(1V zNwtRehRaX7tJ$k+JNV9_)jz*H6KPg;M21(hdKEqtmTl?I7co?Lj;DBzRGB&6r7!uD z^ALA9J~^*cs}~&4ajdUq>uP+bRtc2ZlpooLn({2o{Hx+)pUSUhS1tJM*?{z9{gU(U05vQYlyJW#EQ$aNaF4T@iKJZt7p zn)z4$x|!~0{Lo0;`d&JES74BgpYsMu&`TgboiC+9O(cUj*|cbY50@+aqh{40NQT|lj3 z$#pH3kCI0@A5g1ZbZ7il|D7cIUN6zoe^vLnKS%0M2%#Sqlul&h%4Yg{=F(=D|@6#xEITlnD zIJRStq9~{_uhpGnV5>Vhs#2uJhNhY8C_MG8;#2h}9d(lHVai2~hhz7Pay%OV|Ko*| zZqfazoWrTqFb>MEN-z$RhN>gEZC=<#roF@9+nNajK(;lP>`C%~fZH3G!b}v=P?yt$5=qjP| z3&T{qKNHGPo|#qYr*eB>Mrxp@AaPJG{P9rLWM+lRs6qk6=BlK^ogp0E&7AHCQu(N# z=BuKT4mmDICX_H(QxsdDiMa%CYAECwvIeH9C{5Z*RJMii%Qwa)2E@uTeb0d{zbGh? zC&^8>LeT><40}Sq#bqK)ZiJGk;+TmP1Ys+YA*4&}^heufVjY=Ztx(9?#BU-p78lxT zg{*bTWvb9Iue4!3$i)1M<06F|14wtt8_A<72InM_FVxYeMEcEwO<5Q@_LO;Zfj;v{ zWIIwJ`YFaZ9Vwt6iN3J?G?Yjc>?K-5j-?1Q5Z~@mVO|COFX49^?!2_ecep0t4$Jj;-?i@ue0OJoX4}(Evz5W^Nxm72 z@9-!(#66%j2!0iNQmk!#WfUhSZugg#d7oogVJR9J5 zq9wmIcq6bJZ}ffu|H_Z;u@u{!!6vpjDxZPc1 zy1fmVc*}6hdmOwSV7g72s@Wbx+MmF;opzk5+5U&}w&S}{|C@&+cTioy6O}Gv&c+nm zpFvB-d#K@)QI79{e@zWvjqu~aFBN_a-b~(uZ;!1!2lWPb)oud6w}7W_ATKK2^O5Hv zkZBcW4(iesknNv9b%DAC_0bLW74rTMs866ygP$8=r)UtjfX>6oPU!yvbszNBuxY<#n(bx0Uwty%y5Rjgl{RAP6DhVe zko%^F--GZy&@MJL{M;u~Y#~b>`U2^`x(sa_>cywv!{=wA&AUXiW%e`Ey#-+|Lj6{8 z{%?rscKG8idGAr(^tAFy>3eH^!)p|MOZ2`@y>FhLsrQ}AKQr~d7aJb?R^YqNaK#@n zq|#xZnKd=jUXfWaHM3GQxP2#ELsp8A1~sc*P^N_>CkP9g<{iRx=|5vgKF`w~E*}nl z`_p=NQO0|?@l|7-;X|*_QMVeGiwqfmqVs7nH{rgeOmkCcqzhah!9-dc$1hm2}m&tY<>6-UMy=_f9#g=G?jrC~sTy4Q773 zDrou6PIG-@=ljWrfvT7jMpH(k?+}}JggGjoit#d6;xe%}LVYFl>X!(OW0&8HQGeu( zdVXik{GwCyNZR)$--jw$gQ`-isjAqZ4U#x0wW^vbwQ7*WK`>Y8sZuHC?if&-@;KNz0KQ z-r$@1vfn;om^ch>ms1baO$@Mv~O70^zdt*PO-f>rRm{2BmEhepQ?P{k2&W3;9&ss z&{IJ7l6<6>%4ep#8ey)mtS2nRT$K6g-B<4Rnq!m(V{?)1V^@CF=%jf^Cf|qr9%`G6 zRl=!h3%%2noa5GKmZ`^n{p+s_vnea`MV+#8_kx9<3a_tnkv|X&RV}Wrkq6$j-lv{& z@=2XLb?Vr$1Aoc#*WUWGMgV={w6g~E?$zV;(@st4*0t*?r<`K5*}C9&vizMSeo?d! zwhqg;n5*&J6W{H(zQxSlSIF7{&?Pz`^L@?o(fP+jV;u<{|gT;yyBwA-9;Vp7|7?UOrn z?9}{+dL>lkfij|-rNK^a|yo@IvGk1*EXE`+oG z_FB!gx8MFW{ja?J_6x=WhYTBb|7dCcCes=Ut8L>g=7hpIz`=5ys^r%jxq5J}DDfdE z>3;a9!!^=5uSG{QNVxP9o0C!#M_Nv&LQs_i)_n)82)^=gcB)b~ro`?r3-9dEw67UStcZ&^?s zx6_8K#huQ3ao_bm+<}HV05#-(d5@m7+C(XQr;o3V`uS-i@s@s-@ye0jU+XWvL*VfF z<@>4`4A1YJSiHawUQjJ@@iQNM09Rk^4wmy#NNL6IBgj{joFX(S#Q#a!e0ve!BFLRt zVEGIJpVGvemH|5+kk#$-FAbvPk33BuY&PqU}ne~sM05%oW&cO*1&c=U&@zW5hwA#V(600KNxj@2fV*J29dE`40^}N1KTcR^U5IsD-oL%lh-OT07q848o&RNTT zN4|ThqbK4iLI=*u=r|M3*EzWYoS}8ZtL-|@h4U3mxxTHVP4dBxw`_QRiKlpKV4i`K z6WPG2qSa?R#uI*xRau!1-a?C&l8KWEQ4_2qP2vSss~$DBW6iP z-;AMib(mF~=(4MZQI(t_GmuM{pDhtS%OdJo_*HDwxo~_PEu@9EV-9L(rp|GQ)-g-S zf@or}&yN!}qNPz4L=nu?MM(Ll<4n{5!=_`Fd;mQYwM}_xrgSTEVeA{gze=bjPW*u~ zT$sVJI`+Tlj(@byGHVQYap)aG{sVX;1ZpkRW~jYTq$~5L8efCQXrJlEU$)Uws&-N| zk!&8>dRSXW>0SJlG>tNiA}JoCGxHKr^Hrx7^%QwnZbVW&vapJLoZ%{)j(3?abk)eGF=4(a zG!Z!_7A5V4j^EZ+WygEDvr${}(Qf3xPagEsgnZ`0Bwc2O?}aJ43JSJ>f^TFWE0;XuM|7QUYm5dz=S z;ao&K&Rd8N=mjv%kU`o2*lzHbh~7FE9$#{*Z7N>$*YQPmd=*7Z&xBdN>? z4ii)!R3X%Ss7k0>sFhG_pw>ZcgnABY8`K|q;7vN{6wnU(jR&TSi!rdrgTxNwa!qkDK7!$KmwAn^aVS?N zkV`KB4eJ2mk3e&6eJoZRM`MKF8~QP@=nZx0JoSAM`C+1T_`!KVEgh?z0QB0>j~%F; z1MCaM3BqWEurt7JGd$nJwG>3n?Iwla5Br-SpG1jCfe>` zr6%hKJy%RSpe9&3D#d$ph8QTrTzVt6f-v6~C}MCJ^{`t5t?Az7Tg< z;2MoG>^I>=#^75b42f(*Qb{(;F2U40W57u_H4QMl8GH8 zekGTm{!YiH2G*s}l*lcsG8ew<!}FD#>eaA3&K zdvUeQ+B`>v6KPO9iWN3~lnjdRREbVc=v6aM1Fq3kp~!_0@EcqZ5nSWbg}=&B2|gwz z4VMPXvC244>@(u?RxZC+?~^S>TN?oHVznHhun><=OXE&9HVt6ZJp9BIFyux1h(QPS zEOUvFHmr@p3h8rZW_m*&4~8zq##m*v%j0oZ2HXJ-8t@xTVIW31V7=1sTP*8~qY|qp z6_wgxU8aftMVf#}lSmKkNNu;0z-#VdvF-H8skp`YSf>zRQnB2=2?%}Z& z{GK}$zA?5j)?k@b^5WbPG8fbj8!GjSX)rQZT)cS1a2@Nx(=MDgeax|WJpxV%MBg!k3$t`@DrjBt;45u)FZ7fe<^x(xZsQf7HFwaCrj*;P2>M7zzfyA@}5#+w&@qS z)hk6ZscNN8x#_5HJgF7AiXP4u(#_K_Djt>%>x|qREk@Ze*K*C%3_~636Wg62eDg*` z5R`bzrV_P`=}n6&`(n_MWzQBW4L;m>(ZPk-OJN#_F!H96Ty3W<^T*XnzUtvW2)zNQ zqq=C(__ak+=e{oa6WOksDJYJTKHl%(3Vsl=aG#mI16OS2IxtsD`LAieT+n4YBwuAu z!q!gxSbO>Fi1lvrnz!F|VMDu#u;WUzX_o=1Q7v&t$SrFL_eZRLBtOYD_HsVt%1l2` z$3>P?beYSq_3@04UvQJVb{Am3ik!{IcP&{HDStUalG(N@iDW9dOQp_J$<~&8@jM$S zZ>-54ax&_hbsxV^!u&lFu^a4;fQGwq@%qu|lL{q}<%xw)~wp1pNknY5K^5x%jHl`9p@xDQJ%YwVsT>TJrqz`S{@jES1&xCAWud zdkyDy;RN6O&(IBi?P_bUslBQe5uSKW?KMBCO=;T}FklgySx^mG(=loUY?xXzIt)x;>yZK<4c3Qq@fPVdM3Y`nIYsrp2$;m zuNX4OHjF)%(`W%y-u3{sGPG6=lMydi4rYG0Q{n9O>ue{ICsq^NvsuWati#MV zW8+yU_DyX2InL(Xg#Ecg#KRW}{YKkm?%2ofX^$lTi&0h~q>r-BQCYb)V^MmRfZ|?b zV=D$tG~Mc4LFBm6EbpSIG#>19LFAaO3MI-Bh?KxmOMa|#)W-4>O_Svqi>7t-U>(t^ zy3Z5ja)fU6*;wpmq7R-9)~d)~PS{SHD+=-p$%$~y+SZ!V6e;oYMzdK1)X149S~weEyk@&H7`2yY zD&^cdQTo<;6B#?(H@-|I-*2+UG!|pdrpCoygH-wImFx?-D$+8!(2d*U@nr?;lc&(|mH!(zU2*@^@%5(b9QriIzfk zY|SSpsunk`ypHC0gzICR!K(cgo=s+-DAyUe{w7x%e~9Ch=97n(u2W5u!=}haOXsxZ zS`WD%5^FWYI^H~b^BK;m%TSlCu^)f)nM2J*OO*ey*iIzIx5(Ps)G;Uft9WzT$QYW| z4$1zoX*oK+<)Jyo5sC3l#ne<8Xi8t9;ym(Fp<;@BkLGBtcl^-Xho;EJ53$|gEJW_T zsCA{ln44p5 z{G@iFj_>i)q2|KcUp8K*afG3nthr7+4LcW+yL567mwSP7kB;Yuq;9z{w* zWbe_s55YYewi!)pZ5o$5bt0^#5f81S;{v|3`hr+SQ zelhkwdUQIX&55R~ae0qS&EbsW5^JX-<7?_zRkmxf_uwL9IQltiydGHl)aa6JUURFQ z9F2Kx(8Lh@c1#!k%eRor}RaQ(?E{~789&5hN^?r_X zcp9}*oH;VjS*kOaM7|Ov{mI)6kvW#*Q@M_4xeX3&RXS1 zt*Wu+9{=)l^!gdDK{hVMDC8ASwpLw za8>bmIFDtH)!DwPy`Q7is>}O|Q?VPsQ~z?5%6AJQ&$Y>y56t_C);6AJ&CQ#k@oq(! zqmV?~ujn)!%Vl{y^&q^@Cuer@?iz37@w*>m#jQc}I}iiIvl^BJB}1NNRCCP!`0#Om zgp)V-;!zz9AI0K@+)238oTbe*1tE^ERX(_GDrcH`4p1ZHbT6bS?NIBiv!RH!%28yWnn-_k?90*78>b{HKgVl*J)Xu8 ztlh2U!CR>DR)kx&&z9xG6Jv7J#usoJyHlKKd0I#NiJy;;CEX4C2&+w^>1ll2p~gi` zTYG3)ew!XwytCjfk&D*#j7SNm6t~KQJU2x?sP^w@u3IG9E*wfZMUJz+Kj*^C*`oCg zi0D@tqI2K;ZC7LrO{Z_ZffU*5HRfeV zEr}YVH1%9qQ|4|e&ZbLaqOFRGDe@jv?0)cQoeoQU9@Z)+a&`3Bl9OYvJvpB0V60i? zv3Y7M@p}5h;eX4nkt8~gXuREQ=}}A5TC}FfSxe`%@$uQw>vz>!RjVAept@-4mC2CgF%FNonHhx#4CGyph zEryhg=97y^sc%||$Bi0w_c7D zR-D~7&-rYAi6s`**7MmcbIyq(@A%61kv!t|ugN<#7C02-j-3213fB~PBC9#ewK3|g z(pRWBk7n+Ug?VbC@^L)z^hl0bei-~}zA;Lo{5rJt$Cj$Chqvqc zLw{fFXpRe-(q2XO-$%YDh>Y*}8ZR8L{5_I=!=cQ_zCZkHzP{p6_;+aiMPyBDnVNk( z^&OGiRlTjcd)y!2PalGlJJw&K{e0u|P!-$Zlu}|lrz)nV&NGhXb2l<=@?N|34T-hTod8mSpqm)4U;%2cL~k!>&mP-xu&`<~QVjh;kEIyBd4DQc3C2tPj?i>9Hh9 ziLV!bpW2zGj1^j?CbAui_p({^duj3fCAtHfXnS@%m1*pei?v;lEt-{gW}jn^EQmui z@kK+vLzd|61o_plO7Z5o{C=+&y&S*8CErou?mbh^xp)vg5?@J-{?6}U*xKPgh~7%R z@1#yE(j~I>wz^oqlA~MtxJ0u2!;u^H8aqpYqY;)(!!jr~UTQx)=}El5NL<3qFUL3E ztRk`TYGizJy`UxQCgu7_%57wRkNo&2GQNZH_vp&-q44?WjC&GW$x~yHV|9LYsJS?H zN5zTP!|#)PG^Nc}GI=`@@!!-Prs*x_#i0jfBm*4C16gm9CKv4*Pi`-sEk;CVAL0|0l2H|Y? z6bFJ%x3Ab23RZ@K8RaaV@b5_0gXU;o5}V1Wm`vH{>-GHpfSh;p^%p;0OAl!k#!Q{B zr28>ntiX(eE2jKTt(?h+S<@uVk>qFd$$es6jf}75dCLMhlKfRtbmUtU6;sRe^hokE zQhts+S0m$VdEOq1yndhNQIRW}M`J(gaAr_EZ{QPay8PD7k@_WC&l;D5NGU)1wW?_` z9-2(FbRMlMGe<{0l-xC+oTxsgY30S4!lA!_*|fM0O*UF0Usidr&Y{d*siXD6SgU*- z>-|Y=`8ZlHhc%ykv~(MMG}@Au&f~Gut~7uD)6%?cl^^beAAjvmOZ4wYLsnWMU)J_T zoh-3_PxMH>oF-e8*8WJHkUhHJ6;EtN9N9+86%)z~cW91xd1;CI_Csh#VvldF^Pi)4 z5?sR^)rCHer@$NkmKj^53as*bwS@@f2f7fh2x~w5etiJCkfASv$q#)Ib_RI%Px>el zp##F6;Yq=#Wxz~7v46$bb#Q@tv4~NIP(DpJC+GxX_)tDAxVux~3BqV|q+j;(!nV?B z{Gb0CoVabx;CnjLZ2#xe4?nxE=!LHbIL;96&L{piyzQ2^uPy!AH>ZyBKRUg!Wm*4De_8s%s=kj*?#f7ee)K`%JzJl(U%d0- zhl^hBoYVH7Wv6X^YsOSW{Pdj(Q+C_?Jox??+vwl<|MA%^!Ba1O?xY9K z_|o(KK-(Wa2R+->XI^Tb?sX5mynC-d79xT^HOZ0UFBU3#S*u0ekv zx~SVldC$CY-)Ffqe%zB8_-*y7f1mJN@JBal^Y(5Gz4YOODNn!u$4~rST=^HKEk146 zzbbxzOZG)?zWR&)vmXBAyZt|3zvh8ojUgk)Puce6zP-!O{_%?y9q0Ozp3Qz?Ui$vL zkBhCUH9>|cPCHGom$@cfe-(8%g<9k>Goy$kp4NFZvQIlswZD~?S#2sUsV47eSNF0 zSg~jtB*^*S&wqN!-@80AXVocB)M}+q4A9?v`^ERJs2KOlUQ?fX{o~5JJ{XgA+EdeB z+qP(Rx83ip%p5=ckK-Qx#;+C8tl`Ngc~{`2YMIc@&7@k%{4(AWRgRo~R@ezfhW?Z=ml zS~7j!x;KVp{c(ClMVH=xA2$25+1;M+d)s?|Nn7@pTmP_l)Z{ZCO+RarKJt-U-+JRe z*MIo>$J4HPu6)+L^W2YLH@a);qTDNNnwHh8|CH0ca~>`E@}cYc{OzOv-uLA0zkPc8 z-+xy+takaP^T!UZd-j%(H}pt$?%O_X!FT7KykK@&%F`c?e{Iyj>he2>E`0yR$Nst5 z?d*sA?A}*g``^djn)TQ9`jk8O&$;d4j^94o=JE#yPjUa^*)s?9+Vb*4Z@;sn>g5q{ zb)NOX&sW~{@*V5{@4~*_tM;DMVfp%h2W@9%9ylfMvqx@nTx|Q||8Cpkey`tH|L#rK zJhbxCJ{JsI6KcQY!dvPmr7!-*d&d{!JDs*=|Ia$x_7?yB6weENC*1JOt9RYfDe&0R z@7i9Sp1si>8k9bG*_;P#e>-cNHh#&=pOw_@S+IPE?X%Udzw+X&>uj^0ym;I8XZ}0) z+@I8)*dsUp#0y@X+GB(E;#q%uF2Cm9+E+)tmHw;x{e3DfyW_f%m+$CN^M=3brRsa0 z{;X!&iK}*trbE;2t>0ec@m;a|&M)2{_07G$lEoJdzu~1l7Z3V)?#H9wocrCxKBq37 zv;N}H7yV|IEk51x)aQRG?)bkyxi8o=?7X#Y*I)bex&O-Ua#rsTvoG0k>py?=@O?eT zl_!CL&Tp@H=A5KgFWmUoe}4MGw0mz3eAr?4ny;ppopjHs55D`v6aPB-){%i*en0sy zTW=dw{EKlTyZr0dx9BP7SHJbigtwmmxX;*A=X~9dhS=I$_hJ8N+{lzwiFn$9b2eZTk1(=P%s$%G+hT_OE}mY}Bid{Cf5) zo=$h&^$YF!yi3Pi|ICzqBi^4ebNf114Jmv@G=<)e3> zPTJb|pKZ5&o%D>~*}e1gBd-1L!__GR9=qtk1-JdB@2Nuu<##&y#Cu1L{xnOq&!75IU|U(mpWCg!^P>HKKXJ=_pUzmDdA9An2Lo5< z{O0|xZ=Trw+R8gKch1-|S z`+4Y3TmL@boMl%r`MXbF?ELRP|FCFG)!O=VQm!b?-#0Ad>$-p3bW)dY?p67L^Ic_vI`_8|vhu%q*VFcfSL)id{o~TV-Zo>4{e_Z;c6@N{ z$A2DHXD{Eo>UVc+?Y7{Z=U1c)fw6VlGh)e0cMmviU&nEi|MBJnzg&F(+0U%|$))#g zJ;!f5@5ecJJyX~1_v@z(&42ZgVRvu-&9@t>hW5_S82Wm*v72uBwsOS#MZdlJwv-9~ z>$!E}{*Oj}{`R%)-KW2GLeFo%eq!vS4?q2a@2liq&&W=6{6oJVf7Sbo_YWTP-lvOJ zpYz2#9UK?=KkBjmv5A)qeD{r=Ck*`dqls^g4WwhY?Z?y1-Q@~cTZ zFYIvFYbWe{@urJDKeu-F3pcHwd(Q9)XC~c{^4YWBc02H0+b%VZvj2^Er?jfz)2BRd>EqX}`7apML*zs8dSs z!DpN`e?hmp`$oNeUEqqZ=YR6vYcCD@#NF=vYwJ?~+V1D2fALQ4;rnpK&qF^6UN+(m z?~CU?wQ|IZ6VhI}spiqtk56VHIkTR>WBEI`56*tS=NGm2WsLdP!Z9_If0F&+7d2Bp z|6iXwD&O7pw>MvF``)@0zr$OGfBN;#X}|O)ufO;1+?#{16y9`T&P&0q+h3@g;B~w| zXX~X;oLB#CH;?_IEj>T{%`cv~YueZM7JTu|&P6|Vv>$ZOIUnEEhw*8)>wb6H=-KBl z{?o|&|8LCnyWhTQ@ZJAj7kv4f7jFBa*MgC|i#M#f;UDe)^X2k)HavgH*f+L5c6H^r zv+nvsMf#r3-LE*^x5|Clr-N^D=3Q{_FHYIjW%%6Dr*B&Iue|=ho6~P;#s@cq)~>7_ z)$Pd-(^uxbS#f33?$p~0M4YXEzF!yJyvs-K1Ii$5c=_gv-lUHhOyWFF->+-19 z&i0Jf?vyvR_NVO9+IRiC*1lWYHp$((w@E%Vy-o6I*=;(Uc5#~yr&qS=(0zHEj@{R` z>Dc4xHXVEZp-smhebuJZk2;*tsaM|I@}*JEapW7LysgBUh`ftbg4C2*TsU9xV^$M+PE6%NA@dRvGpK6JefW|o zsXG5Zd*1_}Ray3bP}HGQA8;rl=_3xC3OEss6x@)3p!}IK6?MhN_P{3l^SC|0K-5`e zlvpdtW>PLAT}n2SY$@3+G)&ZKWGi`Vz4G?bD{oCBWe_j|7U-nq|t&hwlzHnd-P z_PO^x_kFJWx~}{G|NB8mxSGx{<@QKx30$h-!ux7RTXNnhRoKXT;KL^?nLHcRkS0_@ zC9@{_T)IA897ovdbifsc)zg0*DQCx)+cBL$Dmglq2aG4_v)YbP-WY58;|@0G@y@$3 z^%(=4*^$#x9B*|6iC%3R15_8MK{(zbNh@klP5N)@uAkt+OG6VUe#G zV!EC~t3S(;%pbUf8kT{U@0}6!+pBGePkMbX^a+j?%bGQJhE-X!7&xowI%rv0Q<+!^ zoI7={Ra06M{N0*s&7eP|z+&Jm*k@Tqmdy)pl_(!JKWi$!Sa9LqU!gk~fAgUj>-u^q zN1Qdc;H=7;^0VfHJ0;lPlob0r+zQm0Q0iE&-rLun5b1!~2D2Sz2MpL*GwNb7;@sN0 z>QYn`)2=GAW-Y0~PGP)PRmN&i+!tEYP>vG#UxBhzhFP*XK-S)M2y2e(1Zw~4Kl10y zTCv?OEJFEZ3#47s&!}mAqZPHaOQWS#RkdZMiOSlV=;G4Ks%3StXlWw4xUwo19aB*s zt*WfSOZj+vSjX`5k?^MS@6e9HcChJnb+vUDMXO`gwRI~EX%|Hom6mJgMbKesG_f)s zb3A+G)WyafjH)hOeR;Sf9)!L}&v6AUR?hfC)a8sRKg+|LaaU9ki(YC67i75&W8%>j zrS&>q;CT@vsd7mTUhA;o9MNAtHoB}n7G0>E7uLn>h{$0sc0W4*%|e}ijor@hcKVqr zuN3ySORV>E&~K9VXsIh-YL2z|THc$d%B^u&)sQ{job_FZ62raV{N1X$-nyMTz>~kS zjbsU6-)RZHOMhyiA-^6R&ct67-~6Pq|8*1Oai*GmFhAMpXu@cq!`&BDc{^TPUthTh z1*Rfa8js@eK;5#qU7(P{wRO>&SZSS|(k|B2mpuX9Ct&|U-(t@b_WIij(6Lu2ZE22m zI%2YKJ|$+EE-S!S>Iia__ShTa$+^m#U6z8h^z1}>Eh(5RNURX+1P?@FXmgGXHK757@aons;jOpESfcMZnR)}(e!CW(+f}!#}=a%vuk^)hjY$A z)x}zj)zkQ+(b7fBV~JQ<0(DZN0`3XaVWshSRi$b;R@BudV$noxZ*?vl>l3AQC;^M5 zTr66)cyX+5{Ly`^FO8&ez5dgL$E8)WCAFTVi*dSWAfsIv#%jtBMV$Xrgd;h6dtG$B z=9CNn)=1Y({$Ini6uPZSmYA*$(sI+$gpuAG;E*rLS|-;QS~tHh((d$y3wt3~p{Kvl zy40F&&4cZV-uB&3g0w>m(I1}&e{;}VpY8G+GN2%Hwg}O_w28U1d$T3hk1@5;g;6Wh&ft|Io{Y{k>Amm$Jvs-encW zq2@0Rvc_RKSptdaA3e614_*n3oSC0zD8JgL%xzWS8+(UKq1Ea3j8Lk1K+UrNy3K&8 zLs-}&o(5A1Ih;eA2W~gwo%5q!9og&T%v;cGnwBG@ac6YyH&b`1cT~E#b{SgK-g4EK z;t<43$D3O}&TucrA6qiU0q5nMNB7smhMhijuIP&&p4#DPj^iz})-JbWytG%LXhCVB z^rGnGG4+>3$JEO-LBX=>cxBC!XzijK(QB-aj=MzM&zQk!1$)$V28YMdi=s9kHConI z>*g_4<+tEdnLV%KuGz*$>z6I!OhI%^!`P%^+N+lRg4r3&)p-4Ti?-tjXTH6}p@q$} z!x}9|&@lw8j#r__to!x_y7#PRL8@YdetUeK~SysIW-Av3NlwV}i+8%q!tfJZkqR5$AsrRMg zyxe@`gb6ULeXa%0#T)`hsWPh9=fchLql{wZJ4dmsgP5~9Mq$3Hw*AWp*xN=jRZMDK zALjPfb?&dc4^X$aPKr8j9M`#;NPFI;rZ%C&E^{w>mc=vql6uaiptQPl30TXJM<#SC zD$6PYr*&L2YV0pKap@OV?oq#AZ29p>-3QSz)4zD}AM290zLhOG-ExqNqF8C*T7g3) zvlNb9zMpSh=sTK~zMh_eV7-=VeMaiA7+NdVr^!$M=3zxLWh}v5Ea(2~k)Bepc@%G8S|7G}ue%K)L&+Yw^ zWo6-ATqAhbZ=?ztU`6Jo4;Na8Dq=bB@-}FYnHxTMKeREBoWFEg3zz!_ptM=H_x=sC z!u{#eLi~jBcbFCKPy3G^+Q|KYd%t6#@%B%Aa?Pji`1IP(eD=e>ih8%rN=CQ{e9~nCA zgskBwo;2d*k*AFM(5a_IPal0o_Lwt2oO9OM=ZqaU{@mR2CY(R7y52JbB6` zdHJP_%F1JlmsC{VxU{OerZ#?4U43HN@)Zp$SKUzjv5zk-N&Wri)wkSw+xs5=ey5DOQ#h~pK;mDS(jfid(PZ>g;!oRzv${~u3d25^^%^czyHgnr{8^L^>t;% zSc~D+Wn9Rwis1&c%0!vHmR=T5K2_7d{;poFWKXl$o*&?B73XGFqNf@Q==H|YL*)*r zN_*wX@pT@0xE$Xs#y8pf#uRiQ%!Xa&h1|KA{*vcA#J_*5;ph>z z{h*9+`@hXO7Vg^M91L4JS(&Iuo=>+E+`S)}Z7I*k>RBI0Z^i&?M3!^etIO~v$C%^8 z!iv!{d%l%3Us1$1(~0$7EwCP1N;)|{auDOAL;4!sn>M-7!uy(4_Foy+KwzGdfp;$@&pAa9nU_L3IC43(s^lQKDwl(5^h9HcdK z{u0yr>R$V%$8BwMy)&N0-1M8?OxIfr4i?c7vZlCHEWIa zv7|URbv57LZ@t56tK*+DoLqIP@T9@}6%I$AgG+(;U+-`!u+Uy}szd&C@}WKt!J480 z=^=eLT}L~8bL~UUdFb!%*3Zn7d=FdB*;Xt^8Q`g(Vi?Z(bN{-QDWee9)U2^t`#L9c z>h0EvJprByNmmO8_LJ>8YeiYTZ=Kbb@C4OcGVkxCLU6sswK#X(WyW>#I>LKXZ!NUf z2oJvY`sdI)Y}s+rz^O0H6fmaze;)nAr3l+|CruKl8A|Pbfs-c5 z^|J1ja#yWizU5x}2DH2!Ipv_HsfA$=iu)s0+BFaRS8VegJ9`1=!sxn_Yt}ia!{m&W z9uu=a7bMl&$1=;f`5rD@H=wqBuR`O<3KNF(`upeOLm!s(a>Im6r%~AOIk9%=@|zPX zM_Smhqz?y6TO7vWd+0)uEGtYH((Av%o_XV1zKr4)BP_bNe`rcRXZpPI!h|DSzLN0p zY|VQa9UyPb;dWxS|Mh*C6m>%DNbXx0!-Oxng?Vp6 zmn=7Y*usSCP_=SlQqEuYp$MP16?$*d&cDSy6ybBXOYddq+>*nGjde@-{AsSN@a!*3 zMQi{@Vc~PBzXp8^FSS0`?h{MRT58*LEo-4=mYHjrL*r;L0Uul?lo@HRhjYg)_dm;; zNU#stLwlhk#CUU`g4Mhn0`20}M{3;g+Gu*wu6FL)b&e;gg8_Bw^m!HF<9OK0V=9(%|F1SDZOr#WDI3Fc$ zskvBKrILrIFp_tw==~5YP~Y-I3R{)4ZSMLvZN!BuU!1F^ErGL+-ul^p4+p8uIyI;! z9b?DcwMduxH0u)_Kc`xuu;7n#bxbXJ^qDA*jClJCL&DPKjrFkW6#n!2azd2%wD`*l zn%%doBP^=}H{99}E>r8^y`6mSG2ZXOdxkh$pEKTZ<7}^clkxrq=a) zXBFRX2ZrvSCHr*ZHF&Q|U-PT`o^_sEXIj_Wdl_U;3U6O8wQp|c?I&De56Y45y(wPb ztZ$vC%$CQxl&7CK|G{>Fbt-eQ>}E92Umc3@)k88%T>=;`ge-6F`vAQhq)eOZ%1)U1 z7LecdPY4&sV|5D?6*xy&z7VJWOOtYb4Ni8muU&)`<4)S-o=-9b&ph({sNA+N9e5RN zbHO9|>0f-)x7^!bj{Ls_=}BD^0XayYZJm$sB%oUizGUy%93X30=UI%KAH+?!!8&CA zC*SAb6lwv^!aMu-Ob)zD>Q_(F__US0EwQrQW z7PVu#ewPzs|F_g}hWq&JGUoVOh+Dp z{Hk929Juk9Jb5dCe4S{Im@c#_&%?W4{XaieR*Q4;(<(}9%3{%}_4Tnj`wpxbxKxfu zkL{!1hE9|1E9REfEUl?sQFDoW7#p3<>*j1r^7>3YTGOkc7i*LBI*zu}-9KI~Le7|v z7}Nb&_FH8~9DAhP#l>65*b|(E92Q0D>$+>SZ@7&h*{=(y)g=lREx9TdudPd56rG=_ z<4O2LZLNKg1n&czHBXMfyM6kHSEo_>@G@rP{sh+1+-;TzGa9!kFdZ3Rx(^by`@xcr z%F$mSRa9XR_35DXOL=!VXme7ZR|+!qg~scCx;Weab@-{ju^_HW;N^;Vv>d%-lq0TH$hpf9kLh#G`&ml*qj&0jkvg?4 zlmfOZQS^b5N4p$5vyUg^*i`X1!LI+zx-b(|L>1%x(=dV;^^#9KKz*P|L@ z5Hb(z+SlaapFjO;U-B@^%fRK&zPHT&dg~CTuPIpqliOE@CaBFcTi7u4eQ0AtwCy^* zi9wp4ZW7~N$Jcw+9`{EcV>VTbtlQ)M^Y?F&$DmKn{`44>Q}+9r;^O9xP%Xdj?ezOu zYMgw~cfDC^{L5Fmc3R?zeRAh?9&1a6P>vH10Jl3T@8?Pq^l>Av(|k~RAO zr+OG)hU&o{ij)nQ&#A7gFDtIc z{oJKh?kOB+J%e*!Jlm{)pTzInVRF0-)cg$BKzPeGdvEFH_v-Bag0mjN-y@j?e`deW znm&Q0~lqs^)@C-#a@aJjEz!!un`|L zPQXk3O?CDUX^@O0{9G2Rw3iVUSJl>XPH}PRBHM3uZ8?8xz^W>z2FSZ*@?l}c%6Kif zECvC;S&6kS9=n3zu3H|dg+{ZvWWh4#Fr-ak2Bow%5ddP@JI zM-f^9o>IO<`C$KeF}~AKUW}5X??sl`Em>pc31H6C$^1OWGtO^{P*43N&yVmImQt$II4B82NCxM$tO%4$!w0qLfAB5%!H+tv%_)t z;9F{6vY&f2Qt2GTI{*4I3zM88v2${B*7%VClTSV>DJ# zYQTr`>;7CDV2!HR5V)EuWuNsD`+cci%gWGnKl5s3` z0C!JRqgUYcWX)e*>RG!t!u*E0o^KGF)KcrXs`_eK0@K7M0BYRmq5a%@OA zrdaY*wfyf-$FU1X2AnlmDxTDTnHQ^pyVHZ^&05r+XK7`&Quoy5965hk(`@tUD!=f> znNrrIyqm`1Av;sp!(!f%5e)yc4(I(#>7G>Kk+{(D>2Q$nn4#e=O7?gpP4rxb@}r7tq=19YhaFTsE=DR=h`n$>Ope{oAaAtX4%jh zY5v~yb7qI;+P#vPn%9&TNWz*-GaqH2zh^uPsUjfB_$ zkN+7$T}F~)kEuH?DRo7XZe9G#VRBr` z+Jht2%oRGVQ>UXo#l+jeWSt~g0>dKONcrR{h_o5$eCcs_*zvZGXTNZ>q)Kj*IHpEk zx7l{x!7oxqWOatVxa-*5F~IbgZkHn&KQWzTMnT`0rFHQ`KmGjTynpF(Xv1KJ%P&0r zD`!lD_q%i-`g~x+!;f!ESSLt^M4;c+JPUM7@{F3fG^x&r3{jqAhUL_|f*Jq<_ zlb3Uo15ad~jb5AVG~?=$@Z=mDce-LfFT{xYs4PwkV??QzPf(t(%EodYb;`q9n4dVU8tN zhD=7{=b(O&QsO^0ai~(2p!v&ctU0wcR?)JUb#1KNDymp!&8Vxi=9eZcd@CsyoKpOHWE>|$!1Qv+y?j}fHFen% zYkn+l%_~b-b8DAd1+g*<^vg=?AQ%t))oBa-mvLhXc-Wguz{5VC1U@z~crB~P9un|N z#Q2kXpatJrd9%o0J5x^Y`_ws>RR}X@&bj5~=dQGQmE##3or5RJmz8*^jx}@UMb*_8 z$!Xa6cKu;HW0sTSBzcP9uFp+fi#L78b`g38%M{HFjJzt<`+TIYy@3XH;VJh?@U!rB z?7~}aArp;|7PbtY6LPzYJkCov{>f8hJ8mMM`&t|~(p_%11bm~P7kMDC;dP1FZ$LZPB@1rkLb<0K-1My zVMunL3N85*Dx3p67imzA|0{b#$o(<$$C6GO{zYv!x{%VOMjplAMbM%e|9QGdKV_hn z8%o%d(DSTxm3h?(xC6qx1)_iR)2suzSB>$Lz?z|)P7L=eBwPclhhMIva_@YK|H9$i55W0K*}0c~W?g1B!~UkG{yjyVN`gT=WW|B=r>yz8R#%D`)3uJnE18e^ zdz1dY1}eVH8QF9(=AOGv4ofw{$exVe|G}LtvfIx4#eHkbK!ro!3!$Z@3kzeOV@R&W zu)U9=m%`nG5&|<_m@<;TWj%nW!{3YbVJAQ9H~9r>eZxjj=q#&oSXQJ9X6?hnBH1To zMJixAU~;pvBI{r};l2YH9gc4>Z7`7&vmy;J-7u3*%8JB6Gvbk9k!HL*u_AAb3I1*g zbLu$6AIG}m5L;Zo)-hQH7xyjW<4_jPgR2-XPul(YvYujT8izb4D^c8i#r{@0jzPTi zZUXX{kV2~<9!?+7eM^PbOZX;-^x*ljJ>y*x9CfkHGbMR<$vAR@aho^J)~FA9%wawYhfH(4x(v>JTZ zd+gmQ?G1q>H`@!wnY-LCwRL7qT7_MYj03LCb8S}UXT~Wln5P)Z^l?r}{&L(g#GOuT z?`x5-_-i^11H@PIhQz#1U0GuZ)?23^V}Vcq+Bca&WPacXxC%Wq(M?jD=V3Wo;mJd; zWpR`px25|38wTg8bunHcFg0FTKXvZ>SvKKO_|I>AcrTKEpN=0rpTDvmB9}$412^)ukKe8r75fu z<8eMiU_3e(;pcc9VSX#OvJB>fTPFM=ojSExIvQmY7wu*p3GX z*5_wEap8`HIi>Y_XG8{c)Ny9&GOPX?T=!I-q=ZRxgyDDgv{?m3wQh2g*7*V|(88-_ z>d5bjm`hEPSZ3PH!7Wz!A^1yc8>XiDCNaP}=&q`rrLV2B<51kLuIatZO2zDvpw)3O zKb9!6uaH4PmMy&uQx~N*iI@=boa0biGRFCK-k-6o1{t=tCii@O1EjN#QEvAmb^WjV zzV5oOTyYZ!^2>cK?3JeDK~4et*{b9>ESKotBdkR3Nxm$HeC+nrtiOvakWj3eThzreq7HT=R`jRUo zF8N>j7Hq|woeXEgrq_4a;^;f4+_P|8hhS?YyTiQS%>BgPZ>B$IZO75c?=5tC;Rn5N z(+PifG%3Bp@u(`RE{zM9Bo2(P^y8QQKPQhYQTJSE%FiP(HIx{obFb&Q93)COO1x6=c5v$1O_^ zdL_~1k-TcieQ{U0LT=uBbvjze8ru{iemG{~zAn!H^7g1O^##L~j{nit(U_<9@}@86 zNsbp8`O8^n&Zw}p^SUw5No~Tf4Cmxt8VLp0@ni)o`7V?&p%cB_?YOhEG_^j`{_0(* zV)IhV9$jiZ-u{#GH|M8~a~)64K36mC84Cxq-@xSIpMP{735v7#LqFyY=SI8qIab$? zK`lxD>LGJxiDP5#9O9`=?(|My)989tQ=2ua^mYAP3SE-C{-DMi-@jtlMI-%PB+@ej`- zr-93Ft562n|4g6Pc+0ua@%$UxEdEM^IXjv9jE5Q5lDl;t;|+A)eCMvG9KYT?E;qk( zb==AKsr|C%(RrV3fxb1~adZ3i53m2d)Tu+R$Gc{~hQE+aZ8#ga%5J@-R+L=FUs&XQ z@*+v^Qqc9^sV{k?WjWsw^j2Sh?dr#hNhiNXC-Y4v-ecWdkNI|v$DDaE zDP5c;lQlW+sR*k7*l*^ljCtRD4Z=lUIVr*^Cp=iH^!+M2Y%JMf!_0U{m9Cz2K|_IL zNlpf6$TL8^FBXZ&-^~rb69C0@cQ;#W2KMN6y+#%%L zxvyL5zSo;N?St?6*EJPmnOez6mNqkoxoZO9PHLHj^w&@8Kn&L7Y{Z1@Okggde2#?E z{ldW6kk4P~Vl1Wqb%FlQ`?9uU%5c4szskY)B}gsj99{a{Z}yi~fWs2I$Idv>5Bt}q zyMGT+Q=9xuU-F%^>5haTPU2@^>IFUjsc*^VZwGMop0!B&bMw?f&kqWH8yvAzy5iO@B%58Qp;jQ@Z)Sfen+NB)?k6Oud7D?`wWfw+>|H0?q}xQ;V&_ zl7QAx!r>mt`Q;`jy#3RkCB)nZ$vqCd<3D{Z<}O#_rvat5cL5senPD)`nCm%Z9fI_9 zQs1(7qst;)l5d=1e^hp~EwM{yCF*3BMBXtq0fuvp=})whN_LvEf5IIW9Er*=<(V!* zb3RVIxF7dempzhHA#?os$D@3Af78Fpqi5wD9`g|&x|U_ngR}OsmMSLHD{J>EMjz4hPfxH8* zzWE>okNYdQk3pWk`K2H7NPfIyfPKAkh2Hz!u_yCu?DZ>hI$ZWamiv3MfBJIx3y&au znkEaK{-5t$xNUiVp0Dwvn##en{vER3w+Z>ZuiQ?b@^R<}wm#w<30s$1FX%! z8dqWQZ~L9l3~V}-L8{E*r%wU)-ORni67S;E(T#7CF6Mj=+e>rDf@wEf5RM2&r@W^w zSBdE_|MRRf?7LuQKvp!xiphCr@HR|&214GI7_Co*Nwo%Y-WgZ&+D-cz2zm1Z7^PbHZZf()ydHzBX?^AMq4p$GGS1e@q+3sDzcjb#$p6 zYYacf;`N|sNtJvmH_Yjqj9DYg+*R^ded>cLE5BEqzVAP<@xeNWXUX^red%K)2NV?u zh1OE{6?5QM;)gSI%yDNaO6CW@uk5$VuXD(+i28@Of8pfFgga=N?o2u6JnoB5A4Zwy z)wGfuQ_Y{1#_iwMRQvC^3$ePk#xsA$oXwqW&iGnJAI$wS|K%Msr7qw7j}N`Wjxi#4 z|B4pr<0O3ev57cz_~k5c@|f|x4ZmnHP~qp2n&{tX&H-?ptsZ4wKVG_VDe2_wCtD8kFlF&nXO-Qr zbX-Ln8O=Jb7PPGBmCpA{rHH(<*5W+0JZ`sfpk_&3f|US49R@EQTL|t(pq_I7t9!)h zM^C<-Uy(CUnzQK3GAeqFLw?aCa@~G1KAfi=#lbNpj2_;`PsO%tecAt<4lm)>nRQ*I$nt?a;9QLXOVkl~;rHO#OJj$*=bE zoJABoxKi!qmaG%gMe0(nGqSI>5{9EUw(6WObw6I2%aE(|ll)D`da_)mhz=(;rC;W+ zRH^T#NmWYlI}a{i>?byWH)pch|K!ZS^SEj2?bg;j-^?8*ayPP^7t|%$U5YL6H0fA+ z7!v7eNso&$>^xrjbUM0elXYaClA0-14P@avS3q>_!*f;aSC}ESpdU-{3WS8?TqhqV zyEBDqk?QR6J0;kUt_FEY+_?(rJbLdXPwulH&zg%|SwpOXbgil5gJVygGGLp}T9{>@ zX~|r}`h@FX&f}$}zU0YY)lNqz^&4jeoyW_IeQEZHn4?T?esoOxQj{jYa_FV!2`*_5 zb&DixXdLzMH@xX;K3@NFc8(>O>F7Mkbevmc*{iZgQbF``Zx8dbq<6ablXiwRIaAUp z`(7PbYd6>-a`G89PNtJn&fK}HA1@7agw(;Tt+?9mJYHJKL2NY~DnA-(FTC`v5Xrj9 zxKQ7|;rE?6o2!nsh;PXOW?kx)%Q%zr;M{q^ka+1hN6uDt6{y)tIw2t~%P+@@QbyQ@ zbCsU4Y_{ay@~>M*vrcxmtrDj!p;DJP^_lJyXg$iH8S|p$NJEdgiYtxTzFS*Z_Yvk-XnY9JodEztK-AO;53}-IW=~oXK zyitU|tj;H>-8H|n4<@0vy&8U5r?Ewn{48Hh-V$olZ*tqs8{7QbZjNx7cFZ5-#8_Bj z*A~@U6mpbFBefTOI3-y~*U!j`aF@!}ux>KmcNp*c)%#S?jJPZ-G8bzVm*Raa-syK5 z-V5-4y?wg~?krL7v*2Eg_i1pSkN3Di(`>kJGwAm!_ae||&vazX#JkoruHLE7I`uvq z?``Ux`fOM4)N`MDr#@M;gwN%8pRC@oebHK=-l^w0^-dkOtM|+BzFWOBt_EN3=o7{J z4D3mvtOE5;9jeqjb!%4d*pY~zA@YxJ~ zuSSSy--h?gkg|-Mop@(CW4!LM->*l=Eo;9)6Df4)C*qyunCUqa?=!6{@SA9sRbsne zk1vQb<9!X@HUAC9`)0fsLIb8@C*B$NSKz%H@7F_1dw%}PtjHBApN_)2cAspxFTi^d z@+tEj(@KYH4czs6E8cb3nTGluUJmLx3BCq$-hzEtu5#&}g3idBduW_9r9tx<42*jn zCoJdWXz)AV!ZVHY&_duAHyE~=a=YbhL&v#j!PvLs9P+`OIO&Uwu{ zkDs%9`K;s!K1i3@cF$&seQzJzYNo?VlvtSqEQF2uWjgxS?#C}Z`xm-{P2v7YO-^&> z7&8Y--ju!#b#$j_I_iN;FP%;tjj$93rO;(|9bkq-m!uhXnpWF4zHxO+)|=d^tIrQ| z{=_*~-oKds=Sg3u2Gnulm#)cF1C^drQQ8VsgwHeHGc!kK9u>I|d)~(lK74RyB$DwV zUR{xLuX68N%L@F)Q*HfXUUJ}_Y1ch&jsWC$9q2OI?w50JRbYpe zxe8r?(l8x<{h$7~TY5c;dpl%w$vp-^ZIioQVyh;6Cvw&H^;lNSA6M@;l5x}v)lYtX~BY~5FrvM9pqkyx49|9Hu zPX!hOPXm?%qrfWQ>A(bVG?4wYGk|M=*}!$cF~Ie}Gl3g`9|mp&vgOyAous}1bzg#3pfe52gprTdx6||wI7%V9E>v~`M^xzRA3g6W0p}s z_HVO+?1zp8vX46v$o}eNAjg3PK=xT@1DVD}K=wn6fvhjefgD>@0eJ&V0?4sRBQOSB z2ju3nX5b)XfDORIfSZ7a1GfMN1GfW@0PX}H3ETrb3b-Gb0nEhtmm$DWz+-@8ftkR` zz+-{4fyV)hfyV=@fXr~KfkT1ofWv?rfF}Sq0keQxfWv{?fhPiY0!IM%08a+)2aW`0 zRwF+EM*&9x#{xeDoD4h_I2(8xuoxHxRsl~3t_F?S>fyeo&ekh%mVHOo(LR#6Ve@+ z1!Rkt3mgl~2VM*;23`WJ0!{<21}+6Q0|%j^Y6T7kwgZm>ZUYVhb^(tD?gnN8_W?%& zGwQ$>m#I2gDC zcoc9Ka0qZO@Mz%RdiV!s0Y?I}ffobwfrC&n76OL=OMpiM)jQOm|?$GPnar00&KkeBcn^B)S7<(tQ%-(+;el zeKO?J4qQunKIGF5Y$X;zK5-`G6K6v{u@LfsgI7a7a3nBext!s%K6u`<7+~AOxjeR+ z$P!irX>b#eeH1DYg}n=y3;Z=OANUxs5ZD4N0e&7B2fhq!1pWfp1bh|P0{j-R4fq3K z2XHH}6Sx!D4P=|!1KbX@Rt$^$2oM2o1G0^0A0P_*eZa}UrNA|CXP;sL>}9~!(3gFy z3fPh5tOnpMz_q~d1KG!7pKBxRoZs32`(WT^*x9yk1%8^};m$tT4%m@p?YoQY=?i25ABQ~~_y~|~I{Ok6VZRf|KHE{i0@&GS*aCY7un6{V0Ly_d0u#VZ zz%{_(WMA(iz%1C=N81U$nZRt=+1F!Vl6}sJuqS|%VMkSO6~O)-U=fggJ@&zm1(w4; z54Z(%Ilu($Hxgk#4Y&sOQXu>4#{t*Fjw;gbvmX!K2>X|Sn}JsX_k)fFbSvyv0om6b z2iyUB9guz7^XLwH18_F%7XkOe{t12u{ZJtLqTvBJ9`D9roeC0@$ww76F@q<-m2o1n_>~8el7MEa*=Ju7`aAa3bs{0XM>a z9k3YkCIdIa{wd&A;6uP2z~#VQzzx6x_&XW67xo)~>tG)Z9DM7rNI5VI_%tvZ_!Hnn zU>mRi*bXcLz5px-{uDSH{zn26uonZ_mc9X81N)DGEx;cFw*Vgmb^-4N7Qx>sz`d}4 z1vvP&VUdpkvk;E+iLkE%a?Fws%!d85z{#*r0#1az5y-L7M~SfC4lD-WQNSYDKMpJh z))3+TAz%Xbg}`k1y8yTb_SL}E_#OqWhkX&S3ieZh8(}X2jspEe;AYsr2J8ghOgrd4 z4BP{IC2&8m7MR&6W9(7D|Ac)kun9OB_;uiH;CF$=z=wfVz!|{Rz&P-O=e>=A{?AWw zCkW?ac-trUESF;ziF+PpU4kdRIrk(t7jP#$BILQ<{_3P-f-+OxBM~NzQ^z&W z8K%Dlr!V(@nWfM?`KC_;aIRk8*=o|JzxB(cbaU5Ns?|E|W`sB(ScNB3iR{AsY)YqMM+*in5cPwA&)6PFXo8dg$6Ee4M?$Gr;+|*s4 zVwJT>{yI`{c>7u(x$iaLiV1g*abK6dUr=^OawlDI{i;`qWv3hW-Z{5;c*8RxFg#2< zS)-1sGy48F0PDL69Zfm%lV>2~Lt@8~5*#01AMW_jIy$It#OldAf3Ub}bZF%5z)@Zo z+urDP?O*tvbvEV(*|`}@n-7>4nvS~UAP0n5;qsP$zy5~){hBEHVBAs2TiJPTlKnHD z5$B2-cYgB*2$n|fPUoqLD*HS_8IW#r8kBb`@`M9GOu$jK5SZi@Qc;80D7iF$fJym9E!K?FKF%@a!m0 zOD;{D58U;x<45b%_w@BohyI0&<Qg%8u7L^@&A^*YhI# zNb&hgHNv$K4!8AU!~KOP6#P7I!Q;bDJMT}YO`$hF!q@pPuKK^zAJ8st%$+87jXej% z-gDa^`^CZkd+E#1Wqsy?{3*AeRX*hIjE<|q5*1^OPI>prag&a?1mXG36JNdd&b%XX z|Mrg|OD9dS8t?hdqw)25ANt)FG8^`P6yGoT-1uLAC2wTB=4-EDnb%PuK^CS5FY~zRT-kkU6Z!UUq)7EpL?;k#1f5a1c_uumM zGhY75N#J++T`QJ;KW|k{%dp*tkAnYQbB}qgJ?|5<=WhQm3*pJn9=-YeC-W}2cFDx} zTNlFrLq$(~>8ZS*&Rw4U@#D^#Vs-!FurvQ>OWq4FjQ_-0ue>?gYN>i=^QBMc{b9~s ze?I=d#z6j!j~#K>kMbT`@%;zB`MI-k<-z1<@2l>}oBr3|{qe5bCon!YU2^O*d5`vd z@`dT2J#~uJnHZke{!HGE19!i5@-c&8pLfJRuKaOc$BLZ%A)Ed&+3MaqD)-$V=S?je zdF)UBk~_sJTzPza{ZI1B>qf53`vdY@%jWrsv$p0;HE$dUjO{qCd@hu_%90Yjg_ajXLn9%|Fe1_WUnYj2(pVwY;?WfxK;b_n-0UJDzzi zI>qX_CiA%M+wy+f^77X=zk&Gb{O>>g_PXcu{;T`Is>7n$(C5|5PW!|2dC}~*tByM# z`6K`EJ2%$+Ebq1(&iTQnH_wOvtDgP7^+I0#!{xIp_d;I$|5pEg?F)HzEe)g3IDq)d zAOGYVM{dts{llwY9R331uWH9vzpy>8Zqx7A&v@dvDOS@7rGFdxV%{!M*hQHqPO5Sge%RFQJf)7uzW?nk)xHDhP`@hpR=0t8C4t_%) zT(s!bykRG2jvv`JY>L%2t>dQVSMyeWEHa%MaU0N zJ@k0y&+{g9J#q5AUqpHKtG|r;&#n}%RP~|4p54E;>kp0Hjbhi>ahljQwmkhSn_gq% z$HcC&@NltfjDD-jrq|egwb(W09QdXEU1Q02#ICVyu*FxNol5H8z~2{40#V@v4MJVfS~%uCeP@v1^<;SL_&If(IO$%oYmC&3U1NNf*fn;XDRzy` zme@6RZ$^E9M`L5H*fmDa7Q4odT`$@68cXgMyGHAJv1@EPMeG`LUwhH^ud(CHV%J!B zo!B*Yj}*Jck~g;7{x$Y&6uZWFwb(UU=Zalp3d%;_;jsp1Ar#x@p4k(LT;F(n zWFgF3|7&kT@Qtya+r(M-X=&?LZc+K<{@*B8-oMy*K;C&bV~2XTU2K}4y*=wDn78Os za_Ixd!f>hIey;oTz8{}f^UXmDZ>QsFhiCM2ye_lJ{57OXT-P`Ww}|qMvnVmxK4OoD zMZWhx$5(Q?i=!Ypufw@m-g0O@GG=yvr{5g=Z#n#OB{OQBjUE4-&EovDoO$LAX?5U8 z7oKY8Jqx_mDr(&d$_5zzO;Q*%6V|_Rs(Zd5%&Z2(t?3vaq2^^U&Wn|LZ)q}P)5@pK zZ;py{1If3@rCRmu?>vu_Z=BSZwC4>R5Rt)-s9< zVvCk7DK0IGEmSV!zjAr#n44*Go_{?t2jgTzUeLegnJ zCSR}L5g_7rn#s$CM+%i+?T_x|%B=yo0j2|HmvW;YhK-LY!{lRzk96c&2xErNOh-+V zkC#;GXwrDok?BksYoJ^7tM2?s_le4FCeRxm`tb{omrqp5*be$Nh79^00@JMAwgSEJ zw%bQ8yjbK#-T9btY4X?lF=0&_uYNWY{2Q@+cqIF4?l@pxo21+dfI7dB)~_si{g=Q$ zs;zRLf#sK??;o_1$ku2F7HKwamN)-Nu-{xzRMl-2D%yt|d#9)mY&{djx* zYu@=QhDUN*+&M&cU-RA#`rHSdxS_k9|CL)IP`6*C_2cdJuX#^eh5YZsyG6NeGI*2L zkGI#q=A8-p-5%adul>p`^P#MW$)EIoWy{M$^DhSdOz_ZlBKa39w<-^R();oE^3eR& zfWFm-{}$!8-NT>se*C>WH2+PY&uC57f0S|?3pDFy();oE^3eQufWE@RpZ-@Xx3xf> zZ%FHxwqF05w{`RI$W{+;#(kG^+YK~zC%vEUULKl%Ht4gz<-`qjV_i5&xy=T8>jV1n zs}D>*nm=(i=-2wl*r43nd}Pp%pA3_aDWd`OdwgVA4@=mxfZlM>kDm;ak11m(=nEA; zx-+iW#*{0!Mxb9=$)aCB zStdVIRtM;-JhJG&QMs)Ldh;Ls_~k#7k11m}=sSI6>{4#~d}Pp%pA3_aDI@ci;gN~o zcE=gRF;lq}1HIv(A3qr;A5%sy=$n0HY*KC=J~HUXPln0Il+g_O{XQ}xk4o6Gf!=V? zkDm;ak14~tb$Fyi@uR!0I}^%nt&a@)@snZlF=ga{eyfj+F6FkzM+W`)$uRktG73ST z^Bs4Z+vQ)mEdcuEU-F<|zj9*oGi5b^e!WK){kJN&EkJL&(2rkuOg^TJZqV=Zk&)RZ zVT=O3GU&%ohRMg2G4rEx1LKP})NeaxNi48ug_Rs>APi~jw>VDi+mh@GHs^2nqAjmoV9=vTjJ zzkYFH@*|yoCN-k`dt}jni3(WBf3Kb{;u`tg%t^3nW>RiMuYAMK{YQKZ}|d}Pp%pA3_a z=0{u)`i(v^+LhaO9~t!HC&T1p%4i3D#%6aonD0g@w@JWM^&9>AoykBmLq?R&{G=*Lfn$;Xtj3G|b}N4x3ztx&nef$L#X z)o=9gS2vhEyFlX?x9x^p%GdSVcIBQ{M=hfT_wX{rbhF$G+M0*)R3_6$IZh@jx5)}gr~R0Gy?!;#F3>l4_)_O}%B>lw zd6U*pXRm+F+xj%-zkPV`R&IL@-lX;8?e(vDj{<$}58d%Wy$h6EAyDg0T0h=i|C;w? z(6961-J;w!8N5mB$J^^)^DY7XZXe$Jm0QNsj^3p8daHkfXhNcm7JA0`gd z0@Dd&#o!;N0;UC~6UJH$H<(*tDwYhj&Z`(|ji?-IJq~l@jYF+(!MqK#plYbK7N!lR z2WC?BP^$#yewg3FjHrP;m^e%eOec(0JJgyAb34p7n0+ugaqxm!3)2p>8)n2!L#>%G z4KS@R@50Qk8)`iSvmYk69=gFa!)$};fyqgL56nX_yJ1Ew0}q%uObbjWjI|toVM<_{ zU^-xWU~*OrwF+SxVcKB2VXkigf0!;9YbE@_RKPUDY=f~@!40MarU|A4rUxc^GkC!? z!nDD3!$ejiE@0v?Eij!h)-CW4Qv%Zh(+v~76?T{=m=2f|ZySpHJ%?I5V6q#*7p58J z4Vc{95kD}kFkLVipFkSGl)yB>bink$L_Z0CFpV&6Fx@bbHP8np4$}hD1vBDP@C(xd z(+OkU0U0nQFwHO>F#BMpei~^7(+<-Eld~55VH#mxfr)$udcm~Abi<7JEM&pNVOn9V zJBL~q!^B}8huIAiSqB=Jn_-@W*#~pZT|=!KVAjI4!*s($J_kCO2ADRO-7qj_XNTP(*)BA6Zt;!8cYLBE6h7Ei`$1< zc|RCxo%ST$VOn7-pMu!}KQPu0!3U-UrU|A4W*^L?r$G41rB18!tu^9Tz}Crs|o@C~LJW*f{tn4A~D3uY}$JIrpF z5!)djrU9lErVHkT7ZG>7+qHA+G z=(^*$!E4Vs;Ul~u91rPVQeq~9AP7oYK#HNBxSk;LVySYlaSO)L$YUVi_cFNd9D&8aM_tF5nH zoEVSTFRZIwURfTivre!EjjS)6_wr{xaoOYDJ9j@nc=?n6o-vdhYCZ5y{_=s#zflal zILV55&A(CbKM3jvF_1O}W}tj{OS9pT6i6Epzzp93Z~=R9ZcsIct#p z`$O9Peb^Zu+BNF9)JXlgzE|{Gmc8cH4AlOKq+{ICaLtVN0)s}oO*Gs633$%fDZrJjm9A zJg5h8HRRa3A`OMg`A-?tvjsGyUFXqB>!N*x)oGyVsDFnMcO_i|6L*I~&mKe1j9;bK zli_Mpd88f4`0fDebeR<3pXm}d43rgxZuFC*bYvdc7(xd9_9(rmV|Rd`zUb6Z@6;`m zejOZNO$L2M2>KF(zBzzCtlsY@9e-M4-Rr62iD?ySkaQjaWO|(eWLl30vb=v3$hxxt z$a-!b5YYR)U*V(fozR8ysrSsCsl!QS-%mZe6ONue0eUiACAUc&F9p(0r2b5g=zpXS zXJ5if-qE8_W&8buK_8y4M;tnQtrhUWe_1LBCMC$P;AocjGvJ**vM1|-P0n$!nM4SR-9y(LmiPY~pAe^mIAoZ&RQojU{ z`rW2*J&^H#Kal!83?%>WDLaw(S#$uY-wVo4Q-py`S**5gToj9FDHDBc(=n0G}!cxJLzV}(S=z9H-d_6m zE8YfLZoUo}@Oztr(;?%3oOBq0cg9~1&|s644!K6XRN*gfxx-0^<`DF`bq@Wu z0Q!6_5O~>LhuQj5Hv1*Seeln`(9|e>7&!H|L5zF$TSmPp;m!c^yMA;Sw4Hpq4c*E; z^qNll%hwLTHcULs?u*ec!$i8h@JpQwZ9O@;%V}Zibic`Nqe&w zOe1TJk`)h-6*m0u7ahYHH`>;!9(Ua7sM2xxe(Kp`=$Z9adOaDge1pCq1bthrdS?7OIZy5d5AyF(I%-;?)^Wt!D*pq` z?>gRuTzUdC&OFi1ueD70gzL%)O9r?36yk5O%Cy&T7 zr!P_z;D_{upOSvY0w85EE!PD2)3Q3(II=nd{MfoF8H~%G5cEB0qv-E%K>9fx@j*OJ z#S7cy=-zPg(xLiO+koWJsql3m!%bdQA$c_#>DnIPhx+FmX|g*6y#<}1j&%%>{)svt zjQC4%cu7nDsUFUC@yWOU%fIz^1o!vWK(@{!>+#Nb-00DVZu-gBFTfYSJID?bzcY^! zcfl{ihgbV)s&@LkI=mV0h@8D?N>&NbVCU*f(4Bmu z@Xz-gAj6Ui)H-kR_$M77Gj7NuQsa~#>s_}@@!|N%*ABqneLi`wgZ@kzwm#se(<&eD zbSw18F!dp==HZ7r&xEC8_)3g=wc8_G%g{Q6spVmL~|0FF(0W}Yzjz_-d^PhS)Z3*UI3|^Xl zmEylTB>&8(g86ST_-|MIcZTG@=SRW(NBz~&e=Ob^7n6ZH4v4AZXLWlp|J4Tnb&CIn zH2f)V?kvle-=pZ5_pHBVMWQf#<-XNVK$F+wSPjmS3eq!(U3r}&r^NwWi_cybh??+xC@4F})55v6I zqXX{(H+eA3FPtgu^WSU(FWZvW)LDqgJ?#M$wsnYiBvk$j<@H=%OE&vZ( z&RUV9c@VXn)u175g-4z#N7EBiJqJ@~##Q(mRQMas@c%tH{0v*S;;~!#W!M*l^xLNV zFs$nX{4l;!g`MtZ__?kY`A2H~sdwjRB~7}3l-~`c?z@3Z{~m?=fUw$6Uv$uZ{7~yk zJtE*wzSN;Pjn3pl`WAzJTL}6#mG_~T?-MOwC2LgJZuxUftxpz9@$+V=7=w+l{ zD2q>6zND?g5lUi%;>qx=#k;N-`H^==lZJW_StqTjaO$;p=gIpP#e;FtiT56ZkL?e4 z2@_2|*DQ4S@E&RJ_p6Qi_nWFN%^oCllrstMUOBwa*~{k}CpmJi&6oEogHNLmAKu&S z<@3OG4xgrL<$bfkXB*!=bvo~7_VTGW+OgL@Dtz`UK1_qm!<;mrU*5y)<*~oo(PhgL zdC!MG(lKs|`0mk#_br=zXxVqV_+`4p*E#ttp?HzreEOQt!sbWHFTBf7xdH z_TdsXQ&+xgeM#SAgs&(BeYa8W)`XyM0X=25Dt}DN%>n*MPu*Ie8{b=%j`Z6T(r^58 zPP~mB92^ggM!XdV(Dx<%+6=y%2Z(PzBSk%@-FmodU;7-`8F&1wQKz>?>d$(4>=AO8 zQyi$+*+4qRH4V!R?V}7D?Ure{fy93L6gOXR(x}si7a3}u8J2F)6L%|r)XzH7tvj9g zXn%aCPHcZl($JD`^ozp(9EBGuoT_j(ko@?NzGJ=Ew*e`G`ZT4HVS7}5bDPBP#X#~R zk_Y2Qs~4*$I&=nD<{?2PnrV(Vkj7lojYApAPKYeLXB8T>bgpf5q*W?WSmd3;xZ zKOMJ?Dlgp$WP04K@M|h>+4G-6(#MJB)uVX*P4PG!`jF>wN-ulk4YU*)UB;ucs!->Ifbt%+^O)t z6~3+T?+P=NE+;5FRpD6*Cjw2q_)fWn&pYL9ZyFtY>F;;wvolkNNz<1+ByyJmDUYc0 zPEmk=%_C~aY!2{484)G(6eW|WWo`@buVqGBoN#6y8yrsSTN2J=fYgDgWlj$8uVr={ z;cN`>Lm6$YBJ(LA?L;lJEx^B)S@Ja}oO=WOkT?CMddx97S_c!K48H3@>SksUF={*Vxd)H=qWc62NV@Ix7G z27Mxcp1N?2cv~7e^330?^jCNdkY(WGK<1yt3U2~3KduC_U%N)(=M_E%B>fg3&)NM( z*{$!%xw_FnelGy>Jm5TKzZS?0x=3NQ!p{TYob*uV9wTj6k4zueq|Y_ljZGowyH(o0 zsnV9H({^Woe=1Cw9nVUel&`#BGpNTUWYyrhJJ%XzcGNGdbkwySp3?Rn`Z^LEBhf=r+?;$q+J;WG}(LGm8cp= zoTJ7OMDk$T6np$?K3*OXqaAMv@WZ(6d_>adbs+6TEweMgKXss=ZXKS)cX&kg9f(@TM1X(FC#}}Q5B<`(eSUBncSAOLvyAuP-A;?s+~N18PySXX zZ{~YwwQkyv9k&>xQ3l=OA?RBS{w*Qs8x8)QVd&ME!PYVA4y&L3P4_wa=Z2u~G3ZM| z(8rBFNmB@V%Vw*NuthsJpuk1A56m%qaB)fdippcZ|29fY3RtatwYM| zQ$VK0PZYkS++PDyJ|EKe7=4KLG`ux^?vI>w+Z}>FZqSbyoj#1V{s#Tb5cIhSk1hud zA?V`a-X&CS1I9V!o3) zybdI*fGIlo>VJ=UpM_+f+VyO63Eh&Ieg%28Wll2x7{|uYJy* z7u-HKLN<9bk2K+(@z~{|*e#>|>GsfSI_-z_jrU7f=@$8L`mju{DBZTIQ`Ka|;G=(s5aeUH-dZ%Rj^)^TTmf30KB51n|4 zo)sJ~xkkHO7(h>5IJV!IhR%*_%r_HnP`DV#GEf6#{#mZ@b|CZPXMh~ruUB}#!e@Y_ z-wx#1{*THYd0fW!6M+0)1mxI$p|URlGK1DByhY*tKsYBo)V0G%+XZI_$D3ue8*4+* zH>t7xeQIn^)M?uu;GYUp$EX^g=NRMj{UQB!qF+uPU8;Z1^q6!``fyS%b>!H-ISnoO zc4ACT`YwfUDEuRkY4i@z9@_(%=0~bA{!oRZ6n~Jui8q70C9h4aof74rE^JP`C{UtNpxRVaiwX37>Bs?ApiqL)aM}e$%Mi zevQ1jB1%*Ys~Fiu#Gq^{NJIogl&EYXAj%>rU{nMYgzr~9GcYr(?|uHy`@VOW zb8c$7tGcSX>ej7$fA`jecDAWG+a#&0&1?60p0rEqC~#{tjPZO&SKnOyw932b;+YRn zKH7?JwW;6 z;0;pG87Ger88h=f&yn(Etje8ya@ENvBz5u0t_Q3m(`k#6ISAtK|9&Mq9sS*el(a?q ztKa82SAR?0#wPzh&ye>EbF*hwK0x{7ZgTL@1C%dYc5AKzh5NsIrdxUW0m@Ua-l~82 z1C%dtD?j%E%9psk@2&?ZU+mWZD-TdU%&mM&@&4lz=GOmy4^Y0;t^D-+lqbAK&e9#Z zM>)bX@kI{)9FCOmbS6^5qxne5zEXgc?Df-;65X^ADJe(ple2W>8p+L%tKAss?(a|9 zEptA1$XVZUq@>+5NJ+cpNJ+a_kXkx1c$>6K?vr*YT$9B0A?>=p-zjzJ)&G@pe` zOGi6ZkdpChij>?Z*JPZ@H4^JX?nfVVT=zpt%Eu!mZIQC)?$MT`28W!D-+k*nXyxwX zN1h>VhPl0W`~#FPaQ69m=ev;9)yKm7Jnw3=(5;XA?(+=kW2RdlebxKFQ<<}m-#Pn8 zQdb}O`#kUJW9a@{$gG@iGU${NhY6AtmedI#R+D z{$DxLN01VJtc%pLmz-%kXWA1fDL)7)!Br+WuZxkAbFAB(*C&w@T;*5i^<|`lK`VUi zNUJ*2c1Usiwh!rZsoUI^X!oD1Vz;?H{s84e_d42s5-Dkqq^`LQ*6-aO=`eYwpNu?NnL$hd7tOWbN`(=?!5K>b6hj*)*Ls*cQO||QqrdD z<2^r=b8VCRIbLPGpRvZuP4+K+fbz6k{reuEe6d^ozU@8xey9GFILF?4*9RzH;KmzC z4^W=^!ZFu@NXfhr`8oSO&yjwTv5I%{$w()kkkrK|We->f?IxRQcDVm|P)@xn(5X+6 z{zlyAIahy6+{UKhKF?UZ;2aY&_9YKczSyn&@%xm&js{4-_Bd15^`gZA7C*bL%iQue zF9`_#3`CxD;H?_Gb`I?w!lZqJkFmaq5BcW*y!V?gjc5GhAKwH|l; z&cexX$Gj1_c?I9ye{X}7%be=SM^n~26Fp^gvg29Tdu(>=$MUTK!S92}vvM{Lg`o@_z&%b$)j*?>-JoY6k|t33AVOALovK zfx!tNk{?F?I6reL2i|udyAp9r#szkC$hbO4U3HMuUB(Z}?TueDC_>uY2Yn@|wT#6{>p7pLhFF0iOBZ^>3}=neW}dEj2y!y`Ntm;+gOL z{5!Qh^NZd3|I1H7!M}mXIJ(Bi`~Bwq?#OqI?>e{V$#a)ac|Pwg4_Ekkw(l-)t#qvV$zgzuszNhziY8UR^pZQER zkMZ<=pAXvIJO6L`-uVNZ`L6dZc*n6PxaP0&Q;z4!J9O=G>$|Ib=0wl(Ct`1vIp6!% zcUOJh^K~)ZQN~r@6fb_bG14=?)GL36-I4FA-+O$Q4!wK+oM)>A?*x%|L$x=`oH`7V z=fO{T%6L+Sd|a~L)t)x9J=-hs>hGoxJoCNR#}7xU1-t6*cGOXp)a$zEUA|J8 zXMNuMv1;4B^Sgd>@BGU5d49yl_kKR{FVB4M`Pmm-{pR=wA9CocWQ+@=9&G%*$K${l zM}4mG@*WS#E8qM1XYxIt_wMhsmpt>m>t8j+GvE99&p!6d_vRle*n)*_&bN2{2p#c| z2kv?r;gc#g9r@(@=^D4byT-%2y~(-vuCITlXTG<*+mz~=@7>>3&)+-$%*=b|cb#?b z{B`%qKRor`&p$QIGk?3+dhPlCz4KrC*fZZ-K26{5neRP*6Ta}w_vV+RFFo_U$M+3C zhrQ^UU+?E50`8rEs;XyxiQD@(tM^E76o~NB!_UJJcsK$NN8sTIJRE_CBk*tp9*)4n z5qLNP4@cnP2>kyu0?(}P+lTbF$&gwWjzw@5LUnN602B(EKZv4Or15hULAXP1fN8-b=2zl*VU%y-GYgp*QFlUK9qMp#d(%5P&}`x_FmW4C3)A|Kjj{6 zA%e*3`pV5~$MfF#g}P^*VW#Ib8|Ha^>*~S!^Pg#dZQZRA-A{*oNP3ey*MWWGYXP}- zeMtYjiR8KWyVssO|KAHz?ybUeLzr-Ns;aOZV2Qu0hM=l$N!v@cRpe}52ZI~7FgNdtv~ zGC>VMSs>C^@*bpo0f_W@k~5u*l;l4HBKcE5q@I^Rtw4*M*KZ&t{aXqm?X3WjavMRU ze_w(~{y`AQuY*A$*SNE;!&g0u!w>P(H`#z+E@Rzn($l#G2Hq=dghk&@1}L`wLUM%oamjFj-2jx-c$ z7*aBh5lG1#MIj{%CzlCep`|79wqm zbT-mvNarGLjy)pK*K?)piEE>C?7NqQ~;U@nhPoh zk@71+C7?~9QqUgIA<#)sIp`wj3dk4Er3N79{7^0Nod<=1qCovXNuW&7IM7VcLQn~4 z7w9;s926K-Gq@%w6x13dgCaoDph2MFpd3&EXeMYbXf}MG#khcE zP&8;bC=-+qDg>2+8l*n@U*M1jm|@5l*EqOR@|62`_gY$x@bqW?-(I`wzA5i;BXoI< z;PMqUf(wUvw&g1OplMi2t>821jyl5c^N?#@x{4K0l`Fe+O4mIyCRG}sO-`-h%1Iq7Rd~$I;>eS*h ziwEAl{t0hbPxQpb)bsF=!=Y5%;Sq<~+sl7*=-BbUD2kcj>e+2Y{=+xmAivAU(QxQp zKmXy5{l8s(!qCJdd-Aa1DI-Rvrln_Oj>^i;$;}&`KW40>-|ahuM|6zr)VWL7r=q%b z?-AXzSMQiUv3>jXAMpS7d;O2~?k-G-+m0^Xl?_Ax$GZHlHvEvG{;R`D_EfTOG{l1{ zh}eXqK}Dc-pl?9GgNS0$4%7{l3UdFrp4V`btjv7S9MF2uKF}YaNAL^{>JCctdLG%< zCpBXjL%S}J+K55p_Ho6NxZQgA^*=BI^y?12w5_duY*uc1PD+|R&YqQ(krkGmlN1(q zvqkrE_WVS9W)6X2?_MT3Atg08%N~}JksUWQA=~a%lya{xdrWqYJ?)OodX$UnefNUy z^$kr(ic3t$&T((kJ^xO9a?iIljq8$;Jv6Mddj%K?&oX$cl*BmH6&BIQ)--W=LRMT( zRzgY+t{u;LJ$>irvvacS328%flOMR2JJ*xqsOY~?%bn}V_?POzxL9xYU+U0Z#uzoF zqz}8t7{%I}CZwijBqrp5ZzICku-k_Ij(luu>YPJI1NZLmf1wT1*qwOg-)zRc{|O1aj< z9p}K3HCU}V_F)-WV?5{0t-aW|PWE(r78cyS9`G7>vWhJxyw5`(?ewxI$0cS!65iqE zyy~|#P0vk>%goIQivV{x+X9=$rR3PN9K3ih$>902H%G^tchE*=Zh9gbxzhvgeTUq- z+552Ah=jC+VfGkIQ&>v+h}^6cdv=)9pB4sY2)pwlxqE$GNF`(bZ|Wm**;=PwFXG;2 zN_t*GY6{9_4a-flr+dh7GDPlWp+mSB!lOoyGWPUgIm7S2w`Anz#APJMWhJB!^JIFj zHZ$_xTuW8l(ft{u3-0a zi5W@u#JsyOuh+Xc_;(oO0^wih4)U+_ud_#C5fOdjx(&_F!BWq;o%!6~0lTT=EyCjZ z-s_<|Khx=6k9hD8+96U5t$0q3SG`u5PM$^F>*p5?4@ausb#)83`M$KT@O|HQC*@q^XQe_~j@+HtM7PIp;uoxE0?Q(D|_ zv4P7y$JwP%kaq60-2Qv*+}4I;CcQ()B^w@1*cKbC|g z4DoM{;2qj)7-oMn`OCA=J^1V2)nvTar-P3Pf01_Xv_kKR1>7z+t$ohxoe2*+_$%T;`O9;7?p2?+ z==LmolfVA$Vf32&oBZ`}4x>jKL}`mlNl(sjVp#6)Y1tuJSqWn-LpRm35WJ_xyZnP- zUJ>0B((K)#y56Bpf)BZ6dGs~YE7QI0Oz%p)c;CwI4W&9a+r4_v`V&$-+P0YP;h%>i z@IN>L6+XWilJ`Kp7`MF^H5;@Vv>kL9^fTyhP~}f+Q7otfs4FNIlmyBGjRO^dmV-V3 z?ExJFT>w!#YEh4Z8iHDbWKbk%2xu&5E@(BV6m$es4yv%T7F83}78C&*0LlavfM$Z` zf>wb>pkKR??gO0$T?5tGRg0oQk)T1KRM0rk4A3Ib8qj9YF3>U1MUd}jXb;pHB!VJ9 z(V*d=v7nitg`jsqyFfpJE`q4twWxX^9@HH)95fa*6SNSt8uSt9YtU)X2k2i6`usof z$=`OX-HYf8U0RFk>~=4N@CxqT>GP0}9`cckFTU{Wo04P?$4(oQ(JePMC#A!f96L4N zCo&@|Eg`3y1EuLpQO$fhrURi3&q~Q5rwe-9EtHO;7FUe2C*;|0yYJ@{VS(Y^8DCYr z*-A`?t7)n+YA5(rbVdqkg}P2f*xj$I`1Q8uM8Q4Pk+|9L>+}`7q@yE1J;!=C-9A03 zcVMLG74d4NUn7QOs>r`qkARJLDCYIb|#{y;P}`QFK%6Pu8lYp3$a z6&iC~<&dk$EW4dLPyt08zO)$l``Twmrli`*H|lqi6O)oS($OR}j9hoiNXkvMcTPx8 zO0}ci*T}u-tc=9=Nl954Q;K>8(fetch{x}3IciX*sA5!jw}i}_*D>T7AeeAIbb(HW z5}%Sgj(h?s>vo{p=kz)iB zvT|}W9fQ)ww`ZKg#*Vrl5}rsaEF@>Fq;GMx_kRO2`^R zz3tm8C$&%d=#=y%YDLAUjD#d-PRD%AX(Fl3!9Rq@h<=Q_ebGZq1vqx3Jt;ajdpMS3 z))=d=RE&FGWGXTp_lMqIQ+xbp;ahhd{AsnSS?>d`Pf5a*QB)Zz<=}UVyL$R`%ujK> zBvqBkH9gC)dgR^x`tPLst9EJ2~K2YqT6Il)6Sr^vSkoMc9)Q zAV;IZyC5>U6XaTMnqwFp1+!7xU#{8)z-;wsIm=aRI1z@x$Em5LY>$rJ$eXkv-#ez~ zrDSEK6F-k*=tzyPS^RaUtn-!}xb;kILRLz`&{TVS>cU-e`ck_rsgjX~K3 z?)1g)lVaR^- z874RTQcrd4)xBdB$6CkPsCpG0V;Sl6649JUwU3BxAKk@O!nLnGOdpQG!x8vjIRXX$ zE8ptjOFbNc`;5S618)76?0t$p%>G|L0u?M~2*sH@a*j|YXYV{dKGwM=sA9L>uYhvH z?{L48?`=0x(uX4V3-PV=H(+VxVdp3CVl8U?U1F78Wge!tMj)aBkBeBUHx-A!9dYis zH`RseL3PJ<7yOOHckFV^gZgrCDmjHpr-q@n z6r5bPqvmufnaaR36Ra{c#Zxq;fOzzQ^oU2TK2$i$q~UCH0?Lm;ZxV0?wH=@K$m@tB z{Gn6~?vVR9=So$>Gp;rwa6g+$wA#)@A5u^k3@Lm#oFb+{4All@hEgo<$e;w|=^k~& zB0meYJlL~O;1szJ6^$n{s3a;EZRgyv&!i7wRy&?$y<59iKO-sf+Z!Fw3K`KPj6($a zpM(D5cQ^2M3{IH0K}!BIl!#Gck*fGB;V*-?b)3hEKzSd`d;)sy8o67uga3bI&1?*E z$sA;(Ez-)Z@u=i`l1x3N+w#*=LlIO*e%8Zi!L+4YgxU#y20+JX(I+Odjocy>L1XDj z38}C!jTU3<*)42l)yjH8cD6ljXzG|yRFIx+w8+g$SF;m`+tU)V+oYu=W@Th&B=RmJ{~1jdXzoSo*J4;{u(V3vb&_`WsJ0EwFu2k zX`e^{D5FJkLTa|XMQFR5_2}*H-iqGNqfdIfn=gmQ^>(gt!v&duho6Td@INsEWsb8$ zuk)V?t;G8B6LJq_gwkA%RFl=I>QZ%$dO*FThG?P|tL11#TCuiIyQp2)n(L8zvOZN` zuJ6!K>;6V_BhpAVrW(tQ9mZ+H-)wG1n#tx=bGf<0JZ<{hn%g36$+oGs<+dHR(`3^* z?)Z%jf4VsxN#nX4zn6f$N52s^%HfM`nMXO1!=Xkwi>6&S~qQg7N-r@CTUZ(=d~qTiMC$* zNIR$<(SFeW(){%*dTpK4W!=yj!!*K;D8p`yFfxo{<89+z<3nSg@vU*p2sR%xo0w0U z5oQ;&yP0Tanz`l#bB?*te8YSnWAeGV&pdDbZeBL4+Zxy!+uGQ=*t*+#V`O}&BN&eM zba%QpJ&4Yw$I=t&5_${0jsBcINuQ-J(4kBlhGjG+hUw1?VX~P5=2_-NW(BjFS<8IJ z9ALgFkxS*CwFZ@Nms_>{#TWBZfLVKZ`kRqfD*+MUI zvUpNFBA3h82@I#rvmJpvwi)F21i!tib(9LM?dkMqm< zPxvBXl_1K!<%P1p!YSvJsp=AShkjU3HpUtUjGv7I=FeuNZGdfqZMTgI^}$X_QO#+U zE}~b_{!DX>z!ats?|g|F%FblxvLZK>tH8JBWj=xr6~crlAy}kEU8JN?skKxD?)XAE zp$t)Hs&mzMj6KF7VH3!D?wN>6SU)6UA?WoNe?zU8!<*a*2EeE6-GPy9!UGJ z_1S;evHWU&6Th7=)rFT5=V%Jt;OWkz{jd0xGaniqoy z&tUaYdXQd6Z>rO}u6M=?{6aqoUbE=`r*mi|%eXsxu*v@4pg z9;`ReTk5&MY#wnES}sW%^jZVG~5xp%FnxpVk8nyKRl_ zi0zDxD)6CZqR0;V7kV-G3)g^e$@|MSb% zd*Bjyuk4|9t7nfa9oU~95<*(R*UhOr&l!R!b&gMFHv z!!BgsU|-@EaZ51XpK`moy%_1L{G)t*p63!9537D@$w9Lmb^gTC~uZOmKQ5u zD;3lZ>SXm@^+&ayHbvW@ZPRE-^43O-dD6@w<5cWpoh$XFXVXoYbfNq)HijEH)_!)zC^u|oe{+dh zW*#xmfRFNQb8W@8Ur8IseW1DHH<=)<3+S2jTuUl-W}=zbnfIBBEY0d{XZA_)X>o)2 zjTkFsqyIJJsmgpM54%vZHkKUVEq9Fb0(u91f(~RJWrjhX)nH}T&JtPKk9(bqKi~Y= zwAtp_DEwDV-~&`e?Dv}0S`TI^)>3m;Wp}WL*_c8<>CjJt0y3T=1T`40V34_ z*rTgyFKQRGbbYTb8eNT{#+Qa@b~T5ZpFrwWwl%?g%z#$$H+iSf3fBC(-YJ~f!5n6m zppBo{B5ou14PQeD7hVxA36;erVxBlh+#v0iQX$R#wR+lVt+JklJ)HEu$o#7uUbo%BR~xSpn8*01T6j1Z%~(E_?pXQP{O&^Th8H7*%fjR5m;v!&U_ z+-Pn#KLf9QXZ~bXv<2F#l6i@*K=33gk{*Uptj&nRAR$*cC>$3$h;OKeoNKQ-q>pTT zZ(K71&3DW_<{^{HtYGaa2e?1E5J3=P#awZ|{HroiM`Z;SsFp}#g#y>&!vBUCXgI z3^G<>XFrKK{1AE;Rp@BjpVPU{7?lJ3pL}y+hjvz*q_4(W4>1(uE33_9^EtDzEy~sp z`o_05s<;C11d1AkJz^!+bt~p$<{Wbc>tj4yo!bD}9V--xABm!rCohsilvs5FR-dR3 z(GTcUNd?&Sh{@pB@uhrq-KJ;guY-SY=)YIZU=n7hp}HaOI+_1l!6hZXAQ)E(Xw zJ`rk(VPcfn4{~C+xKJ7=uaisVJ@O&QomI*>b&xjOlE|C1G5QSsbN!0$YxFlpW7S?X zC^N`RF{hc|LM{hGGflR=Xj^5;xe6ApbCzienU=)ye1woE&JZt&m8Cps2BcbLd4uwu zQl!1FMd>+ufxgQ|l~=Ij?*{0u>xHf2_aX)a_)}~Aje~BOtYv7m^-!#iReDY1F@wfD zv@=EXD@fU;wznZO9A$Z0r#oRKyaTCsTJ)8Ir4iE0&Nn(KuYsO;&7eXnQcsN zGH5FlU6JaCx|(DCb%u65lbH)y70c&feQe;jfpFexY^CnkUo%yp zlZ=EOvWKn14TpSM!0qBrbANC(_$Yol^vyGT9cX#^!b;(g5GcyxaB;18Nx2G5ppqJ_ z)>a#;&D7Q^r>bguwX@noja3J$NouN^spde!jZ+JtgH4C-T&T{5{=85vhK2a6+DPlI zJ)^y+ozQCN;gAyR^iYF}cZ^{GEipTpNTD}miYSIdrp(29iIlEN73D{;BWKIc%h%;~ zN^?!n?AS&2K?eV+_11^!snF+UK)X#g@{Bd+Su@Y}EE&VhiquLZA#^i(16_)pW z{uSdWVg+^PdU7MU3@(S;$?fC5<$mO@LI?B1yuHA`%rC%Ne4qcwl7Ey?NoXRp5LydE zgprVVV}zH5Il@9=t?&`n&mQ5F@U!r%5FpkR>tdhKu%0@KgT)bI2KK)>;zIEa@sjKZ zJ6TXqtABu#vn~5D66+`t(j6TvsA$QK>+B<(#C7Kru(z$}|KV-I8DWrkU9P6IfW6aR z2~g{+U9{)4H?@Jrb4D$*lI?m!|Jj2b z`Urc175R?5D0P&ENg2{d(jiEqXQ3OtgE6h6Y*0Q?E?@`k4Y_ni4T2_?s%_G?XnuNS zJr-7Lp82d2%aT_WsnyW&{pl)nExJD4if#*S(xjv4 zp7cOEfzF_F=n3=``ek|!{RX|lvH`Z!yXiypQP@rAEnA>66U;PZ9*4EfG3}X1tg%=~ zmlRmsW0+}>3PrFCRx$5D&)dp;fz@|}`H?AS{$y@IqSs*Sz(Q!ridc~yF>AyEAI_$; z+Di?4ZDur#_nXlVh^&X*q_;p82do3Dp#9(jC+!!Ih70Jx^um`!LZs# zad}(;Hs&4YdMCN!DN+zxIJcbNO0JInpb{R68v2)0Hj-;8g^3w$`=neWB-fyG1$Vc^Fn_p;ROtmrhGh zK-W)(UA9UNRzj2x(DL(?GUb3mt0H87vBsi|JHUlPubIG4;VTOLVd;m6+2Un!xl|?{kRFqx zVDP2L}J^=YHPc$V1Zz{jWKZ!!Hg{Vx3>y^sEuK1Nq# z>NBC(?>jJ^m?&lf^E@zyc??;No0+eeW6TNY0e);{wmRE_<*ju&kd247KAxSy&SDpU z=Qpz-voCYoxZk-Zn1{*y*L-E6tFTUJD$d3ZmLuh;7u6it)wA`c#yTUyr0^fdL(z{7 z%%=>I6h+c9X(}}9ZP2UwTG)rLwQr`-^XO^J_slV&yL4LqUCvV`TT*B_P^!O;8Rh}o zDePaqR59ubpsUkE=zKbaX@>Xc!7O4nL3gpU)6mCb>=o$4%OEHBat(o&9NBpc|6dB8mov_0jnliM(Q)Ymzx@`zSS;Bm+{fo%(PIM1?5xt3yW$ai} zvoN+-m?Cx=R>fYnAtz&oPjLZ!b$$q+4;!QzcHSPq0yjYqw2RZkS>iGA3ikMA(oSiw z)KHdT4V{t$ltS02O@NB_wPbKClL&0>5-hp4Ea_JfR^JZ(8~(KThnOclD}5<7mj!5Q z`=Mdjl}m~r^qOqw8Gc%K?B?q=QSS&n;}mxD-o^y9b^F;eOcbl?E+fNIu0y9iiSMWro}s#lbcz%v}??uyz{>!%&S z&V5yj)O+hAb+TGE7@rso%qSo`o6T$HAlqi!IUAMfYheKmAVJ5`tLYjxMT}Gni=Yg2~MJJ2-;>+SM;zhB)G}V07Ty9$rY{S>m3w8jXi^N{O zgWJ!YhCSjh))Jdb0`&equ;z1tZM>=y{@J1L*H0UN8veFguo-+U{IoeOKzr=NB(u4| zMPB8WLtg9<_6y`4{pDJ6b49?e-v?Srt|kGM&o^e7ubJ1eulicH)Oq?j&JU=^A=pv> zC_}Vv`dO1Y?#Qz<%^?jc1CPp*rpdtiiHt0FPRhPoq}d0Wj-MsB z^5|#j3^0k*VD&CJ8gz`I}74&3AU}t{>y7eZuBbUIP;{y3t_;+|oh=wlxn=nC~ zFSd}vArF3*a^;ug29S|O+Dff4FqlvEAM{jXIc0%kXA%3s&HA4f1Ed;|zOP6-^sn`)z*U;tWJpk|!0{eO*^}%^AoGFnUIc43wK`e@ zZJbsBEN?n6w?fTX8hEE;obOkjD)zH%yn|d{eiv+oKZq-O zYuvE7a;34wYy^Jxv(`&sxB1L_SWXS0` zNIVh^GRpR$NelEN`&o{K<{7< zVbqf$BYqeD64J2(=R%S~i)0Ec zvYGI+%!XdJkS_)*yb{`332c;2!1+qy8`uHF_ktKKk#&}C7UHe_t+CzGkY&wl*Xxky5>dp#o`j5zyw{(lpFX z3s{Of)cxu!mJa`o(FxeePD=-I)H50uYI8=0wCV&K=qKo!Q{m0)E$)!^gQo)EC7K35 zoP-%Zjq$9d6FJ9V7w&IMu#L3Vx4*?FBGZvcU`9jszXaKz#vSFl@mu(#!eG&mwn)ix zu3RJ&nU|-o(BId0!UtE?_5yi6+TZf$ET`9@A3U>4{XpAc?uW0$-->lA7ekb0N*Qn_ ze+#R)MEf!OjCajn%$-)5WFYoA51=^(kr{E!`~- zT5*xN%-mr66n3FM;zuaz0DX$S1bsJzYsPf~I(0~@AP<6<_-Exeg(`9I)=%^Z<`S2L zw@sBYq2D$KYIt5R##fQwXswFmyp=5j0fjnLs#X}k2NTuBX8=W9*%K1PaJK;&I; zfHfC^KzB!QgXJmmF?qfkV7vhj#XCk_cx*buKN?{1a3;HyyTZ*;FO$B}0oMNeGWdTB zJ(*d?tYP*@-%6`V+hLBpQNXkgirHEa5UVaGW$S6J8%N#>`0J`LufV$ffoTG~_#E+9 z#0OYw>LuVSmjwnmt6gu!A9o!PVin&<71B`TWIO-WTsVXwA;cYhv3qc97FK<*X;gIouj;E?{eUIplOC?XoB7&DAQW3KT!EVP|?%gaVhQ!-=B(LlGq zG7p^!6022QgL3Jsr1mgzWp#ohA)>jDpS6%7hz#7KDi~kYug}uaCzd+~n zhwrISEdqkK7&iPn>IQX-x?TMo^YyLzgL+o|4K}@x7N9+%)rSX9fCs-A*34?{U08Tq zA*;T?ZulMiJ!j#8{Y&$~{`Ux?A{xVjNW%Uz7e0c@u=)A{N&Xc&LZs~};6ue&{{hr$ z3=zR(9)nloXZjzy7NbI|?Cy+Zn1wlA$_#;xS^$}Flx+g^qli=Z51>h~h&o7s=jNDD zU2HB!hy%q5q6%$%vh*I%=LF36i@>?Jz{7u1K95mpsI*i%A^u}9?6O(PJY}&$-mNVn zSz@%oum)d&CbJwn{0?m|ImciO-f3jf!Kwo;(iyKH+%-;W1ad**iTAiO3O`L)0t ze-$nYSA=TEckW&<*U!bHVu)N{Zi8rnZ;4|mG|hF3`USc-y*TuEzic z3S#rvVqgGkfxP;1m7oR8e$hl8|MpsoDKx_S6eN}ry+oY#pCx6k{WNbC| zLvmd=e9fwu6&o4L=s-)4WVsg5z!qW!48gh`p^wog>Cfq}KnGb3S-1sAKusWb`;6v@ zp*TXGix0GXEa&M3{0iu(pF^IX20u3t`U!TR=!L=xVT(`~t1}#2Hdq`gjuywmM^q@j zF4mL2Q|DCLUDZ)}zvwjMCUDeMbCE=~eDxyTj*Gd##$Ks*)?J6z|( z;Ir)v3?-V60h)VnyTPTu5Pjvc7%0_7oX8MpES=>jV4*Q`KY0-F+$4E8kf7>HEOv;k zilo`JD9FMR?7j!I@3r;%H+pMW55tTsL|`?9uQAnpiOhXTAPLc%tLQ! zPT{(8c5WP`-Apc;AAs1gv5lOh;I26`jsDShHPQ6uo_;KOG0B{b_>N-z*9aF z+esa;i}kglQ=UU)%DeKX@|UpNf|OeDdZsEbAWGtWL~H#5T+Ig_s#oDrFM)oA>k&fs!22f7E}`%XL4aCgdY)w1^A2 zXbfvUQxSEy9k#(SAk+qs{v>u3JC^Ow)#Kaq-T6V7u^I3@Ey9Sr4=pPKDD`OJ2(0Q~ zAdUURs^HTowL4Jhcq1K{^bA;FtBntgFQDt5H!7M{%o=7x#8R#_*CEF0pn1$Z0m~%Q zR*3kMMbM~^0n-VzVwoa6hTEUJ4oZDWV1U(HH3(h*)R_85RRO^g~!NClPaz z4&0-V{g6Ei47eg!g=@==gjG5Z7AT2G`vPnF0bxtamE&?^a22{pZ4wQrBV7VsZ zy&52LXo@^to+%f~v*o#n{ObhmZZC9+a*g=OiA0>F&jBBj8NH@gGy;uaqYZ4@7-Nu; z2#vQ4bNRhd8DsN=$w8(?VSia^t~N_BN}Hg+`Xc5a2;OVg?%0&f=kY*l6Ow84VnkEE z4^8X@?aS0-+A*eu@ecrIQ4B0|8e#~Sv+uFfV2P}PSN(k;AzwkZ7_b0FL$a{gt(S`% z;aA@;R)D9ZpOkYM^5>JN?$GrGW6GTo?c3h*390eOY3R~|^6L%)~8&qREIU&3d6 z5#G*5i2NY_z%D>u;}Ea&G;1KTA)lMX{ml9BwGmwx4ZE}eUY`}f6t?k)_$$yoDj|Zi zuFzO$1#QYitXZs(DvZS(PZ#D3@4)l96JF0+@Cy^{^Hp&%;%t9|w;~Kk@~wH@E$@@R zN5oW+QbTE@sPGDPLWFI&)GBz*_%X~`4a`?ZW12DRwl#Phn)IDC0}`26$&#g& z=_hF(F`gaZf6uj|sulsSTMs!ph#7808OkrP!CHFadiS3R!#|)spQ@Od^ z3a*6vhhHkZ53b!Q`~dA|us9N)p)rV6osPG%Y+mRPdohP6pwaw=nQRAaa+EX%eESl- zi_0*V2c<4bFGRMbD+QJoy-lg2*VUWoj2?ps$U%BM_RQh%QfFfS&ez8w;$aHjeGP`KVbR z(Jz(`8CuEOV;S1O$nOOL8Vk>75qzD4*j`*bto6#UP@couIL6n5MjisL86wKi*?LH4 zpuygdqG8uvR<1#E`)VPYsU>J>h`cC*xA$Y%4`-~XQc>@tC%^_9kDZ@`H^wlsfmV+< zCL3=W(TIq;?2yHDCF}nj`p`8X%esLB#=#r64Etyqe6E)fk6FW#yqT~XW&+Xez;)uH zxXIi!>`5;n@^un0r&-_z;@SUOxPizA7BWl+Z(jmJ(@JV9afm3%0FN)0RzS1rB#)Lu z^=6pqqk1W%>{mp7gjKTi)$w#5=A;NRVgtM#A4ntROnHpF1RBQMa;CCF=?6R zR{TvAJe4G-n~c@h@OwSZwd3NrBrb)U34h-n;81~bRryhQh@2>A$gf-R!}q8adZptX zTC>Dwl+UiT{6*KX2UZ7~7r}Mm-jYf%(r2X$(jO8Hzg~Mpx@ODyau{^Rp2`H+)60O`+x{`{=|uD(&TU`)%Tqw(OITM*^&B}=%)k0YlH zx+5N;0Cw>faT_#;t0E=&Nd{uHy32&WpOv>L+klT=RVdX@H4w?#U3(f{jc2tj#x_KL zUWMK1XBxH+h@5=dRzRYHN-J5u+AYAVzqBGZ{1^j!V|VO|1&AMc8`|hcu*%A@kGr?| zh5R*8v?@w4^v$D)g1(^E*FxdT-lA{AE_PL?3_rs_^muppCkqfObMsBh9DL;cp5q~N zUgSQ+$%;?8Hr5VHB8zf8M)w8zWyA_PV%+aKqUJW>_E(|F_}QrAm8^JB1G`~&`f2Qj z&(e1tPhlJI!>h3I{eX&hkh)7xLl=8iy6bq}l6{P80^N8Zb~`)wGVn!D zd#pQR+Tw(nI5SZsq(NVr08O|=T#uDRwBMP~2xm)krG;3@i?Bbu<2;qL6=!40fWTEy z15{q!hsf6>kS8Y*pGCZy7qma%U2Bb!$Ckt>sW;$Y(3Yiz#R}giy2hm0c*mr=cmRd;TWv(f7 z{$2bYoJQCOE%69{oIfU<0AAEUYz#~Oh81r~xTzCReTV)YDmMix-&&^SwuoV~!BQKA z`R{@GiC161iJv*Z5|eXnU0JT$b!#t()&hPBFEYhFPVgv+XU&9)f+ zgztcMpMrnH!Qfpj=f));0IqN$!|va$C~0gAN&HsBKYu-0MEK8-Uu-(dbv0&5Bp>I+n&8FXkb=Qv_glMcJXwRwWWe(nU96Jc!$25LE z|2nK(vJ+h6TM2D(rXd9qx{lNUJ6}_&B~FOZ5)Vs2ml`OIVciS>mY$@%rIaX}m9vPY z{6lF4%;-*j;3MFh^F}?h5in2^;Xe+3U?P3a694P*$`8_`JNb6%Tg=9-Q;Q4jM5{t&>pWm^a}$dJo>?a%L{PGR53daL#Jd!{&MuGO^!H+$j~k%(2$*~Es;B6gwj3a>HG7t80Lv~~iUGPXNQ#$|ZhBSofv&u7`Fuig{;#Fp8fO4`oJG}fE-wPeNtFH^ z+Wo|enWDh=zUubzl)<{=it5T}38mI;# z7QUvcYwd9sc&s)N@ibdCSBys;oQNS~PvY4A(VsBd89dJZde1gF<@+`~gx_OzHL?xI z*;03&qe`k!b>Jf;vB-nz8T2fmse5TME1_6zEphsgMx??u#)qwn(@{1yf}IE(Xb-%~ z``AP9JsgLuSk0}4@8M@e{$9knk$f*?cn~~gX~1+|2O9pp&{AxT6?to|1WAubk4ar& zsmCC)^N@4|vA!o^wL1_yaysw}VC6StU+nGEm6=MRGFzFeEL4hdwl@_g%*Ly$;4@r@ z$bT6zOy@}j`AIhp& zdSS4h zN6!6}SFz5~#>3|~3el-cAhAP%JTN#Fng|4{5j=i0PHhZ@9oY`t6b3XTiyO_g=Ocl~ zOhjbQb9_%=YeRuL%tka*zBC>-{03_WClqF0*j%by6h+_X7 zaqJWoWc?q|5ljXwsFlpyh&+A*n1O~JEsf0r!tpDtDRRn-h0XmAERHjlE_ayk1y(t*c`Hf-k^@gSthEs$+Eqq`)aOhmyI?A*18T|EK4 zx(nhP2_oZeuS|tMcR9BKvFit*b6mnX@DR+O$XAm3%Wo=wsa^DWh(QXnVjcRbmw|zQ zYW`_zwlK)fbXzv$_Afx`uOY@c$g)uyB3`y7aU_NXSuq%upjp)h_8y6|>|KQJ7!QK} zJTE*azKC-hA6uTo&k&_|P$JQwRiKgJ*=R?5d+3E)MMQJege>i%ch}$4*XSQOtlkV7!(2oMgGlSSqu-^AsKE`U6J}}mr=XKl{kbn-faWwWX za@v6^46=N^bD&%JV&5VW>dkOkelIcB z8&q+SwdT&rLArog#Yo~`D{+kNLUo*WgvjaAAS)*98a)7~p$D-G#azh6sahMI#mU=| zKtOXL3o97a3=J4|N7!BKjgJw#^as4e={S-0 zk5X6dui9~z$RB6tqk*LsAs%C`z5%BPeu2N6F+|`EeSr~e2R~FYXJ7}}iRiF zHWty8&*L1(Teh`0J^Z8XC&wA@<3SewR-JBRVXU3$M0yiAaSza*AjDiWM$|xf_MPoH7VBPOjT+t@lE zq+zFsW|MIOY&1~uCDvJzMmRs5#Ery>s4>vle!^L>&NzjBm8XTb5HU;x>EDF-xjhz= zR#%RcpMs|_5!TjrcwApo)+-+%Qe1@n-A#?duK`ec0I=`DILo*U@iH6q6Oi%e^%{7y zt40H0hfkU0L~A!|PNpC#W-H{`727|g|5Q~=rd7Zx90T#Uc@~yYn`w#o9UJ=`V%w`A z8m0j-ICA1;GSI|r+(~W@B4BnR+WrboPF1(gX^n&RSXFE!P71aftbwFD!RrxQ)c7 z*l8W7#2i@o7l_Fs#g3PvF$?9Z^zC=VgWP6UE&ww*T9?|cr&po{=$jqPO#>u zsW0JNe2Mmq-UbmT2cXYXvXND{7V&&rA$=}5)>?d33k&+tik$e}I;q^8*$4^N0;nq5 z&a7(L6jkA!ECLq#H@uR*%o>(O6r~PZ;tlKwlJ&b6x$sy_6x{LS{_rY{aGtpP3HZPj zu^CQ>w}Vcc4UZdz-#O5Mf(I#AjSALpt@Oc4nqkhecJ*NF8Xaw2oqPy{vY@IJ(?f7O z^1CWiae|Oo?bqSkSjzm)gt6spJ~y6w4*L^9@p{1L9&eo-oWnnX=&K51fLOyi3D_0U zCvC0$d=JLzI?ggK$M|oAZF?4ot-HNA5ho@Kp-X?N?pD)rN^l~gsMg}Q7CP!(@w*jM z_2=O)YGgEpH5PCEj?Bl#qh@WKqwbA}nZbw^Z-E`}GqQdPt5VyMEI<_NlZ<4Y{~iTz zQ6pHm7jP=%2HTora4zaN&ddCU6FrZ^Dkt8cHT-u#bWZUk(vx6QWDI9O>sugwj#Eo=KX^0NiujP!x*`6BCU&k5XhT=?dMwZWpM`0mi!j=N}UJal8x|_Pf zu6xBw7gx3Rs^`S@QVOuWSwISR0j=@2|3WbyEwMvQfiH9>BJdoj-tWLQs#<#4IC>K1 z?hhb#|Ijb94Is;#bFaWV_8Rx7^H+j~A(m%o4-|&l7!6_wzc4IQjs#?E+n2A`% zZ8$;rJrjv@f>YTyEq}*%>?*_q{_2!9PdjCx2F<=Itd`dh5A=)pmsCwzfZyFHS1u~I z?3W#g;`2uYOAmN^I_urwt6ZgT(SJhpeP!cOoZC;aVhsuqIXW7a|2(XZZMOY{$BtLE z;-Z2Ot$2xUgZPH8(5IhamsNx%(i-s%ov^#)vv08_;5jnxt>Ak+#s7>rj~O`2A0v|0 z8YacTmsW(>n@8m)h`vb!I<-aFuRMwqM+aboH_*bhBy9w^Di3JSWbOa7cm7dv*4Mh9 zMvNpP3^<8nBnDGVG158=^Lqvc6(ed?5~-q@RvI}5Q)+06mZY>9BaN64#T1o9T4_ub zBkEMKl86SCqg2sQ#fm9fRE((fijkuju|1!?-w9y!xVp|-cddKZ;{I{F&L3@<_x*nN z-p{k2=XqDsP1Xc{h4QG5d8>tqtCQXTn>bY0u;+h0>%*)QNJ!YKJ@6RaYkc2U4Hl9K z?@Ao=w^4m};;eg`XZ<1^^Lr>OVz{R#!b5$+cHv_8GV)Pga?jwI4^u-=}3*M`b+@jc=bMa$d% zV**L&C`~ExIy;K8U=@G+@7#Cke&jqH%BH!hl z$Y$*s`|a>Uf25YaK_~xLW}G9D$vo9@3jWl4)Q9@6W61H5;}e)TCwFEMij!ZECGA+NR6*tb6$h^GWbq^=rs9ztslHDhfKvJjA=9y?E8)c%;B;#hcClSTxM(}Ef z_hs))@`FwQbGgx6Z}4p*8%6H-hOA}GU4k>WgFl}p*X0%TU4y*0kF$RaR=x^UU=S}u&+|CU{?Y8B zTAWMZ#(n_yxQ5wj^SA;u0tUH?-EyZg04tfyH=xQHMX?gcbY858=5I_C$M}+PR4qfj zUgz72qw+TYAN*cemnJG^B+!Xs>F-(PI>+7&vR?sG`vuPO2aHUXvUtT#cV_(E?!cM6 z$hib9&3g8Z5$2{hoIi7I59DN7qY6@fQ#f9EAuE|Ty||D(D4;KNu7LgQa#p+SY$8H< z({97({;N~Zb!NYi{SwM6Q)9gLo*SuiZ=l~Aa(;}K z;9KmtMf)(9x$jg|1zx6uKe--55%oEa7fdVhXwhY(Jb6Bi zFlU_&i&8kLtKOKEf|~YG&L@9!BwjgWnVv6X2e^^bC;QH4Z8p2po*iWdcH+6*L*~QF z?BNe`!V+QV7l3P)!bog&{NAyf4d`0>(o3*HQYV*b%F9-qzIVAUXDSdC!yfcXqLh>! zoSS{#Q&f%5ybFD&!6z^0{g-l&9>o{+nSWYf0V#Nb_MSi~7-Ua+i88mQ_ITYtSTp9L zuWH4oxmQyzR-rfhg5;DhaF49^F7Z91d%4fKal(Gw36JmuI{LqX@Ay{ZdzJmwn{fLk^>lQhK?vyv<$aeQ z71LR8UXn5PfafGtEiKl4{$`ku|Kyxc_Z9JC26+&erUJ4dj&7>0Hz4xD{{X-L99})4i@5fpl^ge+Z-Wf&YNN z2EG3_(1z%~Oj$>Pas#M2re`nZEEMS^UdJXxoZpt<+@PIa6ACV;*W43)5T^EVcCyr0 zbAlWNeVNo)( z&d$1wB#`^aR5~sDGM?Svvc2@@l}sahWq+NLpflR>^q~vr#t+kfJ|kmgIs2LCGiJaM z=7FXk!{2{AnwAT|GEbu>_Tt8@U`~CTUVDjiC7PqXsNzmRXTOUL??QBMccFSY&T}ch z<mPbf;SpzHc9;qJ}v0Z-xP3>#A=a0Z$dm>8AM^P-? z$sCfPGyZk>!+(n2^m#N|3HGJ-pJm3l&H#I)yR$u|oZV6HeqV;)OM>Rvczmx#OL8tg zaFkOy399{>ZR;S*@)b?7jDzuh$NrHjfYLH=Ws7$=oIo!f^9&}keXb1NR?vMFx|yH3 zU-PVGy3h8V7Dx@A5_EFbR=~b<;PZ`hZ^Ju%x^4<9Y~mk(G2?S~4oBKIQT@|N>2pxu z-%_A~9T<$5#l>Q*= zwyZl)BD|ROGIOk)`~L{utgd$1UH(JZBY^2+* zbKQ;#;rHYtyv{rR6z|?lG*fff;ir=ixP*89BesV>g^{aAr*I!V^)YnVFW`ecKp&Xq zo#{Jn6eAupAcXQcAUoHZNq4%DG;-GhGNMV`jHq?wF?!7MoV7UGv$4a4=Oa|{=C zqFb<_sKw?nBVNLmh?Rvew|WwN598|`v@G=t0+D;F^k>{yWZ*U8Q-X!4?b9dp6O<~>SMSi1Nc*a zPq%x3^gYcEtWD6_ty&W>9_KfY*}j)?E<1+OjCi)}pW%MECvzT3>O^$L zVNGB7Q`TGLvmL;#{B3e5&So>Yg1u;MP!taLlY;f3!P_+^DDN=CcARY?cjqSFOA@&} zRoooue{bRn70zTmti!3A8oLel^g<@JLFa9pyX|ZRA3)3TDVyqPo})Z2IL3>~qqvq1 zcAM&;USrmX#k+E{_Z-v=mw2y3Nwmp(m-ke4XI$Ycp(p>^cP~lAkD?XW@B6@a1e!)N zgV^LgL~BxW7~1t=_rb`QEGj!N5)A zGTg+!c&E%~?FowI*VsHb11>~)^IJ(BBmtv`bloHHsqSGH^MdnJZsxaKgD7M_aZ3`# zLeELQ1dbRomkM(L_E&`ZcHel3-zN|Q-jomZl)F4y_7Nx7x}atY^hiu*b? zcsG-D`~=hMk4XAi1%m&bOd$OUx?{gkJN*W95R$%nt?Ene$8Xk$&s5YXA7&n}`sT;c zu0PMzdJy&cJ!qL1l3v_| zv&lwGRerfJbGOdP2XsH;boi*LKXI%^F&|RqXst`m>yaL-f4+Yqt~;-)Qg-_rc(P{I z8alWG+2pg_ryG|i>2#y0@+EWG%QSu_U3e{9+bVkTsC^9OV@#%~JHO`?J>E_3Ilg&p z++XJA`qc68F}Z-F*i+leeCYt-` zM=ztEGG-RLyMh$mKT)|yJjXJD;M}?zgxKwR#r3AE9A^I%CXvhW?s2Yi%(~}mAUj&rz5|YDoo%i@ z_nV|e-GHa#7IK`AMp5bW1%0_Fzi0U4qe<7P%-!qREw+$wjBnPF<2(lz z{YmE*Sb|yX0XBJ;z*TOBVFT&FO&MoL^M8#Q`fbz; z$7asUyd*P3N=TJ@0~5fpYjCjIU^q&^_Pd=Q1eT$2PlAE@SN0yZzWncp&5G~-14eoe zv(6`Mc75aALIeC@yX7V5DpGluM9j0p~ouV8azC4?`Z1QAdwU*~|1E~If zYHLf@E)=)h@xT3%9r@LCgb_oJUu#w`jqF}aY(IfZzn$%4Ki;VKZQsWkyPWQDBi!L% zaYe~&bs^Q|Qu`j*jWTLQ1<3J_e@k3BXGdD@*EjFd- zqRm=+R+ADmmpYfrR;->prwF)zCH{${a5Bmr{WDs`Bs5`bV3>Bg54h)(-Vorgx*E;h zlb)aPY#;R6eXH>C50f2#BRwcHE0O8-cK!wvRoE0U&ghx8^KD_2*WKv5%=kl>!eM+$ z^*1&{x6l=L@eZZZe2YZmrRsze-NK#p8R>|#y~#`rm!TH;9r>S4z896P{toH%#dN@% z{Tp#vR|J2_RQVV6wwl__I!{c~jpym$<}JLLM!2bcIM?Q(06d>;mO_*ZtGG9>vLSxQ zK8LfKnt8tV@C{Mzaso=%EH>!EQf|VV@QLbMf5D_Z>MC)scJD!7^-uTJa7Cg#ya_&i z7Z}=1g8qrjALsj*`b$WPUB}*2{Pfd6g>mG$9)mWHchGHC{27BXJ(En&@8iAgvVDmD z_6wWjZfD?;Tu%~MZN_d=^*S;{AGecD(rX}^AMe$5cug!)_s)RLs5RPk? z^Z$5$jLT+?rhwlMZvTKx(-Sq9wiq}1HN2sFaEcwazv?&Ze#%RqJR8Nwwd^LPN4~^7 z_N|QR8TZ;RS1-w}nIDoVe=q*Mxo9)Lz@se)?_Td8`Tb9N|LlF&`ys5x4^$y@BNNLo zy2knVD=#D)Z>9f4a^!EpjrdO1XSf`efa-Ep4|X|y@ejC6U_FM-$^)b@2mgW$u)p%J zXJmv>?>@?;bs%Fd>|O=fpabXSJf4H70$zbxO@!lF!X~2X8xm!H3Fo(ky}=W%RJTPk z988Hi6J3q6CCJJ6EW--R0YAJm$+J+nx+|F-uQe&q}jLT^y*Pb-?u z1EgNf)%Sfd-$@X~$VGuPe0ssGbAsQO&PA(CG>z~d4e$#~(5bwgc_yy3YaE-MTksvo zmTxc4tSek4aFVjkt!Iwdfi5Bfht>w#>ZH5%aO(O=?;3I);Pm|yHS$c*`D||IeDs>% zL#^opr!OK2eJNY{AF>x*31Yt%o!oj<*f(*5w}IX7Mp66_)A|sU(@4KwO>){tB*HFbSN#yvP7)K}Zw%jf zS)y_SGx5%?v~9!Vc+j?xdc2XlG=t2OUG%0i^wjJ_f$XE^?P9K4=)8=3e&}Cb4b%P- z2-k-XWee5m0Gr?z&--XK&LCrar+0uo&KYoI+vz9M{B|@CTkwS(!2P!rCH_M=Hj~h5 ztmaD?2eRzc#O<)BPO?(;n;&80?{k6icG{+qtSEn(aOCHrYTAy+XBvv8<%d0+5it3> zNq^r?{=S(w61VXtr}6E8<#dW+HhUZ4@D9LJE+x}`w=W4j+Iqeda8UoU&1iYLn4h!Y z{EgNxPISfA~=Jc#Lnz}+0(}VE>g`K6V?B=5DnZ$rsenH3D0Hz z*s15r$NV9=6GvvAg$ivubJ;Y9-LV|k@l)X8`MlkYOdRj?w_bymd=YHc47%%n5>Ym= ze_cRg(lhjxE7?g;XCr+#-E0xe#eNdjH_%NNunE)MU?fp_nX^zWr{QAX#%Ay|`=2v+ zITzEei9SZJ|Hcp|#_gw?9jm;DVN!~1AqC-%x$Ez9n4&aw|pb~^_XKZ6V#B?!6fk%)gYHs+UHK^UiQFM z*y%@adCx%aw-a1E)9<71Zo|oc(7zDf-$qq)os6Smy*}+r$Nc9lNCIV4lmFm0#f$$JQugj<$^{fU}|lZ(T%3bv;McWaFF zIa8AI35M#{(A-W|cX~)q%;DGOaSQTM<`+`ui*SIJfc?wJo2dAbcO$|XY$a2)oo9kF zEVGx%+sNV=#Y1BuMN3q+CUcT{h5J-xZzz&2UMr~(hF79UHGZAUgjLZL=lW=dbJJnE zUs3!{_)_4c>;9rz5+Q*^pOaOH%AIp@p4LjT`O}!)H{eE~667y{^#I>uSxsHlCKDi#FvX z>AZeOj~-)>=fYF zDaI{S&bLCU&=uFQqus#Oi;BgAQbXY`+n5{bI;8vY_=&MPu(kU!My{U%+WD<}8<^>#M@) zUB`Lep;;+yoarvkb024U2c8XPVQpOFDS+ZUe5WgLfKM>S8WGe zTnn204%E>-BvcH5MMqGi#gMCGVI!K#2GBv4POhdLgtCjt<0$8pSD~Y?LqWZRX|{!Q zk`7LI4}OjT6dfb@m10Ohu;ATI4W^TI5ztw)01mnsHeB?kVRmkkBGJf}HiCY)o$R1) z^ppMMU<{+#GZiJtXILaF2bRDJKbwZj#$(HYN6P107)2nzGB}(tc_6jy!5h&?N9Yah z@N3<;#rx6!4x`X9;W{wmI7mU)ZX-1#hl-a^wJTC5e+B-uYG(a<{2fhf&09Hhot(E` z&e|ZJfKl*ctldnOb_!YAHokR{1GAEEFSHl2@hoE+4#Qd1vI%TNa}c3Mwo@OwVSD=7 z4GzP-m@;G06X*1vc#j2ujw%%{_0}>?$T%q zxFc|YUo*t-8Q~Wl+OEb$Gx6lN7#=0Vp(MYkhTl}Dze<$S&HS>KaXoq` z+;BJQj$VG@5WjJRUpdC_jNzBYsV^{<-}+_8!Xal*5xba@!#ITcsDq;k=BI_k>Nd9T z9bkuUutV=8XW_7G1OzdLsrjFp&={(D_LcerwYTn zbhvY+mHK;V%IKyF_kNwP?rTzM(x}ZgsWVOPbt)e_L|2HR zC&(A<9Q1?5bc13lY9*bZjy}*#7m)Azg{gw|{I&=_9PxhiQ|&~VXm%x2-yBqO`9e=I zRa}x-zo}bS;!~^vFE#Man^8@);ce^UJ@>(D4jtlTi!7$l5q!Rngt8cP z5(1f&f=VhuXEiu78_-KP?5^ih^IXUa{GUG4ld^%RiW3dBX4;J@2SPn z#+&M*%k|-V9-_OAk(?99{y3Qpaysl{fb7@B=J0bhZZGYcoBqjh$W> z@3s#vV2DmO#`}%K*`ACZtRCK}2_JhaeydJ;L@zG8K~Uo;d{Zo)!AcT+8eEgdlS4+4xbkO2A78}_^ zL;|fK#!k>;FGz8aT%}QTMzQ!QtSBwgz=j@hVII4jLKO5RaK9Dox2v;iQ6V&v0ujNR z*$(U4jRvEi@45}6M=+sBFq2rBLRzJb{IDESD)XryMQpgrz>r~FsJdzE)v8^2d3OQYuLUQ@_-ZLpZaSi9eS5Vf2?g zYIU(r_|i#gneT=D=vDXYprYnD&~ln$Wtr(qsMS?E$?wovzLOb#KqvSZO^KF@?a(Ae z!Nld%fgQ~3QUN+O{i2uoHkR8jlX|+QKL@z^rA+B^=VeBZP{+G;GMBp^#~n|@eJ3o+cBzwg>1YO)#c=> zW4>H-FRG~ntxSR4QSb90_g`i`+xVQfnAuL|y1J-Gw~1Td$!#CdyB?#CW(znvmwO)4 zIj2;==oRLUM?lY=QIB_@CL6_YT2mA=%e;`Mn$$A&eaL-oj=DWMz{(@sWkJc-s3+RS zJuc$($_=j4l#M#jaR;}zkMnD|fky*oZf&~W*~Q%20@BgS)#V{bIHJz^cJAshC|GW( zMbB_5Cs;bXU|)mdspfXd+|@lkZ4H5WlY=RWc5}eHGXE8_OP8ssaeP*4qi+t$t|elT z&jM<{G}AGyoMI2iwm@-hImot>vs?wXZK6+hX@4A!ro;%FC*4s_w87yO&>gElveFlu zqA3OKpjdIW$AVui%pl23ApxCUNuONr0UNc>!6ZS+EQbX<-J@F2%zc^>ISDbi!wEhY>9F)59L#$r*-)eN)IqWrIXCtBu_B7I*nQRYy4 zV=u^SVW~LrwBjc$$SwtkvA%RwmSb z?(hh+sXWzGX3|{kTcIec!gG^o0yR15cI-)(R0XEl|DjhuIVxDq6 zPk4l_)dUYK--?&-(i#k_RdWf-zXqF`OtX|fH8UTTz?4cisevUG)YT5^>I8KS(obR) zZKcsqY&su>Kw4$G|Ebcijy7xBO*<&7UlEpxd=#_dSx*#s7e*27C_98S`iAkQ>Xggu z(%nET%w+)XuT+t#mH9>xO_+*roZmQVd@hx}6lP6oiM*XA-c2tv%#h0hPnJglO&R%^ zVQNY}HAPgeqg3xS6vTz>1ghBuw8Byia^A;CL`YZ8KW`k3)WPr@Z!TFGeGhN06pYaT zZ!c5w$k#IVMc;rVMwyxAd-MisC}&P?iZbwnOc=>gOb~)+uZ{BS-Q1HH=KK)zeNA>c z)4>EEK8DV2mZ^oiA(}XkvfKr{v+C&kk~d{l4%-11E`hO*jC0lUUd-H@99WPtHa(4O zc)Ho_NH(T0&bi|ooZ4}Ixlb7chwf?eVUeqpJ#M2<4?8SOpodUr$v8LM0>&I<=Cta> zDa=8HuG>%FjfKthz>$?|^^uC-%v{-_`IzECve8|O6j@fnDMr}R^hdWdDfG|+dT14$ zv+Lj7zJx(I5%w)|--dZ>sq9xgiu|O8wSObh%VUF5!DQG3rio<+6y#Q%xJmH zW)qx68~cSJ_6o_cON-&GD!~@b^wvJ+uQ=s@1WOb$bCr(o+gd>qLz!mX0;H=aTv&v9 z?FW)1c8J^09p?yYVY@qcUn5R~xp%NPj?keyP?imU&5aVKpoKm5Ae^z4_mvAnT*xG3 z^pXDYdu8K&6@l($!f*XIaD50wU&EB&ru(s8MeY{ehUK#ZYxu_PS1Q=Nk`C0vL=ywv zcJQ`hzl50kNexS8!;}YKSx%Q3e=j!UE;;m@>7`M|sfoAJ7u^RX^H%bya^WbC)Sh8w zHqK+S^VJ&^(05U*EL@lFJO_Cf$-0RtP}WTtw>~x$am=;>CfibY#s>BdUF;afoU!Z@ zJovy$cn9@#9l0~ZlP0AUZcicoXQIN@QsYctVP}l4)IQF|3@Z~8N2SXFf0aeInGtxF z0dFk3OONs@1?(z~9@Vc;|KH(FTDV68umZ;Z(WW)7RJV;yyp54>+%8taeKf-W2>uVi zXb565_Jk3-)&O4(G4sukRK-S>U?YQ1?8J97%T&N!N`W!V=e<>ceFXXRf_$V$$vrCJ zjn#wMo1={1FmEkY-&#l+)fN!C%nWJNygcTG5+;Tw<^|zR``D)qu~8f2-AP*DVz5dX zm9J7aXU&RI1f#^zorHH2+%0TdEnTXSDWVtd)XIA-Wam}Sv?a5yRo`3%Z>tqVG3vI$ zr4?{*D&WpqLCd2aD{sf6%viDBnobz7SY`(YvqLfOr3vgi$jlJSt~iCMzXH~32Q_Ta zA4_-1gNLc+xi`YUj4~N`RC`d*)9qzXD|aCe#;BT!pcC(KY%qP3wXqG9LXPgVGA-_C)m}0N#u&6@ z(Ja*o>av6XbL#(1J%OnwF!cncp1{--n0f+JPhjc^Og(|ACouH{rk=pm6PS7eQ%_*( N2~0hK{~J%>zX84?q$~gc literal 0 HcmV?d00001 From 420c5fbcb00e65933f73f7702fae8d71b082ed74 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 17 May 2015 00:30:14 +0200 Subject: [PATCH 034/252] Release build of dll --- ace_medical.dll | Bin 1456128 -> 225280 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ace_medical.dll b/ace_medical.dll index 7a2c969b7e0960be5366e6cbbb9588f0b949d6e1..98682d89b99b4fecc4731e5c0d6007bf2130ddcd 100644 GIT binary patch literal 225280 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 E0r2}#xc~qF literal 1456128 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%0A=87vqI;g`cW?YQyU3+) zJm4!2ddlITY4kh=OUY!IBJWk>7A_ z1B}Vth2mz(S#rf7xSUo1^10?Y4+g=2Y|vCMBlfIvOH-~C9_m{5k>=3>ZMFG4ubhME z8^v*CfN^K|YG9n!i?wVHIsEMlaT>9=20=gd;(5GN4*uoyQD=2JwgiOeS5+Du!7Ar` znG-w@&F>9C*|8(|4mM*E=;H|??8@W_t`{Y2z9>!G5@t)aMp~+>%v`NZSgM*zCQJ1x zUP*XbjJ_F^VHshq?N>|hF=mR?~vz@9?0j{`ZRX5rDr;6`ED^2FKXr0vM?RPoi zBLIEG@e&kDI9wcsNv9QTe8>51GNJ-Y+9ksgeGxobjQt@oWxJSNO8@Toe zYJijJH~=9ITWQG|hF3@9*o?F=F1C`#_r~l{jUFxLz~&k2@%4uOM7);$`FqVG_ZD46 zVk=)R(?Q4Z;l^UuBjxny<49LNvNd-O#AO>LDqci?S`o@ZfxB(ExeB72HU|}nEt9Ev zxSK%GL54U~^okovx?$lUVCX)QNplVgJIHOQBqpk(Sf^V<6~n)gOadRk8@|ObCu#6zmPE)WL`+P-dJ% zizAb;17?pFKt+d+AzHUT-zk87{o*TjP~%v@kFXVhA_;aAEwX`BDtyVA59>B@v#7^9 zvt?Aq?7H}j*2%BvfAn{oxxXhy#a}?yK{GJP^oO#<3w- z+@nq#pCJPt#P>04$1AW#_~$z5d&LPDex}Z`4&6>7Zq3HyABRu#(L%hjvUhPFPHhwi zuSdKDfrO3M7)P{*=x;x(bfE6%knb=BOApWIQycr!9t3eANai_udw4otUtCHW6nlEb zDaMCMXd+6cI9}SvO*{Uu(XZ#i)3`#&kPr6mY(LGDN%79Kxf4e#eFn*eV#B|oJv%7v z1Nkg>KsrhXr~{~RuH$fV4un^DxcQ9>Vyi%mypzj-c6VW)B*k)4Y6ntN?{*E}OFS8g zJdH$Z9NV$&G0wv*V`hRquA-L2LJt0*h^2V3T-1|t{9OB(?w|L!j)@vSOwLNV7|2l+ z!KM#B-TBRFzRc2|E#>G4zSH3Pnc1RW89@ZDv>c0j3`Q8@TEWrc45)I*9uh3_L|h6) z)pkj*pNcUmUatb!2-ijkiCav?;0q6tAN0LT;#bqS8kFc37a#=_c;?mIJ@E*1io513 z0_jK;Vo!PEtVW;^A7jE1b>i$6HKx{cJZe8l;1(uu9ZVz;$RECbgeb@6Dlz^xgTUoT z!35qrJqZH0V@}2h?nRxX9C3MxqeMq=ugK*vFw?dqI*g@3BQO_NN{YLf4qpQkI7kx6 zA0`_F!pV(l7{UFpx|zT$&c$h{Yg%8u&HFU#A2}L%jPTnJaj>4_l zV>fmlX(SFO61OepPTs&I&H(|ykUzY^9|*&yNd}398i_Y>?a?HbYb0Kec)F?w6^6~I z6LUb2*lfbES-7#lfa^1e3waAaZW{@B>oo#7X!}e_U_BGK>rp0l z{p!Q;+&PrMtvSx1J0XlIf5L~oR zB3mq-N&*M3yEs(aD%k%&d184PZGR5KjEn5gHfVXX{rL?G4z;dNXRk~9GdzH<{}CtN z!yO6*QZ=q8J~ocWBrmx*TMaJIL-z8TG$ni0^Z5|Jcz3;OB_2dJDGo2%8Srfg z_d;H5P~nXsO(7CNh!@0)4;a6xNSqd6#>dbLf%oZ38&M)rV?Cl)d2N}3xmi*GZ(sdNU*?$T9{IAI9+v1P!`s^N@eh)zz}U_axQd zm?_8T@0E~A(f$3wO|kp?62D!4FZSB>w{u3P`+EfR4PUZg^mhf+HT%iP!DZXuIKvzL z4e!-BkQh%>J&cQ2ou?3)_P* zY}Y_j4HkcfH5%|V1U(HHh1wYRZs75MHD)6PAp{DCU?)=e0*}eZuH>>%bv?fneNY5< znr8LTrt=;UoLW}VfI-52NVE997^}f_9FC1~8A!wZRil0N{9sUEZh`|347mlL@%=r6n zHQ_%N#zyzz|9Exx;qPxXG+IZ%ySn%sn7Q_PY&*}Np~vb-S7F;C{YTm)`7@DKs%2LY{^KvEw>=;r{T48~kPU4vLDc-}Fg(Vd00K4Id895tDzwP~x-B z-JgQ@VxrqH+P8+dyUv!osZhk0LeFH2ab8V1iG*5SsMK8Z=I@J2*9(h z_|lko&M#+l6p+|9EAgxcp0LED@T@BomF&^VhS*po@th6o6L^07!`1$>4UQ6=DzJg@ z#GxS{dscr8MBim2DiaBGL~Af*iHGPaLKK~2BQL1XScrZJ?b6kV+TnR)Ogx8UM6(=V z#!Lp!?_I+=3_MG@h&Xt@$ADY#9E;J}4R}5WE210lgnw>@S>76>-*lcE@$KB0IB#LM z0_1>_x6+>dY6{8PH9_B+fR83`#LPixv0_@~Gb97qvf$*OOTA*(k8d{DX@U?~T^ z4G?NN?@Lo$%{XjyWm8ODiIQ^YmZwA}>lZKvy1Lu6=}grBQh)9-_owD>h117szx0gR zpZj?hZ}cbGFRR&pIT`Ys<_`p=-lyJrwqKUcv(ulu#;XzKsgw50N9^K3pESVs*XJ#( z#aM`Xy<5Izi#c|;)Y*4SKQ>_+$h_PVD3HRP4 zaAEXU55VpblmXb3XMt820Qa0eEOf{PT#a~y(H z9izGLKoP}~XcTdsq8@4sv#-${9$s>i|80t%aFh=8zfEb=?#~P^ryl{{W~Tc|COxbM zNc6l}iez#jK7Pv&S(7M(tg3p@FcV)rmiB9!K(7#&Fq#f? z#VLTe3lq^T9TbH?-|0PKzj$Gi9R2OY|J8i3V2rZ|>{t%;zF;#L)O!29|$hM4T&Go z0{;N5ijU~SM7RHwi*XbT7I7{v#YC%(Rv3m9k$828*RExm6TU<(*3o)vE3dcG=`}qU z4pZx`t#Z9}55lWt0e^-ng3N3!6th$jjqD3Xul)+2f}Y)cnc8j{@6#maKqP8H5+FX# zX%H`AdiOBBGkI%meCKxk*VXT6ywUp3hgkZ@lo#{e57FZ|9pb|uc6`Xg)Vkt|^t9s4 z(_>ElGnrgln5FWHGbaylA09ZHPf_bA9*!sQG0s&h!J8319k&j2tDC_bfroQ(P)+fu zSV^#fAh3v&OrRuK`Hm`O=O-$~{5EFQl5=f%B-EeRFb;b zNsdxUnqno{^hpmz%ih?u9IZ;}h*iq0oxN3(EMH9g`=}&iVkgN|Nv6h5(pM!ZiJhdM zO0pz&5|>J{GFFmJpJXUpwono~UYNDBzbd6QRw=V~4p2!lr^LkN7?mU^c9JZWWK8TN z167iO*hvPdBqgzv9IKMl#!iy0l5B{b!pStevN-BqDZ_(^Qg-sWEZM zQAq~JPI9_Rk{3J4P?cmt>?CK%B(bj~=xP=6U3n%1p#Pv7)n$q&1(%WT8ZnSm9?pZ7 zK|}2nU5fLhu7i`}FpS~2n%`1hrnS6|5*&p>VMy?jx6`#aM{$XCPr6lU$D+@bpuBYt z5QWK?mt!q2qP=%;X{ofgm$kf(lGC)vdMrr5acORQA4zK%N2Svzx1YmUVGYtnB2JhM z1$3rr9AqR&jJKQnZ`0l$!7A>*zTAJ_j*?-qjxmLFq5ef5&_OuBEPRpTfupQ#*l*Vc zoax>MOH*9NdE3J2$q!x&e;i}2tE1#(vemRO9oS$9At4(7e7~fz_sn^R2TlYodN_xP zQ%rbh{Csqh>|5W++t46|bvEr(c7P<~jT|ltaLlG%>+Jl7zcrKjqPO#$)wMTiyhaUg~1U zKnrc0Z&`#t9Kd`Nya<$0U7}!AO+yyD2U(<-aJ6ml@$^$p2P8)(gy`e0bn!@U|ADm9 zqi{)J_`GoD%)U|_k7x*=79NaB(&!4c!viM+5X;w|ExdUsp*GWcA^HC;{dHUfzE=C? z$$JUWlf|o*d0aAOTIfAFZh7zGYUmZD?=WwYp=MWb9POz32F@HESW%`bfTi%CQh)b@$*gds>^7l#7w~^>p z+9%6edPm9e@Q@>Bz?hHS&oy8?(=AR9mLA0dEWQQ6cu;**5uE&=;lH3~f4--E;W+%? z!_)rcu+2M_h=9Bpmi7Kr_yPjHw$h%EJz;EnZFA85KOKCS3*B9*ZcW%9UgvM3HLsX+ zL*hfOAGZay&AVxUJsH*PO=Tkvg z^}{WiYMvv0bq4nhdXSd>60m~a2J;WJhwpzWrNW0Zm47+aOyzvEu7fO``zQsb5*@(| zW>NdWsdkiK-#7V)cueLTHSV7l8x&x zJFtDwjq58rT`8#@z6gPbWl7Ca>i zZ{o#LG457cej}U9{>*#Cp#?nPzo4xB~ediZ4;lDOz`^BGXY&~{MQ_xBV;F5G&B;&;~) z-PlD+c7UVw%D09O8sJ8RCM0C(X~h%ppf1FkIjMLmuE(00E|##m$@aIWm8NZn4wD~> zD=2Nw0PIKp9=HKp^D(qhtN+uz7~je+L0kbe?*2eVZ?(#L2rb&0;r<5y!Z*WyEEFD% zAh{Ly%C}aT392&@biGEK`H$I9TaSgke61D;#5xI7(C zH=H4f@%#e&@lwaLd`x^i2f-`_o-3g@x&qH0Y;xJ+33;-pER#jYmG!G|Z#6Vz2Clw4 zt#}U}w2?kd8(7aHR>VB8nB4p=(VlDgI3#2t+tU7waE{r+CIKO)rJWKNi5is6r|H`2$%hf#`Gpxg8FigG1XU& z2d%ymt-dWjYwP3(Q+;=7^|j}FI_|r2{n#uN`7Qw41;B2`gI44`t;l;Lij*HrMINt; z^mYux_0I>KbFO@=j!M-8Zkwsp`C6$bM3gE&m`dI9Jqe7jV;Cg;H)qT(te-bfZ~oBY zHF!|87FR$YXa#TP`H(I+jc=y1i&fbkOzbGu3!-QM)n>lQHe#UvA9=)hXRV2qNV%3$ zTmmK+qr61E>7HPX+!*PdDW>1Uk~;bFSEZPKUW(}_#z}9H)o6d@vmJiz9Aj?ZKAZyP z#2`O`CyqF1M=Cstdqb>zCj8^&FHa&rM1MZcBEh+Oh9BIQb$+d6!(b4rS(%#wCHzn!%jQc~YSrn4Jmf-$S zb>HaO#}H9Tq<6w(g1zw@HgcTRI4Ey3oKXgJEK=8BMx|xhnt?h<;5X2#%3H?DGFEwW zd9PF|<+<dFN0EK z$C7^9{9Ngy=35h$w}kOaw!D3V6P0%vycEgPSDUcBLF^GomcFl?iRkm6lL~z=BrNZ3 z7P-mNx4usz`lj_yg}yrymbYYN66Ha`8TX~9OaB1eO5~`A>m1I0xaTeRrSEKy$$+GP zySO~;KXNWN?e8_67t@XRuYU_$Nx6A(t^v*^#*^Ls>wh_c(rv(ZZ2A0`+`oS8C_b|o z?g{<=^$dR1jrXs=0M%uG|N7?>nWydUUw;oG+qEw7{p*)<;R)_vUtp>SC#uJ|e|-m> z%C`5f{~GEwCevC~`oHxF;|Kgc@n6sHefuWI@6Te6^RMOiGvMsP8Qo@n&*E3z$nS4L zZrbzvyR3n+CWe#!X~SSv4=)ZjKMylTF&s-Q$?*FWE<6Fh-(spKHoyNFL&uiie>?8~ zCw{N$9KScfMdVtSaRoG0E{+{hPwOeja@J1xy74iqfBxoDtWvuXz!31b!;r{xa_8&w~0>9_UFRSPLV3jTtsuw(<~_&2M#{j zc;d^Z>2P2V$jo%+??f+eqZ7%9wh@?_;kHsV3|p*m)(Tz?;aBb+v?;c^Wh1R1dYXH9 zwgjmB=2&gVy}G9QOL0-xmW9}1P1)*bS8&}zDo9oF_IXyWzd_pyARKIcE3U^GQnJ30 zh%Rx8eX#jl>l*UgN^qG3myR>ey!BLiJ(sT9bQ6{Ct;gnYoZi19t>qmkRjiWj04#_b zmT_R>2{xjNd>->)OO^(Q+^9*vaREJ|{alShO-Z|JX6G#1W*ieVRVK_G3bG*T1v{0af0S{?+A=TtOGKRKiA*R z8QZcSAK->u_M*ld4!h86M99Ub$~R9nW+VPV5~Cfr2@--6vs`Pl`WK1!cv1*YO2-Vo z!T<-b4=m7t;yVhpHoAj(o>O<1;{m@VLF-J#YaMFAW=!USGHq&7y7raZ< zo@k*qgz)(YQZpo}Uqd*Md(t3vq|Ip?(UhWo<3tF|BBxv%@Zzx3X1LQcMUaf{vhDt@ z+3Wj|nrZv$MVvH^6Beku@O>&YYk{~uM^(K&fK&fH+x-pM%m7>CAF&pYE*xVjFejR1->lo%H0yElG(C)EXFv z4a3B3=O}L5zhaioZ4(h*hX9)b@v13(BzJCErl+4IgMtb~nJIntTWr>BCg6gFV~PEO zS?(Eu!c5(epdm4VdN7!g)>RCr_{&m9o>51pZfwyA8Hs^2BbeEHMqnayyA2D)<(D5o z`A6|fruZe4dV!eTp}+ys`HZen#{@?vQ0sSD)@K=J~$Y<;q2@k+aEvyrVu)|3Nes|{kGD}9m zw$ArtmE^$`gsTWohzHHzS#}iSv%}snb|m5j4xFZs`J2mBO#8_2YbqZdQA5s?FmAkb z=6f?sqPNJ%y|R3AP25=YXz9fMP}}&XRR@WivW$kS%(B0-hI!m7Xg+h8*SYh+Xm7{; zr-1EueyRmW^Xr|T@Md8#V@kRM2PK026DecHHyhG1VzKdCUe>au2loq&XqW-nigOsf z*!qiYKW-edwV$sUbK>McT<>uaBqf?NBOwK-Kbi9W_V-lE%Nx;vTXh1SkI;pM;(u6` zWbmYDZx9Fc_}b9NkpGylz|kneI5V|v7`3DgJKB2q_G23z!qPc?J8egpdnQlOe0zX( z8=w-hjn_+>R8-``^l*B3t)8!VFb=LNE+0q1khqqJf))>B3JgqenT5Y>A6-WD_SXjy z>$neB$`HNHbVCEqW7bJ=GAS6v?Q$ywcHA+iBVeVSXkye!vF+tfN0@SfX#5-FWTxrW z5%1!Zpc!<0`@TfnV8^lX-*Nw0@hko*k zZ#YQ69O;Ypf!-Acz5dplqacLjf-?ec9tUJ;aC=~S6NMOyPr&cAe}S&_*+NG`s;>

yf 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%0A}MCsxWTY+BiMO%BNSn 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

>uE1F}QDViiwArV&6OJEOTI(f;&+%MK6aG#p|j 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 N2~0hK{~J%>zX84?q$~gc From 4d8f24d2ae77a9a0dcb6f44d5c5e7d678896f762 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 17 May 2015 00:44:45 +0200 Subject: [PATCH 035/252] Removed old sqf version. --- addons/medical/XEH_preInit.sqf | 1 - .../functions/fnc_handleDamage_woundsOld.sqf | 143 ------------------ 2 files changed, 144 deletions(-) delete mode 100644 addons/medical/functions/fnc_handleDamage_woundsOld.sqf diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index 4e77147a51..4f4ff5bc30 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -40,7 +40,6 @@ PREP(handleDamage_caching); PREP(handleDamage_fractures); PREP(handleDamage_internalInjuries); PREP(handleDamage_wounds); -PREP(handleDamage_woundsOld); PREP(handleUnitVitals); PREP(handleKilled); PREP(handleLocal); diff --git a/addons/medical/functions/fnc_handleDamage_woundsOld.sqf b/addons/medical/functions/fnc_handleDamage_woundsOld.sqf deleted file mode 100644 index 0b1f169a8b..0000000000 --- a/addons/medical/functions/fnc_handleDamage_woundsOld.sqf +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Author: Glowbal - * Handling of the open wounds & injuries upon the handleDamage eventhandler. - * - * Arguments: - * 0: Unit That Was Hit - * 1: Name Of Hit Selection - * 2: Amount Of Damage - * 3: Shooter or source of the damage - * 4: Type of the damage done - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -private ["_unit", "_selectionName", "_damage", "_typeOfProjectile", "_typeOfDamage", "_bodyPartn", "_injuryTypeInfo", "_allInjuriesForDamageType", "_allPossibleInjuries", "_highestPossibleDamage", "_highestPossibleSpot", "_minDamage", "_openWounds", "_woundID", "_toAddInjury", "_painToAdd", "_bloodLoss", "_bodyPartNToAdd", "_classType", "_damageLevels", "_foundIndex", "_i", "_injury", "_maxDamage", "_pain", "_painLevel", "_selections", "_toAddClassID", "_woundsCreated"]; -_unit = _this select 0; -_selectionName = _this select 1; -_damage = _this select 2; -_typeOfProjectile = _this select 3; -_typeOfDamage = _this select 4; - -// Convert the selectionName to a number and ensure it is a valid selection. -_bodyPartn = [_selectionName] call FUNC(selectionNameToNumber); -if (_bodyPartn < 0) exitwith {}; - -// Get the injury type information. Format: [typeDamage thresholds, selectionSpecific, woundTypes] -_injuryTypeInfo = missionNamespace getvariable [format[QGVAR(woundInjuryType_%1), _typeOfDamage],[[], false, []]]; - -// This are the available injuries for this damage type. Format [[classtype, selections, bloodloss, minimalDamage, pain], ..] -_allInjuriesForDamageType = _injuryTypeInfo select 2; -// It appears we are dealing with an unknown type of damage. - -if (count _allInjuriesForDamageType == 0) then { - // grabbing the configuration for unknown damage type - _injuryTypeInfo = missionNamespace getvariable [QGVAR(woundInjuryType_unknown),[[], false, []]]; - _allInjuriesForDamageType = _injuryTypeInfo select 2; -}; - -// find the available injuries for this damage type and damage amount -_highestPossibleSpot = -1; -_highestPossibleDamage = -1; -_allPossibleInjuries = []; -{ - _damageLevels = _x select 4; - _minDamage = _damageLevels select 0; - _maxDamage = _damageLevels select 1; - - // Check if the damage is higher as the min damage for the specific injury - if (_damage >= _minDamage && {_damage <= _maxDamage || _maxDamage < 0}) then { - //_classType = _x select 0; - _selections = _x select 1; - //_bloodLoss = _x select 2; - //_pain = _x select 3; - - // Check if the injury can be applied to the given selection name - if ("All" in _selections || _selectionName in _selections) then { - - // Find the wound which has the highest minimal damage, so we can use this later on for adding the correct injuries - if (_minDamage > _highestPossibleDamage) then { - _highestPossibleSpot = _foreachIndex; - _highestPossibleDamage = _minDamage; - }; - - // Store the valid possible injury for the damage type, damage amount and selection - _allPossibleInjuries pushback _x; - }; - }; -}foreach _allInjuriesForDamageType; - -// No possible wounds available for this damage type or damage amount. -if (_highestPossibleSpot < 0) exitwith {}; - -// Administration for open wounds and ids -_openWounds = _unit getvariable[QGVAR(openWounds), []]; -_woundID = _unit getvariable[QGVAR(lastUniqueWoundID), 1]; - -_painToAdd = 0; -_woundsCreated = []; -{ - if (_x select 0 <= _damage) exitwith { - for "_i" from 0 to (1+ floor(random(_x select 1)-1)) /* step +1 */ do { - - // Find the injury we are going to add. Format [ classID, allowdSelections, bloodloss, painOfInjury, minimalDamage] - _toAddInjury = if (random(1) >= 0.85) then {_allInjuriesForDamageType select _highestPossibleSpot} else {_allPossibleInjuries select (floor(random (count _allPossibleInjuries)));}; - _toAddClassID = _toAddInjury select 0; - _foundIndex = -1; - - _bodyPartNToAdd = if (_injuryTypeInfo select 1) then {_bodyPartn} else {floor(random(6))}; - // If the injury type is selection part specific, we will check if one of those injury types already exists and find the spot for it.. - if ((_injuryTypeInfo select 1)) then { - { - // Check if we have an id of the given class on the given bodypart already - if (_x select 1 == _toAddClassID && {_x select 2 == _bodyPartNToAdd}) exitwith { - _foundIndex = _foreachIndex; - }; - }foreach _openWounds; - }; - - _injury = []; - if (_foundIndex < 0) then { - // Create a new injury. Format [ID, classID, bodypart, percentage treated, bloodloss rate] - _injury = [_woundID, _toAddInjury select 0, _bodyPartNToAdd, 1, _toAddInjury select 2]; - - // Since it is a new injury, we will have to add it to the open wounds array to store it - _openWounds pushback _injury; - - // New injuries will also increase the wound ID - _woundID = _woundID + 1; - } else { - // We already have one of these, so we are just going to increase the number that we have of it with a new one. - _injury = _openWounds select _foundIndex; - _injury set [3, (_injury select 3) + 1]; - }; - // Store the injury so we can process it later correctly. - _woundsCreated pushback _injury; - - // Collect the pain that is caused by this injury - _painToAdd = _painToAdd + (_toAddInjury select 3); - }; - }; -}foreach (_injuryTypeInfo select 0); // foreach damage thresholds - -_unit setvariable [QGVAR(openWounds), _openWounds, !USE_WOUND_EVENT_SYNC]; - -// Only update if new wounds have been created -if (count _woundsCreated > 0) then { -// _unit setvariable [QGVAR(lastUniqueWoundID), _woundID, true]; -}; - -if (USE_WOUND_EVENT_SYNC) then { - // Broadcast the new injuries across the net in parts. One broadcast per injury. Prevents having to broadcast one massive array of injuries. - { - // ["medical_propagateWound", [_unit, _x]] call EFUNC(common,globalEvent); - }foreach _woundsCreated; -}; - -_painLevel = _unit getvariable [QGVAR(pain), 0]; -_unit setvariable [QGVAR(pain), _painLevel + _painToAdd]; \ No newline at end of file From 556b9ad7d8af7719fd6ee7eec4c4a3b72f9aab2d Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 17 May 2015 00:47:42 +0200 Subject: [PATCH 036/252] removed debug prints --- .../medical/functions/fnc_parseConfigForInjuries.sqf | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/addons/medical/functions/fnc_parseConfigForInjuries.sqf b/addons/medical/functions/fnc_parseConfigForInjuries.sqf index 9a46e26321..1b2db7c278 100644 --- a/addons/medical/functions/fnc_parseConfigForInjuries.sqf +++ b/addons/medical/functions/fnc_parseConfigForInjuries.sqf @@ -132,9 +132,7 @@ _selectionSpecific = getNumber(_damageTypesConfig >> "selectionSpecific"); }; }foreach _typeThresholds; - _extensionInput = format ["addDamageType,%1,%2,%3,%4,%5", _type, GVAR(minLethalDamages) select _foreachIndex, _minDamageThresholds, _amountThresholds, _selectionSpecificType]; - diag_log format["Calling extension with input: %1", _extensionInput]; - diag_log format ["Extension return: %1", "ace_medical" callExtension _extensionInput]; + "ace_medical" callExtension format ["addDamageType,%1,%2,%3,%4,%5", _type, GVAR(minLethalDamages) select _foreachIndex, _minDamageThresholds, _amountThresholds, _selectionSpecificType]; }foreach _allFoundDamageTypes; @@ -169,11 +167,9 @@ _selectionSpecific = getNumber(_damageTypesConfig >> "selectionSpecific"); }; }foreach _causesArray; _classDisplayName = _x select 6; - _extensionInput = format["addInjuryType,%1,%2,%3,%4,%5,%6,%7,%8,%9", _classID, _className, _allowedSelections, _bloodLoss, _pain, _minDamage, _maxDamage, _causes, _classDisplayName]; - diag_log format["Calling extension with input: %1", _extensionInput]; - diag_log format ["Extension return: %1", "ace_medical" callExtension _extensionInput]; + "ace_medical" callExtension format["addInjuryType,%1,%2,%3,%4,%5,%6,%7,%8,%9", _classID, _className, _allowedSelections, _bloodLoss, _pain, _minDamage, _maxDamage, _causes, _classDisplayName]; }foreach _allWoundClasses; -diag_log format["Extension configComplete: %1", "ace_medical" callExtension "ConfigComplete"]; +"ace_medical" callExtension "ConfigComplete"; From 4bebedf73e179c8c5755b56b433ba378f916f392 Mon Sep 17 00:00:00 2001 From: gienkov Date: Sun, 17 May 2015 00:53:55 +0200 Subject: [PATCH 037/252] Stringtable Zeus and View Distance * Stringtabled ACE Zeus module * Stringtabled ACE View Distance * Lowered default view distance to 1500 because default value (10000) makes enormous FPS drop at start for low end machines --- addons/viewdistance/ACE_Settings.hpp | 34 +++--- addons/viewdistance/CfgVehicles.hpp | 14 ++- .../functions/fnc_changeViewDistance.sqf | 6 +- addons/viewdistance/stringtable.xml | 103 ++++++++++++++++++ addons/zeus/ACE_Settings.hpp | 2 +- addons/zeus/CfgFactionClasses.hpp | 2 +- addons/zeus/CfgVehicles.hpp | 30 ++--- addons/zeus/stringtable.xml | 71 ++++++++++++ 8 files changed, 219 insertions(+), 43 deletions(-) create mode 100644 addons/viewdistance/stringtable.xml create mode 100644 addons/zeus/stringtable.xml diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp index a3460cddf3..b56bcd2703 100644 --- a/addons/viewdistance/ACE_Settings.hpp +++ b/addons/viewdistance/ACE_Settings.hpp @@ -2,47 +2,45 @@ class ACE_Settings { class GVAR(enabled) { typeName = "BOOL"; value = 1; - displayName = "Enable ACE viewdistance"; - description = "Enables ACE viewdistance module."; + displayName = "$STR_ACE_ViewDistance_enabled_DisplayName"; + description = "$STR_ACE_ViewDistance_enabled_Description"; }; class GVAR(viewDistanceOnFoot) { typeName = "SCALAR"; isClientSettable = 1; - value = 11; // index, NOT value // Can set it to client's actual viewdistance in the init function once ACE_Settings supports numbers (if ever). + value = 0; // index, NOT value // Can set it to client's actual viewdistance in the init function once ACE_Settings supports numbers (if ever). values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf - displayName = "Client View Distance (On Foot)"; - description = "Changes in game view distance when the player is on foot."; + displayName = "$STR_ACE_ViewDistance_onFoot_DisplayName"; + description = "$STR_ACE_ViewDistance_onFoot_Description"; }; class GVAR(viewDistanceLandVehicle) { typeName = "SCALAR"; isClientSettable = 1; - value = 11; // index, NOT value + value = 0; // index, NOT value values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf - displayName = "Client View Distance (Land Vehicle)"; - description = "Changes in game view distance when the player is in a land vehicle."; + displayName = "$STR_ACE_ViewDistance_landVehicle_DisplayName"; + description = "$STR_ACE_ViewDistance_landVehicle_Description"; }; class GVAR(viewDistanceAirVehicle) { typeName = "SCALAR"; isClientSettable = 1; - value = 11; // index, NOT value + value = 0; // index, NOT value values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf - displayName = "Client View Distance (Air Vehicle)"; - description = "Changes in game view distance when the player is in an air vehicle."; + displayName = "$STR_ACE_ViewDistance_airVehicle_DisplayName"; + description = "$STR_ACE_ViewDistance_airVehicle_Description"; }; class GVAR(limitViewDistance) { typeName = "SCALAR"; value = 10000; // Value, NOT index. 10000 is the maximum in A3 - displayName = "View Distance Limit"; - description = "Limit for client's view distance set here and can overridden by module"; + displayName = "$STR_ACE_ViewDistance_limit_DisplayName"; + description = "$STR_ACE_ViewDistance_limit_setting"; }; class GVAR(objectViewDistanceCoeff) { typeName = "SCALAR"; isClientSettable = 1; value = 0; // index. Actual coefficient is given by functions/fnc_returnObjectCoeff.sqf - values[] = {"Off","Very Low","Low","Medium","High","Very High"}; - displayName = "Dynamic Object View Distance"; - description = "Sets the object view distance as a coefficient of the view distance."; + values[] = {"$STR_ACE_ViewDistance_object_off","$STR_ACE_ViewDistance_object_verylow","$STR_ACE_ViewDistance_object_low","$STR_ACE_ViewDistance_object_medium","$STR_ACE_ViewDistance_object_high","$STR_ACE_ViewDistance_object_veryhigh"}; + displayName = "$STR_ACE_ViewDistance_object_DisplayName"; + description = "$STR_ACE_ViewDistance_object_Description"; }; }; - -// To do: include string table style displayName & description. \ No newline at end of file diff --git a/addons/viewdistance/CfgVehicles.hpp b/addons/viewdistance/CfgVehicles.hpp index 63a50cf099..cda9d4e332 100644 --- a/addons/viewdistance/CfgVehicles.hpp +++ b/addons/viewdistance/CfgVehicles.hpp @@ -4,23 +4,27 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; function = QUOTE(DFUNC(initModule)); - displayName = "View Distance Limiter"; + displayName = "$STR_ACE_ViewDistance_Module_DisplayName"; scope = 2; isGlobal = 1; //icon = ""; // needs an icon class Arguments { class moduleViewDistanceEnabled { - displayName = "Enable ACE viewdistance"; - description = "Enables ACE viewdistance"; + displayName = "$STR_ACE_ViewDistance_enabled_DisplayName"; + description = "$STR_ACE_ViewDistance_enabled_Description"; typeName = "BOOL"; defaultValue = 1; }; class moduleViewDistanceLimit { - displayName = "View Distance Limit"; - description = "Sets the limit for how high clients can raise their view distance (<= 10000)"; + displayName = "$STR_ACE_ViewDistance_limit_DisplayName"; + description = "$STR_ACE_ViewDistance_limit_Description"; typeName = "NUMBER"; defaultValue = 10000; }; + }; + class ModuleDescription { + description = "$STR_ACE_ViewDistance_Module_Description"; + sync[] = {}; }; }; }; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index 7c70a612eb..7d5f8150dc 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -28,13 +28,13 @@ _view_distance_limit = GVAR(limitViewDistance); // Grab the limit if (_show_prompt) then { _text = if (_new_view_distance <= _view_distance_limit) then { - format ["View Distance: %1m",str(_new_view_distance)]; + format ["%1 %2m", (localize "STR_ACE_ViewDistance_infotext"), str(_new_view_distance)]; } else { - format ["That option is invalid! The limit is %1m",str(_view_distance_limit)]; + format ["%1 %2m", (localize "STR_ACE_ViewDistance_invalid"), str(_view_distance_limit)]; }; if (GVAR(objectViewDistanceCoeff) > 0) then { - _text = _text + format ["
Object View Distance is %1%2",str(_object_view_distance_coeff * 100),"%"]; + _text = _text + format ["
%1 %2%3", (localize "STR_ACE_ViewDistance_objectinfotext"), str(_object_view_distance_coeff * 100),"%"]; }; [parseText _text,2] call EFUNC(common,displayTextStructured); }; diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml new file mode 100644 index 0000000000..b43f24e4d5 --- /dev/null +++ b/addons/viewdistance/stringtable.xml @@ -0,0 +1,103 @@ + + + + + + View Distance Limiter + Ogranicznik zasięgu widzenia + + + Allows limiting maximum view distance that can be set by players. + Pozwala ustawić maksymalny limit zasięgu widzenia. + + + Enable ACE viewdistance + Wł. zasięg widzenia ACE + + + Enables ACE viewdistance + Aktywuje możliwość zmiany zasięgu widzenia w menu ustawień ACE + + + View Distance Limit + Limit zas. widzenia + + + Sets the limit for how high clients can raise their view distance (up to 10000) + Ustawia maksymalny limit zasięgu widzenia jaki mogą ustawić gracze (do 10000) + + + Limit for client's view distance set here and can overridden by module + Limit zasięgu widzenia jest ustawiany tutaj i może zostać nadpisany poprzez moduł + + + Client View Distance (On Foot) + Zasięg widzenia (piechota) + + + Changes in game view distance when the player is on foot. + Zmienia zasięg widzenia kiedy gracz porusza się na piechotę. + + + Client View Distance (Land Vehicle) + Zasięg widzenia (pojazdy naziemne) + + + Changes in game view distance when the player is in a land vehicle. + Zmienia zasięg widzenia kiedy gracz porusza się pojazdami naziemnymi. + + + Client View Distance (Air Vehicle) + Zasięg widzenia (pojazdy lotnicze) + + + Changes in game view distance when the player is in an air vehicle. + Zmienia zasięg widzenia kiedy gracz porusza się pojazdami lotniczymi. + + + Dynamic Object View Distance + Dynamiczny zasięg rysowania obiektów + + + Sets the object view distance as a coefficient of the view distance. + Zmienia zasięg rysowania obiektów jako mnożnik zasięgu widzenia. + + + Off + Wyłącz + + + Very Low + Bardzo niski + + + Low + Niski + + + Medium + Średni + + + High + Wysoki + + + Very High + Bardzo wysoki + + + View Distance: + Zasięg widzenia: + + + Object View Distance is + Zasięg widzenia obiektów wynosi + + + That option is invalid! The limit is + Ta opcja jest nieprawidłowa! Limit wynosi + + + + diff --git a/addons/zeus/ACE_Settings.hpp b/addons/zeus/ACE_Settings.hpp index 536790ba26..2630c72dff 100644 --- a/addons/zeus/ACE_Settings.hpp +++ b/addons/zeus/ACE_Settings.hpp @@ -18,6 +18,6 @@ class ACE_Settings { class GVAR(revealMines) { typeName = "SCALAR"; value = 0; - values[] = {"Disabled", "Partially", "Fully"}; + values[] = {"$STR_ACE_Zeus_revealMines_disable", "$STR_ACE_Zeus_revealMines_partial", "$STR_ACE_Zeus_revealMines_full"}; }; }; diff --git a/addons/zeus/CfgFactionClasses.hpp b/addons/zeus/CfgFactionClasses.hpp index bf34546727..da8e845a43 100644 --- a/addons/zeus/CfgFactionClasses.hpp +++ b/addons/zeus/CfgFactionClasses.hpp @@ -1,6 +1,6 @@ class CfgFactionClasses { class NO_CATEGORY; class ADDON: NO_CATEGORY { - displayName = "ACE Zeus"; + displayName = "$STR_ACE_Zeus_category"; }; }; diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp index 7d145c8421..cb7346e18d 100644 --- a/addons/zeus/CfgVehicles.hpp +++ b/addons/zeus/CfgVehicles.hpp @@ -5,7 +5,7 @@ class CfgVehicles { class GVAR(moduleZeusSettings): ACE_Module { scope = 2; - displayName = "Zeus Settings [ACE]"; + displayName = "$STR_ACE_Zeus_Module_DisplayName"; //icon = QUOTE(PATHTOF(iconGoesHere)); category = "ACE_zeus"; function = QUOTE(DFUNC(moduleZeusSettings)); @@ -15,52 +15,52 @@ class CfgVehicles { author = "SilentSpike"; class Arguments { class zeusAscension { - displayName = "Ascension Messages"; - description = "Display global popup messages when a player is assigned as Zeus."; + displayName = "$STR_ACE_Zeus_ascension_DisplayName"; + description = "$STR_ACE_Zeus_ascension_Description"; typeName = "BOOL"; defaultValue = 0; }; class zeusBird { - displayName = "Zeus Eagle"; - description = "Spawn an eagle that follows the Zeus camera."; + displayName = "$STR_ACE_Zeus_bird_DisplayName"; + description = "$STR_ACE_Zeus_bird_Description"; typeName = "BOOL"; defaultValue = 0; }; class remoteWind { - displayName = "Wind Sounds"; - description = "Play wind sounds when Zeus remote controls a unit."; + displayName = "$STR_ACE_Zeus_remoteWind_DisplayName"; + description = "$STR_ACE_Zeus_remoteWind_Description"; typeName = "BOOL"; defaultValue = 0; }; class radioOrdnance { - displayName = "Ordnance Warning"; - description = "Play a radio warning when Zeus uses ordnance."; + displayName = "$STR_ACE_Zeus_radioOrdnance_DisplayName"; + description = "$STR_ACE_Zeus_radioOrdnance_Description"; typeName = "BOOL"; defaultValue = 0; }; class revealMines { - displayName = "Reveal Mines"; - description = "Reveal mines to allies and/or place map markers."; + displayName = "$STR_ACE_Zeus_revealMines_DisplayName"; + description = "$STR_ACE_Zeus_revealMines_Description"; typeName = "NUMBER"; class values { class disable { - name = "Disabled"; + name = "$STR_ACE_Zeus_revealMines_disable"; value = 0; default = 1; }; class partial { - name = "Reveal to Allies"; + name = "$STR_ACE_Zeus_revealMines_partial"; value = 1; }; class full { - name = "Allies + Map Markers"; + name = "$STR_ACE_Zeus_revealMines_full"; value = 2; }; }; }; }; class ModuleDescription { - description = "Provides control over various aspects of Zeus."; + description = "$STR_ACE_Zeus_Module_Description"; sync[] = {}; }; }; diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml new file mode 100644 index 0000000000..5fa8215294 --- /dev/null +++ b/addons/zeus/stringtable.xml @@ -0,0 +1,71 @@ + + + + + + Zeus Settings [ACE] + Ustawienia Zeusa [ACE] + + + Provides control over various aspects of Zeus. + Pozwala kontrolować różne aspekty Zeusa. + + + Ascension Messages + Wiad. o nowym Zeusie + + + Display global popup messages when a player is assigned as Zeus. + Wyświetlaj globalną wiadomość kiedy gracz zostanie przydzielony jako Zeus + + + Zeus Eagle + Orzeł Zeusa + + + Spawn an eagle that follows the Zeus camera. + Spawnuj orła, który podąrza za kamerą Zeusa. + + + Wind Sounds + Dźwięki wiatru + + + Play wind sounds when Zeus remote controls a unit. + Odtwarzaj dźwięki wiatru kiedy Zeus zdalnie kontroluje jednostkę. + + + Ordnance Warning + Ostrz. o ostrzale arty. + + + Play a radio warning when Zeus uses ordnance. + Odtwarzaj wiadomość radiową kiedy Zeus używa artylerii. + + + Reveal Mines + Pokazuj miny + + + Reveal mines to allies and/or place map markers. + Pokazuj znaczniki min dla sojuszników i/lub twórz markery na mapie w miejscu min. + + + Disabled + Wyłączone + + + Reveal to Allies + Pokaż dla sojuszników + + + Allies + Map Markers + Sojusznicy + markery na mapie + + + ACE Zeus + ACE Zeus + + + + From 2544cdef4ae78487d0a51a2fb00b68fa204c5cb4 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 17 May 2015 09:48:59 +0200 Subject: [PATCH 038/252] Clean up --- extensions/medical/handleDamage.cpp | 9 +------ extensions/medical/handleDamage.h | 41 +++++++++++++++++++---------- extensions/medical/medical.cpp | 3 +-- 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/extensions/medical/handleDamage.cpp b/extensions/medical/handleDamage.cpp index f6756072d7..0cd31dd273 100644 --- a/extensions/medical/handleDamage.cpp +++ b/extensions/medical/handleDamage.cpp @@ -50,7 +50,6 @@ namespace ace { return stream.str(); } - stream << ""; return stream.str(); } @@ -152,8 +151,6 @@ namespace ace { { if (input.size() == 9) { - // TODO parse arrays from string input - int ID = std::stod(input[0]); std::string className = input[1]; std::vector allowedSelections = inputToVector(input[2]); @@ -186,10 +183,8 @@ namespace ace { return "failed"; } - std::string handleDamage::FinalizeDefinitions() + void handleDamage::FinalizeDefinitions() { - std::stringstream outputstream; - // We are finding all possible injuries for a specific damage type here, so we don't have to figure that out at a later stage. for each (std::shared_ptr damageType in damageTypes) { @@ -202,9 +197,7 @@ namespace ace { damageType->possibleInjuries.push_back(injuryType); } } - outputstream << " ---- For: " << damageType->typeName << " Added: " << damageType->possibleInjuries.size() << " --- "; } - return outputstream.str(); } int handleDamage::SelectionToNumber(const std::string& selectionName) diff --git a/extensions/medical/handleDamage.h b/extensions/medical/handleDamage.h index 650f677445..3b2cd739c8 100644 --- a/extensions/medical/handleDamage.h +++ b/extensions/medical/handleDamage.h @@ -24,42 +24,55 @@ namespace ace { ~handleDamage(); /** + * Find new open wounds from advanced medical based upon the received damage. * + * @param selectionName A string representation of the bodypart (for example: leg_r) + * @param amountOfDamage The damage received + * @param typeOfDamage The type of the damage received + * @param woundID latest wound ID + * @return SQF string containing _woundsCreated and _painAdded. */ std::string HandleDamageWounds(const std::string& selectionName, double amountOfDamage, const std::string& typeOfDamage, int woundID); + /** + * Find new open wounds from advanced medical based upon the received damage. + * + * @param typeOfDamage The type of the damage received + * @param amountOfDamage The damage received + * @param selection A number representation of the bodypart. Number from 0 to 6. + * @param woundID latest wound ID + * @return New open wounds. + */ std::vector GetInjuryInfoFor(const std::string& typeOfDamage, double amountOfDamage, int selection, int woundID); /** - * + * Add a new damage type from extension input parameters + * + * @param sqfDamageTypeDefinition + * @return String with result of addition: ADDED [parameters] or FAILED */ std::string AddDamageType(const std::vector& sqfDamageTypeDefinition); /** + * Add a new injury type from extension input parameters * + * @param sqfDamageTypeDefinition + * @return String with result of addition: ADDED [parameters] or FAILED */ std::string AddInjuryType(const std::vector& sqfInjuryDefinition); /** + * Convert a selectionName to a number * - */ - //static std::string SetInjuryTypeData(const std::string& data); - - - /** - * + * @param selectionName + * @return number of selection */ int SelectionToNumber(const std::string& selectionName); /** - * + * Lets the system know that all data has been added */ - //static std::vector> GetInjuryInfoFor(const std::string& damageType); - - /** - * - */ - std::string FinalizeDefinitions(); + void FinalizeDefinitions(); private: handleDamage(); diff --git a/extensions/medical/medical.cpp b/extensions/medical/medical.cpp index 9a93060b2e..4f25472e26 100644 --- a/extensions/medical/medical.cpp +++ b/extensions/medical/medical.cpp @@ -35,7 +35,6 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) { } else { - std::string returnValue = ""; std::vector arguments = parseExtensionInput(function); if (arguments.size() > 0) @@ -59,7 +58,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) { } } else if (command == "ConfigComplete") { - returnValue = ace::medical::handleDamage::GetInstance().FinalizeDefinitions(); + ace::medical::handleDamage::GetInstance().FinalizeDefinitions(); } } strncpy(output, returnValue.c_str(), outputSize); From 2b91d398f0f7d5cff4deb55505a62326173bbfce Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 17 May 2015 09:51:34 +0200 Subject: [PATCH 039/252] added extension to config --- addons/medical/config.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index cd0fe0e66c..f86f5d166e 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -21,3 +21,7 @@ class CfgPatches { #include "ACE_Settings.hpp" #include "UI\RscTitles.hpp" #include "UI\triagecard.hpp" + +class ACE_Extensions { + extensions[] += {"ace_medical"}; +}; From c9116456937b463b135cde9261bd27e240309e74 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 17 May 2015 09:55:38 +0200 Subject: [PATCH 040/252] added new version of dll --- ace_medical.dll | Bin 225280 -> 223232 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ace_medical.dll b/ace_medical.dll index 98682d89b99b4fecc4731e5c0d6007bf2130ddcd..475a1e3fbbdc19876090912c596bec42e1ca636d 100644 GIT binary patch delta 58107 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%0DiFR5T?9(xqAljscEK-B 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 delta 59298 zcma&O2|!cF6EL1#0)#ureIp=(fP#Rcc%TwQ1sg;Icw)WMc%gzvJy0Vm#?)igwe_yn zTD4xN;8_p~sCc#3V$~K~e|9ZY(OQd@ns4^K1l0EXe}CJ&?3QUY?cl|jMPha<0&;{t@&X2D`zvgZkVm^l1i5+Tkfejy96j4fwpFtu0dl^hfN{LmL+)gLV{(X zxQ{uBkcDF>b235}i<=ja^|D0iCKyJdT<1(4%VbzJg*3?q<6tRCwhF^9%}AbAIKFH~ z5~jG3(^d|+d_K8sH3%=BLfoy-xzmS&47wy|ZIgVaO@i*K($IzN`jGr?JyP25L*TpU zGgoVkL?fxRkgyZ?$yA$Qy!I^dS>WlHdzROg7L?|d);q8v2P6`f${%~3kc91WB3Es? zV=s}^aK=P>21xJi2dY~Bh~lK-PNbi09Ukz2^j_jc671aET>z)v!w15Km(KFi{Vzb6 zCri2p9RY=aW=CC+N!S@jsDF|_j`GJr{`edoKpE#mtr;xe! zI{fj{B6EiesLk~dGr3+-QKhJ8T#DsNHsCI~E%#B0;3HLvBO=)IF35Ys0>p{b0+|Ns zQ@64x&}+3wxwT5MRitdZBau`onz?SX=X)g*U0&_7(mYGuRn~bTNpXzAyYG;EM>pI& zg=}^_j+OaEgWEhZ$x&UUs217Wt|bGUO>!KsQXCh-`)h&iSkUfPId-x#=N373Rw;Ih zl#7AVB*(JdT#ma&IWD|U&N_F-ooh*>vn%$WN@OnM?C$T9NHUn0Mj|of*%JRfUWB+r z;gR2yN|!X;`xxoR3NBaS)bMvCtDF&fOR91WxXq@yCbBYIk3>nH+G>_E8?@>||W? znAJ_=42lhxisTm$3FHTXJhNTs8i_=cqhgB>wN~r)?OWBJP9;qqU*h@Skc2=Nl08XE zN<9bQ-8DrvUN%TN`vXufPw#LXK8+-Mr{VH+vcORo`MUmv4}wW`v0S4pa`yAj-~HwUhgIljGd z<}^~`8;tL4CUw4T14=eaB;9%@fCI^s?+Sshgx&nPn?v-e4Xkl93G@rWQ?`+X{sCwp z$?L|;@n_4ga1ChGT`i1Fgt6DT8iq(!?5C~5tm#u3Q*Aa5 zj6JDywJ?csfD*ZX+mMx%i_rrrzAXlaa4|{&uLC>@^$Wl~wvtr8ws_kAhcv317HNjI zN^^Kii!{OXzoePJi6pdb8bk$@O1DIkji24QUuxg6k$n#sd}Ol&_8D1-6CxnxzbkL^>9tjgjz z_zSjS4_O!Jg55qQ`vMQ)$}uD}$k%%B7-+Y0H28h8*wGbVpGGzZeT2JDCn4>E@#OVH z*=}mvQ8xsQu2S4>1UCrNs$KvNOUVXRNhC@YdqByL?Z)8|O42Vl93Qw&W(0dn4WmJs z*9CjwbGyi);Lf=Fb@Fp?Dz3jqqT2Vu2daW zB{?LsQ!**-KkrRCcJa)A|CB`Xq73JDV9vaAr9Wy=z~mJMvBTwA4BD^gkkB`j^Q8cUcR_+#U`Hn<$djn zkCPzieopyD&#YT1TYGj9C`~=PvZSSF_I>`{vw<_nzL@v%`r*VjHqcfN)+x@{Zbsr` zceewxcyqeOJpGS8`I1x7p*Sj0=u<7M%i?UU;&tDct=}43>bCaj3m|9Nobru6m9|p0 z_9-7IO?}elxAdu^*Smf4BM-aC@h39`J?xt)%vjGXQ@_$55?$AigYQ9$Z>XWilNQ-p z)v)#$85kFel7xP(KW6GzBCq>KzxF(CsoUDGaX`*IIprJu`mmL3tRfN zsK>kg3dJ=uNL;rC_==XC?B*}JKQAx+jBE%B&7cD+V1q!Jt1O!NTAimQ_T58T$<#ph z?Z3%fv}9WMOuSJ?s=ND&)PBS=-p*<2QeowKp^%|m8%?r`b0t)G*tb&HaNk_Hx0h6~wZ4C){oYiR&HMQCR?!V*wQmvtiHojDI_` z7w`?+xGIYnm^xz*+*R!6a#Gkk0)Mugu-+YU-f~g`Uy9|#Jt4Gx4>49Y65Fbn6}V)G zcEwmgBD!P2UHg$033g7uFK89tMgzlhvOt*6(ger$2f?^nXU|#1<`w*#*P23@?}tVZ`98CyqkH}>SP|TESUvX5CfFjxB!4$Y)tfpr-Q<+{fm(>;(DdQU|_FcIn)>MA~fiztP+ZX>35k+ zQWePwwckr5Wp!pfd8TA$#}{ROx#p|_V7fld@ntj3SqYTGs?FQ$!_9g4cJMq;nD@lm1XPF^Pw=$RvtW0FyS0Nm5eB-Y;)SBuicja&&s3 zsO5q@1duMdIldYM`2osdW!fe#$Wr9K~DXvar8 z3z8kW)W+y5Y%VMZkX(Viys$$THGfhrk@e5+wV=LLPxmM@*s?%TUAASyxWzBrW73$d zQ(^wz1L8L{rg|#b+dnWL=3Hl?OI;=^>`L&mym=+tG7y^WrL7WlR+}#*g|&TeiC zyR>(N%QA6Ozs+q1=N2S#vo=}owkhOBveQt>J3M429@%g6@aH_fee_lbQ@BJHx`oTk z_wgarD>mq^DOu705;q{!w$xzI2q+aCVKI$Yt_ z#xdqf{d>0TbQ+NkRN|&2q8hjy-6Hn}_6e*ItPG6nPcRlG8za6eS(h@S`K4BnK7+#0 zc`|j7yERB47^k6}tQq9#`Ab(2zS2GZue`1Lf|A#;m~URjlRKBoN%^3WZOcu(a~bD7 zy5)Vm@IJVlB&76!fO}zzyY*K_&QC6o9Vux;C(Z-T6;gq@L&0bmIK2X#iqHsf5~=n2 zeb8n)GYsV>F9#wfg@{65z>Co9Hem9+D42Zj9Fmx-==}h)2Carx$_?!XfJ}z=HIz+; zb_&X(p&jNFU}$USlIqkj^fh^&8ia4g63@Z>C24RFUK&fL3=Zkg6ay1ttKJEt0PbxS zc)R~L$S>!R^MlivnY4w>7@)OM$M7K#IdJODMrysD z%gz?w;DYkvb3stp7UX>ZQKzEE+uF!ezz>Gi_Y8bh88=xm1=W~3Nq zB(oWy^Saaru)mA%lj5)}zX?IzVK?=uHQEb33WqUWUuk@`gVvIRt@Xod;x84Z*6D^Z zhZWC3HXsYLE_-QKnA)ftD2p$H*1+lJjR%fl)d1JNM6-s5De6u^7yV%G$d>}-uyh0$ zaM*){uwh2b-)4o12Hk}lEWdCV)HJ&eDJ4E6@thxX=sT<~epmy1H4I@(+w-~%n$cms zv|2Y1hM)mtD!AydEKU%)>{wskA&@a!mwFc@win~5ssy1oAT3OL zA1U;T_awPAx07yIqbO}(E@qw|9~q$&MsS}uJCS-<2cwlNg$XK@Y5PiLVj~V@ZMt** z-GBA^rnZu63)iZGwf}&o^i2rs+e5t%^qXe_)JLE&L@(Hs`Ye={toW?amwf~yBe=`Y zL6ef)jiN`B!kOx=ONZjx!k- z;)Ip6i$aEYVBh)Yp=*jped<22gRn~8H5FTa0vJI8zE{zhq3aOxE_ym_I6`G4C1WOf zO}@&=#WA-@Z00z0jeMLL)VUgB#%B(W(x4%RNJE}CbI5?$UE!@S$c6SHBHRk%c(PM{ zxV#+19+M}Tu@En}%erNe!=wJY1PzZ0yE|QU{ypO$O=!q#drAi1?D<8$jpXM&bQ+|# zIgZUDqlSB6^EqVh@ENFx{5Cut<&$0`mSb53sT?r^%_jjPJ2?&VgBA<8vr;DuGxW(( zGJa$ir={uKYYGUE%v#B!4v{ZMdV0pT1N#1k_{LmkW3`b&HJ_v8{>ZNQ!4cv)DroTe zBc|o8;yXU6hs1Zi{y8j4hP<;Z0`eqPitFP1jO6_dgHTpqz>CnH9ZU=_3KKJttRCfw zyPP8XMzznkKM(yA#=}enl1LZ75nh(_73=qNpa}h%FnS{al#d6>$8k~Nq`NMl3hG3NH0pOVgviO$~s&x2%CKA4PoVP3acF@Fx974 zus|PZr}DpI&Ln7=$DHmw<`g5&{5fRv=*}?Tmq!Pq>*U$!2vke_#{{7|qJSqO8hAF6 zHDgBO=|{c;B$Abo)P{Jtbgm_eUZYY#h=^4zshy-MJ#orz!BeMIT2(m4^6G|Xg zvR9$cNaomHJSn$%Y`@SMyCG(Rt$8h&4w&NTavlJybTe$h=-R-3e=N)qKhY>5()Yi? zcju7W_usc!4XRilpznuIuO*6c{y}aQ2$rCIB^|-ICKf76SPB4il2wwGiW0q|1cJ^# z%}L=nFAT}6z2lbSgi}Qw$2(x@VJ}$G`%Db)LkyAwO( zX{U*Nk_VbXI!yAm+5|CE35Iq_nX4c9$Weyhn@i?SiiUwZIH_~T?cia~a93|kd{$Z5 za@le8i^8ri%2BRNpL&+vhWNaMyH4QYO#Iarc;{RaqK-x(WTd(?eq2JEy8WEm&XDadK4Kk#E3U z8BT^;aBA|GgYm2fFCvR4&o(ChiOZBUcb`lkX@VvT47nj1WZZnPon+CJWb8YSR8Psn z*S;jZr>@DLwii4=OHykeyIRaWif}NwuS&5`OnU0)oAOw_IeAMS>pI)fN)C(jb&-5D zkTVxf*^ zy@7B(EG7(__q-|41~#&ld_$FDgGlZLT=|W_Kw3w=&-$PiDH|BlC!C)`ylFdvIL} zXA-s3g>0YY;@u72->NnmR%zIqzJ>smTyu59b@K?DwIct@jyK2TE{izYGA4KV@r>ZT z8gflzvYnH+Oj0#_4PMwdr>%#)=YX8$a!S*fq#kECTPa)5eTfy2me6Gqc{x~%2a)F; zbXmL}+)r0stu8|vc1!zn(-2iU>p^bhwUz!r;0WMFo`4wQW(uP!4yyl$L^dbfPqq%`f*X@jPc;%%hGDj}aA5;n2$;WJEuSXX9sCJw=awf@4lGwV%O&iBFXw~){0=OQ)nUf|`M0%pf8 zsx+?zE)sNrT^?)4AB%RtV;&i{pbKv5FWgSJ+y70<(_H|6fE?lpACQRm4gQQZmFmfbh4Fa$N@7^3wo$ZzCV-tU@hzoet-uN61Zv>R{cdbuj-5g{vtK2 zPJ2y!0ZsmAx-69J(uJdFa#hzIH4&@TF}Onqa!uC_Jt6Z}@8ct?PvpnQYW;RBolj&R z#o{%aNbir*1|KYVQ#)#zEp5?`S_sue?YKN#BH4#?Ara20x$mmK&SvtmplKE08u*gV zipY;2CG({&WX(so<9t%Gra!jR5wv!A{(bG+?ey8m69NK%y`omoMGApkr^vcc4Jzhqbo&qxodz7s*IZ zqShtjz!hZvx{mmd<>bJ+px!=>eBZzmfjszSi=YX;VkN}9=E^F?N+IBV5-M_jQ+JFj z!dYU!-W|W5PeRrYz+tO_zds@CL-73qa&CQ~jY&j#{%%e9tr z#nu5WW#?^O-l{Wf+YrkJs1qN{$f0eEWV~G8Z&w3}+1?MaqPg3LAp3xyx!J&ZCr$JZNf3ch^JX_lzU&$pmzDUN} zX~b)PN1Q&5Ykb1O@88n+9~b;vPf*eyK8}~Zur_Eb!Xb)?jsI(A6eLhKmcmPjzF;l{ zL6F-%u4MEeC{Q(P1V0H0f*LmIZ$6I4ALW4u)Gln2>lF_i`Y9ej-M+6g)G5GM$z}z*R(Oke=Y%#1)po_=|Z_D9qezQ?EQQzMw>r&?wdw(& zWGA2&9J2{gILrl%!!o|Ag3LU3k{<+stxA@CKp2=)@Fhqe33YiYCPc-*mob0g`*?j6 z?@Er)l`sD?b|ts1z`{plk+j{&;& zhf{IFLeg}2CJG>vk1WRrrjb961f#{o^JskjGC|lGkYfPdhPnR>Y(>e&w!Hr;yr;Fi zXDs3PJ}vK60zRtcy{mw43-3a1ECFT#7^~P0xJ*!`XcW>fsj$Cmwt|^uAEVjiyQ5v( zEuH~bi`5{D@iSCp@8{Qbj{|i+0@9`D)K`~2aAb33z|Z#PlZF$tm`R% z^b5&6<=3{{8M<-Ja7&-s$gYAH(p9mO04mqWN(y<6^JMd>PW@+bs?n;%c)4{eSFt&W^^2|#fkc88r z4q5>)N}%&+4P@@=cKGNevg33oNN8OHRwT1Cd5 z?T0@rBYV#-MRQ2#xuM91EIJnt*ZfYOOU0W@iPiZ~*w;p%&qTgt^?6^1GhczwqKL-% z@gg_R`@=n^KhKBf*8mn&I(fG&0g}%y?u)@g*zt0qRKEu%cT{#X!GNJ%;ai!4%y9s`Yo`(0B(2}94>$xMQ}hXmpB3b{9W>)r0gqKceQ|Q zeiu2HJo(BscC~<%s@`dTrvR3{3oa4Bwj{08wU7K=WP^Zoeitkyyoc`Zg1re@SL)&( z3E18KfP8yc63O{e*HPI*)sT0qE*8My?}E1q;K+BuM+9)pyWk2ERpv@Ymszyw@h<8) z8B^w(FWpOx z?04%tARRBbrZfvk^}9&-jl2(2-UUYr;GB2C$pSc+oWI~o_FiywpCY_3c$aJexprYD zIzsxEhoIwRGCbFk4dr(tyudYb18<{UC^O_)vZ>&b>djd-EUw(~pC}g4xi?3ZKeCxZ zwpRGq%>@dLty&Te=QBy9vSKjmNnE~eXW`EQH6-Ed!SeN`VAB&AtjYYSgdHc_zuu%e zXeW_?XT@TAbhJ;($fLFM3Vu7T@aR+fH03m13at#(Gev07Fb<*I1c9w=A=`V zMeqUW6?CryII>`|`SF!N4%t5~Yz5RhjnPfV4&=(i>CgX@ z$Qg!XQTD+$dB3oG5Y}gvgXS#eZGTK=)pSII$fq??K8rXNdkqmVk5scwbUQhnH)*U%v-M7b zp@h9oMmifqQm?o{*fHTsFq%eIU+Ib~e;{993AUXGM<84$RJzz|^4FCJR8QJn-5;8! zPYII2q5ORZvof!XHf33lG_VzFfm)iNL&?jlr!s#?=b_y7;{OgCYXM$`I951ks?qn6 z!YlM$$-W5$33>CzkPPk|7}RH>2SP}eL7rcWgNP~O`h7S6bGQ+N3P{Y2lTMAmikX9v zK+=V?ROk2vM<0pAQj7m+026A z;w<|IO6ul_qJVpS5IRK0|F{LUS^v{aoE$-Ne_CnnvX>i!TwNDIEb7MCef>KK2Ui)Y z>*a99GqbK9AKyd9-1o*!;bh@`9kMF2`dNw~1hD_*97-yx`6U)(=NH86VXUX~3yIti zqz{6xwfqqdpE&rWydXm!e(Y4r;n(3&3m*ob<`+e;A5O&By@X7B6ohsX-J{X?>MK(J zDA{w@-x9bZVOxlzOA{WQ1iR2qsD{Jdnsv=ZslT;DXa|{9KM3!BMM~>aAVp@^PzYzy zw4pnyF8Ze73C1@KTqLiX20^3;@U@md8sO6eA6p3`=?^zMFP0$r+O_c544-}QIV(X$ zUo~p675hP$qzyVU=#Nmx(v{#)8zD%_^)PgW?DmwRf1b9z|cfAvmmqQz0SR*<7s8jv|+6Z$)bfg{fbM`F; zHBOR2n#=53v~Ap&(W4&O&^2~wfBPoTa!GEOnt!v0N&Gq>|6zxxE|x=dS2c(`z01Yf z_Gke@r|CThl!@a?=<9N%bRIK8aJMRT11O)G@kayQB1Zv!Q_t}ssyEYg&Kzx|k(>f_ zGpCW9qIcye$gjh{iQGAnGk>_BqJECZ%eV3Dzc__+dVjf#+EZ87uf&WmY5x7GmHqb)z85-FJIoo7&TA@NXeXkAjZu`|4p;y2% z<_(r=PA1UC(ba8`AIhf(+n`4oogcpj&bHwCd+Q5sLNn?qK&fQGzrThY>vI6WRf-4v ziwzP$$9Y*J<=X{yma~~WgM|q!LU?u%vPeZoxLc!2ClpNEI3vIOO;GLa78VFCtZMjI z3x@^Jn=NbTuDs_P&!XSANTAuku-9D$AClywT3jvjGF1JMZj z${G1swK*l2*Rvej)&;pDUmE9v`lHcwu?y;fe;Py2yPz1macc1C{5Qqr>gPe!;DT;p z|Mv8ISF{mD(5Y@nhrel0|8_&4;<+JoyF2QLuFxy)C4&L1HGTvL8?2E?MwJV&v|W5-5&dUZ@H!puyfKF!oni zE04CMy%M_c~zzNe7gGw0WGRN4l4ZP~q%L9%<^K^ixWtUeLkL=au%jl2}+=JBdv zaqYD2CHKr(sYowS0|TLggxvuu_?33OFEGtWO9L<)u~;HWS3!P~eZ8dkM{hIV z(mjQv&{req$N;28*J)hiE;{gIpd6nIrZX0%6v8idjpG{X6rlKpgwuI-OpsI)sO#SK-ovO7A5BdUrE;?XIL zrI%?!FBFLrD(K8!=owBarxSalvH$;AUn>$>J13z2c-RFxDgjY^wv4_=K<`;jF5}uL zr=#OhJKVdhcvc^DT4=9RBB$(y1wEH7-6uU%~eqjMkHa+YLkR80!ucx6c3W&9)r|R+0_kG)nttX%p2%KZ-L==agPb&U)+MEX3Slm$qJ@?0z5UfgE z`FA@cd>vYYIAQn*%YqvC@w;aw;gD zPX(Pf70rwLw7dl)KLqUVJaU6Q0#E$%pLF{khtX8nM&Bt^G-+fG#gW=ltSVI4vhQh! zX~+|uEmllJ{${ASc;XDy(acVAu7%sQ&*`pQSXd6yN4aP^+Ca1NPzc&Ym*$}hHiHFc zmg}!#U()wxBj5D)uwYk7U~?#mE`i3LB%|XqHc5t&uoQpIz7!Ehz9R2c8 zQ_BgmmZsBK`*+B;(iwA+yW?x`w`0^u;_Bjb_jeAEGRDuXx#q zh@jA%tFX;jz5zy{@j5TTJqJn7H&7Duvn@vwKhT5)$PIl@GZ&zR-m|*#^{qZvm7xZu z%7>ANhB0W)fJAE=eYyZe`T7mx#^el3pslva6>dW}1>`x@d-EA)*4=2rLgeM}6P%;e zXuQ>N9bsv99!50_kuNgP!iAtovGmYFrk+155fkHw6rnlMxs+^I|#G@x?OL_`a<1o-8qL;1i;^f<7+&*bA5 z1-nV@gad@v_$Z$l%X&?LN58$C$!<=RNAf>t#jXfnparU58vE3f7ve#+VcG(^+Kb zUf0_ynK=;a^QAgVo@HxPu|J>DqdL?R{Y{_fP=e#UEl7UqEFaAIFqrBMTWG>+6w#)X zclox$IEa`vGn&5|MLFCDP`PfQEgwkC%;;CE(ciefk)F}RgrctWksckismkPHLMX}1 z>CTUkyX~G9z|T);#YbpL{uQ`H1=f^Nh}ixv21B74coc1^RLQo&n~ERH5GcR`T-Z+* zUCK{}!PTg<`)>(L7!ECB3%>1?BIC zjAT|}Y-S2rPwew4(9}Afql|5WB3y?RL5l=XZ4PAf1q7Qa0PYF^4rU_(z`GU8VY~(P z5l|g<96Us81Erb<`6x&j@^oYogs!}wM?71oe&sfqCHh_NKc3M~)}oPS&!P=;Ie3T9zTF2a6ZWhMY(iX)4CBcBWz+ z^E4Ghn1iVp&ZMSd0(<#LlszYrJ$^(_Z9u({KW*B8e4Vxpg}H*YyD%wbG8Dnjbf%+Tn@}(sPy23y zxNYBVI%yMn2|LEI6u~{Ah~grOoXqXFZ{U7700tX;@H%>PE1HdV6%X2m7GT_UDZRJ@ z%=B4z`qvIL1%tPnuoKPkSP9NUbj*K!2*0j{D8`*1%GoTTf9^z~)~|;M3c`A=r6Ie} zV&`1r`|&kgmAF3-{E(jAg_0qzF#iN8iH+4(jmLieQZ@kWA`8xtjnwSpn*8)JzBd5h2d_;sQG6oC1~<7`1@j!@Z+MD z7D@0sK%0U)3q149wJ*odbb_7#`1CY3;26#O3_`N@$0+>_4Mlxu!)GWFMbW6eD9!KZ zRVFFZ@?bbC#|VD~4Eh+vqm|Kg*IqPRR`MMzoGKPT{XT~XVL#P=j@qI3=@*})2&AIl ze-2ARI(66wUh^1D-G}zzutD^XeJB|}?MHil0sD{Ved+Ws(6)Z}JfRJ+pJjJ)WtAwR z&%jE^Sa;l`Ipe9&DiR?MH61#ll;| zPC9KrD8xa!dOvFKrGF^Q#28Q|hh=>Xu!``+gHp+Q&7fEJ!^n5;Mw|B|Pn*HZO*49q zwmpFSY=T+VgWS!>9oUOC=2Pv!zjXL7{9T}!K@p-au|7|`SiEL$kX%ARbbJ? z?N7=xeENO}uBpi2rxs_a?-AtM^VVcoQKL&wHG_LkSOLdGGIchWPZD4-oagIMw^+Uq z<#vFyo9EZy=(H1>B`USBIPIb{jvzNHYalHLbZ5E_Uh|`_31b@l0@mRq{ffn4qZ7MD z=DI4?LEl600HLw4^N@k_hs9?}6~DkRv0K+%*9>*Yn*_hYk^lsd-z-=0f6R)DDhBIm z>8cFfLRs`3^(CkcKVvcUg>L5Af`g~+kD~Cv<&%V69Vk#iH5Z_8g)b1+R}_wFR(nG$ zDmI9?H})Gx&z^ulH)bNOJ%IwzR@!_5d3F0^f~kkvh7j$9=a3C=gzH-}bNIszQ4qHn z6?q4cMVHnOVRG=Cuvub*sPZIwANGSqCsDgj&Rp8q8n7&lnK})$E`vdS&QQW3+6u7A zX0;qhjHq?gvKWo^5-LTtRLF)3JXEQ0@7YYX#i*UfKd=?d694Lu9Dd;#_g)@cz6fFu zD`{CVm~IvQsTg^>AN+5sjnuIOQlK!(C5TwcgbCO~FPES=7cNy*K@VsTCPok6OM#6(1d^?~f*^RN z6)xMc6C`3PsyvUPT!R2_$o(sbdGW$=5$8bZd2r^Tqv$W^VRq*fhkgZttxqYppl6QY zXDpe=2^hENJ1a;13c8ohI!&Q7OHsSPSAgXwc0l3JDIm^KMZeH3mw~at3Tm%pN9pNO zv-KLI}$jfF5 zhYQFlv}+~I=5#ur!*e-YK<3h2l_&wpMEcDfzLr1YsH_UbTkZYlHCLMpwscoDa`s5P0ka^VUGSGZPM_)$WksbZ` zGAs_^wDd9>>rmY!^tC*L|6_M(WDWA?idBO?Ktt%68gNrK^t&45heO)a7d5cZfAN%N zT|#ZqPCD=kY7f!&%qwW7e+U8*?-tx~Se63DT4g4P>0=V}-VrLjioW*lCjlyc`Febn z<=Y);K1~026%AEvdIIMK(J#`Oo)>hL`Uwp!mtr^kDavZd^M~KQ)|X~5H7Bb7M)3SX z0tT{0jcf^BbPY}LTQauAEj}3pnqO^r6a}&w@|<}}=^u)(qZJT6uDXu8pR{_Uyk$t1 zQvLVH3z^X`zDFu6{u9V7$fangtQK{*k-}Eb*34|Oo$Mw}t%bPy54x!qd`Bnxbu9|F zr)Ob0Qfms6VPni{si7A1c{L5bji_C1MoSAxed(p!NbC1=f1n;EE4Y(u32^{i4)J8M ztyH_|lpoLp=NGW;g?pS1#Z3;y7WxqwGM&HB|NVfHu(UsoxPzkUm^-kk>`0&90f)Bx z4oVfv$FXl6{roPP$@4Q__mG#Pa~+mj|DKC)*I8f8g|nex+W#IJ20hqz4~<3%pEut_ zX!sN$x_$BXKlg6mF1>yKuFpt#-||!4cHxJiv#RdeEdW6MSNF`vze70GL^b^whcM9aO-zfxop9ZmJLbA5hU74niOa@vfz|ppK z$W!_!?3QTnIy5G1EpQuEzH7DkwNm_ACVZKU3@i+G%9Hxgi*<17By*xk_tDQNj)wjW zo+FJ8{28=3^mjVzXSBaf^L^1`jdg8V7VY#48XF`XY?>wA9~rFc7MT1oaHUpAaqu6; z!0%U&(c`}$B2VDGiiA^5NHD<7lqj0<0Ifpz>CX?)9#lzJ{13q&QMRY;AEJGD;E(ji zL-aq-AHmv8*}VF`=`i;hF!?s=><4=NSJ+sk+0uW0MLXeGZ##pCuG3xGz)*zwwymJc z6#kN~H|_oiH0l%``v_ge3UAu+H;7Pvq=SEhO#iUJ;%mRbL5IU)F4_jEy_1)qa|ZQ3Uh2(DN9cEt(Gr*C$*}Y^ z@RLNQgS;bL&t~I3pp&1Va_l>)IIvwth1X92D2(9Q~yOzzCel6E|6cRuV0{T(v5JDjqdmh z^_C8SQt{7!AvcTzpVL<_QIK=Q-~1rimQC%-r;~5!VSS4J8};R9UUU9Nm*0`1{V%YV z{lBHq)3vXVLOKGD7wGL*h)63SH%xPyL5L+#DlTe<=o`QHgkF1%f?Tp-&EZ0P+_^;v zOCKsTAO)A=Jp(F`js#PrwFb1_trFZjg!}q})sQ}ej)#N)Q?j!smS8I+-3vBIKSH?H z?Gkk5-(;n9A;wEayn?hK{|$?9fNy_6v>$%LFaF28J;0k8%wHq91AIK-69^x{z##GI z4DL+|8-S@0utN` z+0JreO%bN`Ws*BITM0KkTr>H$3vLVT5oP$ew==#;$}dtGyJDv|I~sO7@t}kYZ2QQqFPm6_KNM!d=dF zRSw-H#SxIbx+cZ%cW{FJT}jO>n2-zt@664LAjgXH-NOHWn1db)R&P~v@X!ke zgH5B5`F2)nTuszH=~GMWih?Qp9eD42t5za^rABEYdREp_H%O^TGlB24fRfus3ZJpQHVf97SqoUz zEV{-T#|_ZKJD7|#-u$dlALok@S-g3v5%PfuiHtXAMo5MTiHSFFFhUemZiAEHusy>D z2PQcKUe_26`Wc4a0s!GDn8XaJ4<3f`hivl1S`y){W;uWo0KfOlwWHrZmZVM zx3e7FpeobWYd9Njn(m5`ft>>idH&N1I?%X_*6d z?XEJSz;I(tsJ=#+yHeA|1nUT}3{BT`U?cJb6_;bzd+AQSq3 zMp&j&lVXD10GP4EBbAy|6Zo`|G+U_|Y=Z4I!p18#@0nohjWD%R6K8@g0vIiF#7_B> zjMyBdrn?E7ZiMA3HSs1`ZzF83Qq#i(3j>%@umws@PZQW#Bweu>)K#hJWdi?GEOd9p zG6CFM1bZpjLnEBqh*Fb~4nG6s3(B=(n%xGwyPq(k*9z#qCT`p5+BVqLeT5OruPP`t zAtr1NJ>LdgPqC&vLnE0$WR;U)hq8&kn`9^R}umBfr3E<<6 z@Z$owtBFf0z3+rQ`bQhFwE|W&DyZab1m6|FqFn*l+z74{z@ljZ`0)wa#~HgP-GtmD zn8*qypha^6^f@CKt_;9nixvgoy+&|@02XZuz-#CZXPARLBlfv~70n2+qv>^Ln7{r; zY_otBjR&xi^flD=a5ZB2&jXd3fu=4Sj?+jN?Bc=TY7iIGRzQpP0+nwZr=wj!bBc{< zX8|qR2%vY;k6fVTLL=5&z>1au*qQXK3-(CLG-87UtY{g4?PCPPAN>V^MB@N(2O~IK z0E_kkU?=M3iaqjQ7KviU2w2e`0Q<8M%>SmKQX|>}fG-=tJp^!qsn5p&Y*eEJ0n^8X z`NUWuQ2>hu0(`VaaPl+(-p@on#R%uQI+Mi!`LI_0N&ypUst|9iz}H-*Ml>R*5M%`N zrAMjpH&NTswrZ`yj}`6!fb z^Ts}CQt=sY+!?hwuvcgva%SoLA3OUGjSRrj9}vm+Xnt8agA3}qKzl8I@&1!`&$+BaIBUcnMpGP@BqB{B;6f= zJ2_SE5=Q}k0nRUA!_SZd=>Gy>pD682?E`TDxt zU8q$MeqXi)0w7?$fzArTO32(+1Yreq(7GM$4@+oVJG>e4PdD1(mALvC9TAMXLw0df zFm5Ls#CI;WERmK6<6j7+aY)@E;&pmhvIbSWH@frmMZlN8{v;=MwcEqaDc_qZ$fd1RpMi~W}K{4M^dv6 zcz{j#@BDPI0Ra9qqXW)?Bfshnc&b}4q?#ZlH9A8xOs^FN+>rO2$!SU$PWB7-G>!5j zFHk07ywcLrGc=K!1omhEEegXO@rh69FJaK{MCurhyC%Y4T7?wa2);9SRx`ej-UVv6 z1b$iPFOhha{#Bdj#y*#V8CvlyvMZ#`b(O3FNXmu08XPt4NT#d9ai+OG88}hf2<%HO zBk(x5+C4b}_lTNe*0OUR3`MQ~|7q{s!{Zv)hQG2V)wI%f+9qwFl`pJ#%! zg0xbif*>U-Dk_Ky!h{x~EwPmq1VIsY5mXxlsa9og-2_3<5_UH;b`f?Eb`Rh0UNckS zeXr}guJ7N^wDsf176wcG>0r96F`71&ze%W_eM?U{IkKByyBp7j{B&)) zZ{IZ&4>|aF4x(ZYa=f7T*wk~9 zcIqy>swK_SEA8sh>ieto^>#YeoBA%h+M@n*v3{dNJ#Jy`xiYV2tXd-zL#4bNcVXmZ zxFVQx+G#auk!zndevo(YqR4}ouW?JsooGou*x$#z`f3N!I8CxPNp479Q zYDVfO9AL%o%O0l}IMr<y%rPdb&$plQ)Bb9pO-oQI)!7O-W92>!ibc(37#z=mozHe+t6|9#lV&Fl0kx4K|*=N@?lRW2{3&mCMc z=CW@4k}=nIE*VoYtWWQ8t1EKb@c&^0yuhxZ3U05A&+i)#!Qpd@rlOTj%MOUhcIl);&J8KIsenMIQ$;vo?L^hJnKJ8{kRF^%}Jkca(F<%jJ0 zAxEnnV}9T&chRcB$Z}2$c$7{5_Gkugp+5Q;HABs{=()$JbJea3^ox&CkC?jt0-8^L z3|VMlxGbdojG+*_IXXw@7w?D9=#8RNygxma9~jc=S&@CFd4Mt`IKqgc%v zmqqBI_g3DI#O|$>6;Q?p^~(#?V^dG#PJ4U^yrFj$sOKE~Z+5O^z z;+EcRm`|hgoc76*F{OVOw?5o{FzmT=@?-u#;{HUj{_Am+x?i8nQ&8MiUd;XTg-R^4 z^jO*@o0p7P^x6+&UhC$S+poXIFH@A7;X8-5qO|43C}&y!K5@yIafb2_W6tWvJgNo1 z7gJz|##ByyN;E}}!fd7FNCkvc0gn*p|BFzNDdxZ4x`sPEtZ+Swbu<~9ivoykuZ z)F}bch}{a>vdwryaB}omL&1m?&zP%e%gDc7{&d1^i`)_VWKK|jy+|$M9_+aJEOz<& zx${-4dhwvH&sX!4I`rQ8>WL?GaGNYD`(j>X-H!R+58XVUH#i#RsO-df=87s2Z+XNr z`Vr<8kufz3S42kC9K+9-#@rxxhVb5?U%Eg&I;l;6et}xx-eD+nrh(5cF>@v><~?HG z95Zha^Yeyz2glyANGvDPZZq`S6WKUW)}W@lfuVE_I?el<0yUNM@tI_|*AubX&Q z{M^_tr}Pg_WVfR02N$!WS*Fh^R!h<tW2GG&_QDE*Y7S*dW$KjSEuyw|#$9KsX(KBQza7!;Zhh*R z_?3%a<_tamOf_q`Uo2I#^@=mqnZwOuX_>7zo~a%({L3X+250LpVwv3`mX28@d--kg zWDjIFLUx+Y z!k8ERK#Ymp_mR{LNh)muNqw>=kryLJl3?V`A=;9$feN(qbI^WL?>t*g3rE%s(U98M zipHwr_h5QabbBS{%VIGfNLPAIv-lcCJSCCt0sle#>kjxk{)fNBUS{}*rH;}Q3j8@H zHhhtb<@-QnyHVCexnd%^(bYo=8JYV#O^Nm((cC^8%~ywN#@cAj{2kG*zf0fP5!H-7 zQqmJ`*uHmvWG{>MmdMY>_xJLBAoc2TZxp51&Os@4 zn*Qlx_3+`1VriVNo6k`X9bPV$=0o)SbJQb;A10Q{L-ghNgnwO(rEEG`e(n~d#vtaInNT_RKpd*vjGaOKTIIu@_MkG6+fB=-%`&ew%&qwNMeqb;~EtzI>EU2&v_;8Kb;^IM`G zyjRVwU(u(IS;@U>o`0<08~ckS(W$Y5bV@#7!@Ooqml#jQxN6NhF|Ia>*DA*E-;?Be zqn=p$y-^G4MdpR2WckLo*Z8)}ccS%fX(1>j`{C?F$s(BAb0$-=2OB8as=2*Ga@I@E zxK`aCyB^FhTA`l@14f?hu28`M&2LiL3Cl;zWtHq;=oo2?#-2gdymq5hjg)4Pj4;54v~@RaT_&w}AFm!D19JWoJ*rcBVVW2}z`R8zFUp&hm7xLg5u3#!R9k??76rd3?9N2t$Lr%Q|GNk> z#lKr3ct7F4W`1`xV`#>u{RU1;6!~jR?E}&`9*%{O3TvSMNA}jnt1al+iS0lZ))DnR2cmA2s2e5f;}V&PwbSlsmn3kXgpKIGi(v;bluEd4*+`6) zaBK4C?~V>KyF@Pfo$6Lpj}X;lsnD<3kHo8d%^G7Jy4=_a^+vPq);BLzC!C)CicC6_ zj6}y9-=l`ccS~NZW4&3LsG7}~+RakgSN#^bbhOyqH!L3ilTEtiLhks!-z4!reuWh3 zVdMKg`A$^ME#_GKXB>!sp~PPy@sIpn{4y~4Q#!>F+Y^bw8F!eGa7c_r*_Mx#XtJ{^ zh-XW^Q3;78kC*F>-KXL`z~35=J`(fgr|_}Mh=1vHXEA0*zwU?|3!|TjF%iG)>;5Vc zG)n{(_4;8|>f~_Y3&vtlN`a!gF~_Ig>oBfb;}_SBFN$lv7^lc(#2;oCnNvIzPj6Qw(JX$D`L)qc~vA+e zrd-y%7j}y2;$qx(i0O;D`}S`d>opA|g|BzZp@gDbWiu&%L7qTfLwb=2GKi$uO^Sx( zBSpyRNF{P9vKnbYo<&|mdXO)X9}vZ1Qc{u0h!t6YR3Y`qTBOZk3M*SNe1P;L2RThj zCSpYjkYZ#RQjgq)JcYc7Y(sjGFOWe*b(xfLNH(G&^N=!R8B&j|Mjk~vk#~_@$N-|a zbIBn!kck|D9E~hOmLTOsTtVsOQ$0(cb+J0bmi)G2eyUe7|M*gp`P;dw`GHbi<@ATo z)>o6vS68U!zo7SWN0Pqya8tV8c(LktrVclmwFUgu%V!kxDa$TgcJURB)T=#WbQ0d%=uR;X7eSAx&B_oT#oc3 z-AG%rVs1g&?tn<SlgHVm=nk2Xy-0yaKMLdb6c z^=;MatZ|K_e+yhfANGz!x7vQiFK2CZ8@34zpqd+H>8-%tDrW*WWE=!gezb^ z?&cE|bM>qwL+V>87*hTeFAZyhh?xpho+a~7DCWNPin$oS;+J_b*8_?+X^&B-UFS?~9N;f!56$g|c;A(Zj>GvI(Iz!Y9Ad^603tDpvNf%$MEEP@%Z z3QmLdkUuk|G{Tjz4K~0|xVWO?((^96EPKh~i!P|TGJDelSE}!i2zNgmtCL zMvOpdv_U9!sH}_i$`mM_#SEo4W3g;J}XU7dTR@m#&3nv>)N1HaXXZ%>4e#^ z3(BzShBKrW_F^~$hdwB65rH#dKa}o22&LC4kHm&c3Y2bdhKIupm#=!S*R1B+o$8o3lh2$sWqSP74U)$kZt3kzU9oCh1=v9J*y2bE-+*Q~3}(WEU@jaE z?Jx!A!x69u9t=xiDy)E`U^N^K>mF6Z<}nx=aFAZN7LJ82a2#9@$HR7*2Did=*bOJZ z9WVn%;3PNzCqv~i`UFgcnJ@!p!5lahYH%9#KNhA_U?{|4IxK-RU^zSlR>2%t3unTW za29NYvtctl6t=>{;0Aa&?1Xu6JDdY|!6RWmw8A~m4pYLds@Z`d4LV^qbiq96hHmJA z1<(tNp%0e9AgqKTSOfE6Jv<7ohR47rSODALT-X8U!7g|#4EJC-4nrS29`1%Gz(H69 zlOLxuK{GrNX2N2a3r~V}xCrLMQ(+N29hSlKU=_R&*1;;c8eRvRU{VU>ZyknYW|THK z9CpAFunUfaJunsaL791W!|`wsrorSV=nK#cC&Nsb1??~o=0hJWg+W*WkAc|tJw3YF|or=VF4L^lJP&XkerG`5jhnWGfrW09pe;EhN(~SARn{f z(PZ8Y$)l2n+a*v|P@rUE?}d5rW9Wv@zyjC;i{Wjs489F3;rlY()?j!S*2Bl)YWM?~li;+daT&F4Z{>SfoGi9Jj$ zD7hG9+hd2DpzHx;pHzf>E|fh$GAzX|3r_`iPW3PfK*k#jFg}qYz(H{wGu@}KY{EvVuv0nzm8VUzvXvASH zY=)1(R`?X$0O!L_xDjrL9k7dtg0L5R1C-5(3+}=$o!U*jsjwfrY(|RlmtD~w>@~0n zf99aDlJcx-ej0}~D4UUdJVwE6>?gtu0_MUz>`P%c{?niv`(jv#eKah<&d4=3mScq2 z?}TM=AuL5t#%U$?lVCpa&XN6J4Gx#$P>zEI)?=@Qt=PSAHTLVpp9sc6**1k>6Ye*| zR(LY3#N7%vV80S7*k^)H?B~Nl!so#4*q6Xwc&k*EhT`FH7Y-M}ez*d5;vRr|u-^#V zu=`-jbFs~RDRvEe8ut5OHoOAn!ONi=o&qaLcpNOieitl;C9n*Jbqv)gjE9vttbq+g z?1VMguZ6Yvr@?yci-g$I;cD!s!Y0@R*TL0r1AG8(g{`mw{RyxKdns(hJ`wgk$M`=D zLpurj;cgUefP?Tcn7ko&L1>1}*jorV31(tH14gjVfVtQ!pdG#f3*Z)50^48(Y=<@Q zO}G-i0bAEG{wHHti$fWddH$cU1^a8T9li{^;iE7D?}lw8JOwJxtLA$^Dm)WbQxF@> zz~*jg|7=)?{T$eZeJX6gUJh%~x5KsA?}zK*)o`I1kJ%Wu;&1`%h8M#f&;)nGFW?^7 z2vaty<_BRKd=_TICtx0&2i=<W2eJ0c9A3dl02V)yKE;1YOxm{jgSbRye-{1*8xu zLW+?Rq!cMbDv=tb4rxGIko8C>(uXK7(?Uo-QjV-dT9B>CE+q98<~hWT_>lsn1gS;p zUr`sBS7T^K+L2yFd6fW2F;a){w;|0PNFS2gNkm8qA~jM0Ymv1`E7G-TZ>u_m$13iZ z9jl^bJrLt9y-DUaWE^&pmscj4({D&J@5XH}BD$yJzUz@B4my*}@4lU6&h1VzpZ0T1 zfBAo6I-)1xh3CfON{54_C+_FfRx8yPU$IGljbEG3OZgzSgOVf449wYu9PVM(;^tp& zN-`J3&08i=-EnhdGF2WoKQeXGms`}Uk{5J;%);_XtTUCuMx+;U@1V{R>0q5u*-1Sk zwMZ9|{V8Uo6Oqo?gP1?t^i-F+aoA|NAe9Rgxga$^y6Mul)LTb{+xujDv_O$LcKZ-> z{}6N9=P{k5(8Q|<^pA| za+EBcC2@-csEeB=Kug>#0Xi^C>7@j{n2%FRjG7z3yg)gTq^Yfc{btUKn~hxy=3?}v zCh9QHC8WgJf;lV}@#u_uNWwefX4$zYU&aDR=5pia0?g%cvrL!uar0cvt#Px|*7mqr z`b2-+EZZ>iSFt$BTv*ZK7AaXt+$`-{6E{oKG{wzQ$_;U|G{KIzS(e{DakH%L*%8^z zEK($M`Ix1urNpwpNG(d{ig2H+gkwFw#IVH7l6V>RQwSpFD$K`HN0N9QX6emRtqq3x zbfRWO8ltmqh`AH9j25Y}Zp?+s2}a_(4ENKOB5D6U2@B@r=x+&R3^C_nE+z|7O9hyv zbh7y`!F)Q|l#*6sJ|W&08iu&98{*!9xrDwTO)IrAJyEhgJQ8N*>)%RWq)*zR`u;p& z{quzN&lA=^PgwsvVg2)j_0JR5KTlZyJYoIwg!Ru8);~{J|2$#+^Mv*P@r3o}uhq>X zMlU>rdr|*RGQW*nSEiQ^sO7`7@h0;;{pA5Ql%CCVgj}f_pCrCD>~4MRkNjpiTetkE zj-OOHL_#=ttJCH#nZG?W$ zPrQDiS%2XtbxM|`=qH%OocKtve56wU9+jgKWl6zFymC%7nG1O25~J}Ew-W4?$Zx5{ z{6*KKFZ@Xz&nqq#|E!L8HpN3q4U9lqv3DcC&!fq_`**SFPy9@toAkf^tWKFTG;zs6 z3yEa%B&C?;BQ2JP-HlY~V+Yk~-h_8KUXtH_f>aI(G7Ps`?2X9pbD}RDRHvSn(5;Mz zFDync9$rc^66wai2l>C3CYDu+V}wyRa}rSzi}9(SZ!+ic*lxluCGul0MBMuHU+9B* z`cc2oQ)~aA)qs7ip>+{j)}h`KSrch)9TG&Ey$Ab_xLZ@PzThWy!U)l6M^`oSmzBoj z!V+B6rMNlR2jju)`lw&kY3aprm4sS3_DcOIyrw6-B(zliTD)3+7sGX^C9TvS{8b%4 zvo{`*XiKw1#LgqdzYp;dAr4KbqGf#C3wa6})r4K5$j4r&Pya6oX!=qARmW%54$+Xp zG+=KMEehn;FA>dJ{dP3xbPdszjQ3*SJybhB0rbsJ^zunVgGj4ojAoD{h5BA1wxnRh z^}wfr9G47nll)X*uR&tL=I>Fb%^j*DVLM20-H>2XPaCjrNB*}Aihi=b`4=_q&>^8D zrVV6Z&k#4MveYq56Jzvm_o!1HL;Xa*7ySbK#hhr*66}@8Z$09uy;LFtelL~S^at%$ z>>We3g$ChgXf_Nn71yYUfC z`G|HQ_7X!|KVqLcbcJL?(6(InX2S9ATPvXhKUu$)|;o)A&h)L-eG zo<_P6@5QQ8i8LXdNFSn9qlYX)oqFhC$k$j{Qc@0UvT2+of zZbkN8ouw)#)u~D~@(hxHjjAj`ZbsH!qi&k5n#LxL(9&sQYOY2<%49m^kZi2jjE_{j zG>#d!8N=?FB-2f2x+(VilEc*KqoG7J3CdKQ10@?rLW$U1`&-1-MpWr7SH_}hg_5S^ zr`hlt#cyg3WTRW0vQvkI-xE{ny!1DvTz&d5(-ggLv?)0~yE>NSESQM5MEnoo&s%|s zx>QNHYk4gBYA7YCg^~sNNJ-=)T#LJuL_XsG0QTYViFml@p=^{o-`K?}srCX5xfRDZf0Hr%EVkRzt~4ZJgIa$5q|(B!5wjX1dhkv57XdJaqfw`t7KfB zi%E%dG!*?bDDh2$5?>HXfeN5h`tfo1)x@JJ#PAmk;?V@9awL+~`sc$<)4ct(H#TJu zii&bsEUpwNaZiNO^`^z$XTyWAA9{(FKtclx&iPBdaQH4`!BQ%soQZX6?vqU8y;dR;wYVXs(mX_EeO#qORL1KqCYdD3o-}hVOhh%HZ$6mWQIeYFxmGc{ zg=ABTB}wG+^JWQSX2KR`T&a&vHBBB-guD2=^>-xx{*f#fx9fXHnhr^C#48bfOI)q( zH?>2H<|#&PNsUQwlV~FGFw!+NURNV-gA!)qt8@##3~ ze->bHNHY1^u>zz(y(QU{K8XmV@_OS5^u-y8C-g0LNoWA(CsKh275vYH>WMT_p00R8 zjgnBK$&@xZn@W(Ba^sbx#p#Y!){#N%l2Sojum7r;{vebp*aszcY5tVy@ljN7HjS7X zpNJR5C*m@gP%KC&R?}-Ib`mwAm2FToq&L+M(HJo+9@UNUs8&N!`b#`Y=@%Ok0oaEm z>z!s(s$Mq6l$J5b5A!8bDMLPQV3ItiK%MiV^bzq5O{B_bzmfgeC9 zO=Q$%Wygyv#g^>m#fvFbTr7GMCEAqq{&>CpG^E~E$NUqOFnuC#?n;y(g?AfBeBHPi zjX%;%4y5rjmKo*G%Em6anH6_0AF{)8>kp1IO&gUzWQ$cHPE&OAM5*zyrsSjzhR#uq z@jlWN=lxI${3w({JQcTZfHIytpk$*QN@kPvvExnCjChAjyZL7hot@j_YfXEcuRw`? zTbysj*#i?rZyXv!C_g?m6~?&$N(_tQJS)zMxPNiHp``LUhsHF!n%clo2}AL1f>IK( zCz^J5B7`wJkG)zCj%Uu}Wh0^>$>w90z{RulPe+=j>TAcFW)AgliuqnVTq#tJ#1lhBC@>c%Xg`VQ6iO)yP1`41b?EyL;8#NzIb$Bm+~ zzezBPyNoUQNGt=`rE~9x;x;lK{s<_$ayyiLjyLX}sG0SL#mdzVH&6uzv?NgPEm7Dp_M z|9=U4&L6_o#=|!JKCHeX!<0VpIg};g>nLHOudO?LNS%&3Ylu&G!lysOl%2byCsqL7 zvt;zIt~kYh*!zn4WJC(4=TA1JrGEaQVje&Ym;Onn4AaydihjZrQsN}o z=_@@r*)$<_>vx1f#NWvIg!_1u{81!doZ_FpNUU$Joby}XT#H$H)w((QYm-ff&G@cg zG5-gVAc@kX9uey~8ITb%dWvbX`p%d7VN*;~RsJC5@o>aPcg7xS-lZ>`Vj4ec)LlvD zv4})tI88La)fBUCgxe6kc#0__#n~Kljn%iPuXyN>F1J1SN0n|I*S2Mc}&N$)Sn8vPno%7cKj9!vxi~oKV(_io}gDEox{utwX-^P5d z`)}OG=rzsbRsC>!&FGowu|X?|52op#W|=0ZJnfIU>3vyL$m1u*ZAQQ)C#$jUwkK{# z*<2p?mkxUL&FAs#J0kH7{VdyZsyxi9d|@#elZG_0NH6vsNFS2_64w(J{jI5{S+fhR zGE!ro8s1@&QqMur5VyNFn_{^FPH|J#dSHZ90DJv;0Uv#EdMEYq$eQ+Jv% zGflcH*OZYgFDKEnN1D<$X}PApq+!)>@#8H${V+~vDoa*;g5jT9j=Qsh&Lxg4oPs*zfxzE_=QZotrp zv>E#rftO(;Wx*cax`gNp5bedu?KNt{j%MRlm;0vG`W~L7Qm`c-h9m^ahjZ%?{*q#y%57kP9qh>p=`hSY-9{Y0#1yhTMrwf=&Wzz2j}iDmk7*(SUhtS^CvDyIxyN+O z2+nF}9%BlJAM$PVZS&0vSOd!g*9W!*-V4kMx`U;m%Fv~uheH1d?F@Yt`Z+|c=d*(c z!?m&660KHivb0*BwR~Y2WzDkAwz{mxS{GU$wYFQou>D}$W6QIjYCqq8iTyhJ?e=@^ zKiN|pxlXt9Xy>KQ`2w_(cAe$A(zVw0wCe-cKV8G!PWLhH^W7cp zFWvufkMS(`tnfVU+3Y#Uo8}F9Z}i^beZl*VcY-g+ceL+O-v-~?zR!L0{3ZUd|4skT z{=C2$fhz;+13Ln#L0@o5@Uq}-!8e0H1ye$ghF%OQ#oVi*08=%qR-lcrjJJ3#=UKw5 zEiY0ElQqqnZN1vM&iaXUxNV;8ZTmrv496wLcLhg;jtKoFq*OD-kciWAv}L*V z2J6SxUDkQdQs>>yt7jxNWe&UWW=SA**k3U{5iFmO_!ET9Hc zgO-plB)_t4WWpq(B<)}=)iTd=lBL2@W4YGyq3uW8vG()q8||;#iyS46CCNJQ~;-a0KTDPYj+LyqN6v1Q&(QmrmQl6b2M+oHkiI zQuAr^wNtbkwI*$iWt*kf60nDt+H36B+OKk~blmFjI&XLWTdfP0!-7Z8?W8BG==tmt1es*5A-!*SVi(L~V6{?EZ=Fn(dkCImz>(XTRqZ@0s54 zx!y~?o!&PoaliLxZ?@0xJH~e>c}?|O{2_mlztNu)7#+MKxH5Qm@WJ3?!H(cZ!LNh; z46D7tgF>mH@uA6~?9j~6;UP=N74nCU4i$zLgia2f7CJk0UTA5kIgw1emsW3`D| zmNrAn)sE2Ynnw$1bF~w+Vr`LDrk$gmuT^Q6X;*63YAdx{v_|bt?OyFc?J;e=_N>;f zy~2R|8$<4W?PIM^`%>GjeXsqj?bS?{6lyrl5}s_CW|?U@++wjfEq(@0p=G}1WXoxm zv+0IQE!CFgma7@9H(AzL{$gpe+;3TDdED}}<$23XmQK3Rb{gnI%TCKbEm6z2mI2GJ z7R5Tuda!k@b)q%XI>VZ4J;G|UdaNPqTkg}GJKR=ctFSG#J!!j`DfGYgWsd6{?>SaDH#kkM39dt34%b}T zxXyLEtI2i0tIhSIYn*$UdmiKZeD@vhyWRJ@A9ugt-sax!{>1$SBcP{dxrNs?^5q7 z@9o}ay_vofd}sJB^{w!&_1*1z*0;&G)i>6Egx~F-=P&hNwXYqx7U zZTMG4!<*VC+AeLPCChS%(*Mm_7WA{Wber_J7*<*+)7i zIc7MHbe!c_;<&P z%xvuh%P!l`wsiX;_IDg9&N0q3XNEJ=neANee976#1l;A^?zB_ocY9ccy;Ho|)atFi z2g1H}RNDK2e+F(3b%ow0%HGh9P#dvWBtYYzAa)aw?E>Q zx=b<_l_&kr_@DQ`;D6b_+5fu#Z~lMy-|@fi|H!}7|GEEP{;2;O|M&hM{lED4`jY~~ z0wV&W0%HT|fk}a^!1O?PX5i33LtsR3Z19j^O|Usw7%HLdT0)ybuhMQLlAWaN0K>F2 zEt>&Ytd%oSE!A4IN3niIV*88o0wQjb)XZ_6jYuGy0mS;QBb~Y{Zkgd!1Z`*%uU9Rt4qug`cKKIe? zLU)z>9rsT6DV~cxwVsDPw|npPwt7GDe&fyZd3|%)HN51r`D>{sN~ML9j8&|KQT>eN zY3o+&ueRIlci44yEf3fqri1*|e!J&M&oiFqX}6czioEXmo97>%cRcTVKJpyyEoKQG zDYcXzYpyz`ozIxS%Um~kZu2}wxY0p9^Z>QFnGHyil8NeGTdqrEl0M1xjPKNN;OxK^ zf$P{H#5_AJRh}#S*ZT89TF4$+8CoroS0^cQ*^$P;*~JXD%evc|L#-+GN&E_u`+fFL z*kFxuOm^hbeI1Ts$El9>bln!`i_U*IzjFTSOmnGj)pNe@65rLn=ltyfU+}2l$?P5U zV0deAKC|^3A*C@%X(zJpv|08>`$P6G?B7uR1yuf}j=LPsI652=$1vw{&TClT{_gtK zHG&Dp;VyEY>^|FlDGTxncLNj8f82ZA1uV;Fc`7}Zc&_)X^*rtQ#PfwG-8Reg z{K;qbPxH_5d;D|#C$od7_21@ymO=TkKjQz1AviH`c)%721{MWw4>X0@S|x|ZgeHY@ zX>oU`gQj>V^kL}Vvgz)Ob#cvYzGEF_%d**Re%raWI@>CnZhOS`hV5h9zieOIzGH~a zvoEwSvY%mJZm+jDGfvjqpRsSZe_;Q?zSpighBK4qISL&oJ4zjAI<9uy;CPTO`HW+u z<6~<2VCMwq6z0aDvpCEszQ%dI^Co92+r%E{XU<*DD7(BVE|=?Q*Rif5SGDUw*Lv48 zu8poJ&2p&Q?)JEY?lSi(_g(IX*@VB%8uyj^TUNOJZnNiY&uH%x-j{tQ|7!pJ%z<+P z&jp?gz7zV41t>|WrTM(tb=oVId#xW@_p)^h|HpQaBZpzL-tioB{bt8ojxo&JhdQ0k z`3#%eUH7=2b!}yOnMTk4h(7!y8}S?ccll2U6a~wI7X>d5-VnSi_&`t^&>Je^y6Hyd z&j-2Wcq#O4=*Q3=)`%o!H3^&8#N=sC7QFe|ncDNrn<_$k|` zw*T0Y>?7?VDt5j7Rr^A!ZoT7Y#|3oFXQ`hvT;;AMt_!(ly3h5FYmaLx*Gnh3E8NT7 z*Sl|VKSUiAdq#QlypabQA$&uqcjIvm% z@J;lD0au3m5Vyuca|_*Xw#V<8>sjDg!d&+ttHPPyI`8w|9p10lOE2?1!Yuc(Zx@|$ zI{WAs{9pK$z_o$L0^Nb#fy;vrbD7c~4jvN951kYGTuNQ6Dr-SN+o=^<7BRg{V_2SS z{mHtV{mLu0w{54`FSNhuxYpI}ddwYlfA9Xqo#Ywene92!bGzq07Mqt@oT47hd%E`= zZ`gYq_41@z0_uuSa%RHMOIDx6BEN~tfc{dRLIbaHo3C>_asA7-*x8VE1 z&x79tl~7Kooc$ZQDOZilX0tYpOO%CdMP^vs?1kTE@))puZ9T#EC|7=LgR?uhn~!ccu4J&JFT?Px`X_6-?_}{HFwJ1NR0- zZw$N>_=IWmJ1(hBLA|uZ6ggqgzJ~=h)nRs|aSD*>$YzGfWj@m!c1ID*YYDSjnWLO- zNu{I8vDVS#Xm+%)n6xrf+Z-F%q%<&G8=dQ%t@@iwOj&yVsix)>rIE)Cxv#dVWRa;e zY4}=yvwxj`y*{PX^ik3t{l`+%cSp9_+HIZef|NE@c9y(#d#h_Zt=;45r{fJW-W7MU z+wJzd^W6pRN`1=drWY^pCHqo*sXkux=gaVA`jqZiS9aU;?S=Ltd$GO5UTQC6M^$03 zvR8AtTT3(5+gGwCu4U?Ov9GhYGS_r+slMIO?dV}S+~MeR>|(*+?dW$5I0hYi*l#5} z_23z%41N9SCUcm)^{Gk@i%M*3+NfoF^So|v0oM#=-b!x`Cn2l7P2P3hHgAWw%iH7a z^X~QzdXvd!rZ3lLrzwh}qkf zySiw&9@lQ8$;|FFcZNIDokPPFxr^Q9OxRWKmF~41W3;;0yW2PfYIk?CkneC0xCg_m zV`-i|rj~q9v8TjS>M8S-v!SZ@G_s*u$97{q=S3UXbaZ$+JzG6po^DUXv)hx*DOrX$ zmxj=2iehiMw}OVKWlE~2|2J@+)aq@gIkq#|_b?^zpiy>tBQ#9Ecfh-cDLRLyar?r4 zTBp!gPTSP@R?<4FX`l7J4qqp&(?k0V_y*bIWYapi{ye{(Q-U(ur_x_f>#U{jnvL4) z^mqGvXrKsNyM89!L1w=UrrkW6DW8Ta4^#(gXr=}>E{%bvKpPFUHP9324Ri3+M|A)BuBA*$q1^P=QnYZkrg6|v zpcQIGS_#JsbzFiqYHK+*YT-zsOWUsP;4ne9;>jE#WLR=7c^1uL=hC!=iRlWi%sR9hN5{!AvJQYN02OgZZuTN$rCjMZI?(?Lh3)9);B7CB3t zWzGs`m9xfK?`&aLwSjKiM|Vx7v$|cSbk!=(0o&-JotzIvm{|syRZ`q$x@fjLm!&Pq zuMa!bH23Uk`dgEy#WAv!`aJ!fLF1snOiz;`U*s)ez*l&y=xKG{wG8<6EchMX zt@N@UdYBw5@k&u&Ha$zDZ%M~0p{aDI@_2rp)dk} zodJe-S|F2tQ%rBEr?<2k!?`ao$XP>b(9SVvaj=vwQAd~Pq#N|m4N~X=nOs2mLj~-~ zDneCkg&RZ7G=B$|4%=z^-5fP3*}UsJn^sTOGPE2vX9Y%smuWRL`Dz+_y|#hI?xDGN zX?tkwRGK@J<}S1pbN*0aG;tFR+({F6)4a(vZH_gM)v3r@L8I2uq|G#G2N#w*IE^)P z4w1{Ix`d5Xg{|7wXbU&l*4eh(`fR&x1GZFqnmvzmL_ZUEB@=a%z1`kv@3ME>d+mK( zy7aRyWjpfOR~H-Ipwdyp>eEbDSkJ1{L5JvO!X9L@PT~B)?<_aE!CE%fTRDB$?KCrE z<+uu5mCRLj9J)8VTEk3KJ*+JXEiaQ(IY-;|T*@^vIW;pewR48l!?d)^9dYmG9BF`U zu-TKr>}2O0shGK`+*9GHVs2_MddoW2+Fx&CMwlH$IpGdg%{}CEJp3DQBQJbL62Y8<&_` GlKu}g$7ojo From 0993c0f0b090d00dd7fe6a4234a5a997e67bc1f3 Mon Sep 17 00:00:00 2001 From: gienkov Date: Sun, 17 May 2015 23:28:00 +0200 Subject: [PATCH 041/252] Fix tabs and errors --- addons/viewdistance/ACE_Settings.hpp | 6 +- addons/viewdistance/stringtable.xml | 196 +++++++++++++-------------- addons/zeus/stringtable.xml | 130 +++++++++--------- 3 files changed, 164 insertions(+), 168 deletions(-) diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp index b56bcd2703..42e022bb25 100644 --- a/addons/viewdistance/ACE_Settings.hpp +++ b/addons/viewdistance/ACE_Settings.hpp @@ -8,7 +8,7 @@ class ACE_Settings { class GVAR(viewDistanceOnFoot) { typeName = "SCALAR"; isClientSettable = 1; - value = 0; // index, NOT value // Can set it to client's actual viewdistance in the init function once ACE_Settings supports numbers (if ever). + value = 11; // index, NOT value // Can set it to client's actual viewdistance in the init function once ACE_Settings supports numbers (if ever). values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf displayName = "$STR_ACE_ViewDistance_onFoot_DisplayName"; description = "$STR_ACE_ViewDistance_onFoot_Description"; @@ -16,7 +16,7 @@ class ACE_Settings { class GVAR(viewDistanceLandVehicle) { typeName = "SCALAR"; isClientSettable = 1; - value = 0; // index, NOT value + value = 11; // index, NOT value values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf displayName = "$STR_ACE_ViewDistance_landVehicle_DisplayName"; description = "$STR_ACE_ViewDistance_landVehicle_Description"; @@ -24,7 +24,7 @@ class ACE_Settings { class GVAR(viewDistanceAirVehicle) { typeName = "SCALAR"; isClientSettable = 1; - value = 0; // index, NOT value + value = 11; // index, NOT value values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf displayName = "$STR_ACE_ViewDistance_airVehicle_DisplayName"; description = "$STR_ACE_ViewDistance_airVehicle_Description"; diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml index b43f24e4d5..bbcfb9e60b 100644 --- a/addons/viewdistance/stringtable.xml +++ b/addons/viewdistance/stringtable.xml @@ -1,103 +1,101 @@  - - - - View Distance Limiter - Ogranicznik zasięgu widzenia - - - Allows limiting maximum view distance that can be set by players. - Pozwala ustawić maksymalny limit zasięgu widzenia. - - - Enable ACE viewdistance - Wł. zasięg widzenia ACE - - - Enables ACE viewdistance - Aktywuje możliwość zmiany zasięgu widzenia w menu ustawień ACE - - - View Distance Limit - Limit zas. widzenia - - - Sets the limit for how high clients can raise their view distance (up to 10000) - Ustawia maksymalny limit zasięgu widzenia jaki mogą ustawić gracze (do 10000) - - - Limit for client's view distance set here and can overridden by module - Limit zasięgu widzenia jest ustawiany tutaj i może zostać nadpisany poprzez moduł - - - Client View Distance (On Foot) - Zasięg widzenia (piechota) - - - Changes in game view distance when the player is on foot. - Zmienia zasięg widzenia kiedy gracz porusza się na piechotę. - - - Client View Distance (Land Vehicle) - Zasięg widzenia (pojazdy naziemne) - - - Changes in game view distance when the player is in a land vehicle. - Zmienia zasięg widzenia kiedy gracz porusza się pojazdami naziemnymi. - - - Client View Distance (Air Vehicle) - Zasięg widzenia (pojazdy lotnicze) - - - Changes in game view distance when the player is in an air vehicle. - Zmienia zasięg widzenia kiedy gracz porusza się pojazdami lotniczymi. - - - Dynamic Object View Distance - Dynamiczny zasięg rysowania obiektów - - - Sets the object view distance as a coefficient of the view distance. - Zmienia zasięg rysowania obiektów jako mnożnik zasięgu widzenia. - - - Off - Wyłącz - - - Very Low - Bardzo niski - - - Low - Niski - - - Medium - Średni - - - High - Wysoki - - - Very High - Bardzo wysoki - - - View Distance: - Zasięg widzenia: - - - Object View Distance is - Zasięg widzenia obiektów wynosi - - - That option is invalid! The limit is - Ta opcja jest nieprawidłowa! Limit wynosi - - + + + View Distance Limiter + Ogranicznik zasięgu widzenia + + + Allows limiting maximum view distance that can be set by players. + Pozwala ustawić maksymalny limit zasięgu widzenia. + + + Enable ACE viewdistance + Wł. zasięg widzenia ACE + + + Enables ACE viewdistance + Aktywuje możliwość zmiany zasięgu widzenia w menu ustawień ACE + + + View Distance Limit + Limit zas. widzenia + + + Sets the limit for how high clients can raise their view distance (up to 10000) + Ustawia maksymalny limit zasięgu widzenia jaki mogą ustawić gracze (do 10000) + + + Limit for client's view distance set here and can overridden by module + Limit zasięgu widzenia jest ustawiany tutaj i może zostać nadpisany poprzez moduł + + + Client View Distance (On Foot) + Zasięg widzenia (piechota) + + + Changes in game view distance when the player is on foot. + Zmienia zasięg widzenia kiedy gracz porusza się na piechotę. + + + Client View Distance (Land Vehicle) + Zasięg widzenia (pojazdy naziemne) + + + Changes in game view distance when the player is in a land vehicle. + Zmienia zasięg widzenia kiedy gracz porusza się pojazdami naziemnymi. + + + Client View Distance (Air Vehicle) + Zasięg widzenia (pojazdy lotnicze) + + + Changes in game view distance when the player is in an air vehicle. + Zmienia zasięg widzenia kiedy gracz porusza się pojazdami lotniczymi. + + + Dynamic Object View Distance + Dynamiczny zasięg rysowania obiektów + + + Sets the object view distance as a coefficient of the view distance. + Zmienia zasięg rysowania obiektów jako mnożnik zasięgu widzenia. + + + Off + Wyłącz + + + Very Low + Bardzo niski + + + Low + Niski + + + Medium + Średni + + + High + Wysoki + + + Very High + Bardzo wysoki + + + View Distance: + Zasięg widzenia: + + + Object View Distance is + Zasięg widzenia obiektów wynosi + + + That option is invalid! The limit is + Ta opcja jest nieprawidłowa! Limit wynosi + diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 5fa8215294..e756d5d085 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -1,71 +1,69 @@  - - - Zeus Settings [ACE] - Ustawienia Zeusa [ACE] - - - Provides control over various aspects of Zeus. - Pozwala kontrolować różne aspekty Zeusa. - - - Ascension Messages - Wiad. o nowym Zeusie - - - Display global popup messages when a player is assigned as Zeus. - Wyświetlaj globalną wiadomość kiedy gracz zostanie przydzielony jako Zeus - - - Zeus Eagle - Orzeł Zeusa - - - Spawn an eagle that follows the Zeus camera. - Spawnuj orła, który podąrza za kamerą Zeusa. - - - Wind Sounds - Dźwięki wiatru - - - Play wind sounds when Zeus remote controls a unit. - Odtwarzaj dźwięki wiatru kiedy Zeus zdalnie kontroluje jednostkę. - - - Ordnance Warning - Ostrz. o ostrzale arty. - - - Play a radio warning when Zeus uses ordnance. - Odtwarzaj wiadomość radiową kiedy Zeus używa artylerii. - - - Reveal Mines - Pokazuj miny - - - Reveal mines to allies and/or place map markers. - Pokazuj znaczniki min dla sojuszników i/lub twórz markery na mapie w miejscu min. - - - Disabled - Wyłączone - - - Reveal to Allies - Pokaż dla sojuszników - - - Allies + Map Markers - Sojusznicy + markery na mapie - - - ACE Zeus - ACE Zeus - - + + Zeus Settings [ACE] + Ustawienia Zeusa [ACE] + + + Provides control over various aspects of Zeus. + Pozwala kontrolować różne aspekty Zeusa. + + + Ascension Messages + Wiad. o nowym Zeusie + + + Display global popup messages when a player is assigned as Zeus. + Wyświetlaj globalną wiadomość kiedy gracz zostanie przydzielony jako Zeus + + + Zeus Eagle + Orzeł Zeusa + + + Spawn an eagle that follows the Zeus camera. + Spawnuj orła, który podąrza za kamerą Zeusa. + + + Wind Sounds + Dźwięki wiatru + + + Play wind sounds when Zeus remote controls a unit. + Odtwarzaj dźwięki wiatru kiedy Zeus zdalnie kontroluje jednostkę. + + + Ordnance Warning + Ostrz. o ostrzale arty. + + + Play a radio warning when Zeus uses ordnance. + Odtwarzaj wiadomość radiową kiedy Zeus używa artylerii. + + + Reveal Mines + Pokazuj miny + + + Reveal mines to allies and/or place map markers. + Pokazuj znaczniki min dla sojuszników i/lub twórz markery na mapie w miejscu min. + + + Disabled + Wyłączone + + + Reveal to Allies + Pokaż dla sojuszników + + + Allies + Map Markers + Sojusznicy + markery na mapie + + + ACE Zeus + ACE Zeus + From bace23c3317ab17223eb1981667984c1aa23adab Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 18 May 2015 18:44:52 -0500 Subject: [PATCH 042/252] Button to dump array info to clipboard --- addons/optionsmenu/XEH_preInit.sqf | 1 + .../functions/fnc_debugDumpToClipboard.sqf | 60 +++++++++++++++++++ addons/optionsmenu/gui/settingsMenu.hpp | 6 ++ addons/optionsmenu/stringtable.xml | 3 + 4 files changed, 70 insertions(+) create mode 100644 addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf diff --git a/addons/optionsmenu/XEH_preInit.sqf b/addons/optionsmenu/XEH_preInit.sqf index 42f50287f2..e35784560a 100644 --- a/addons/optionsmenu/XEH_preInit.sqf +++ b/addons/optionsmenu/XEH_preInit.sqf @@ -2,6 +2,7 @@ ADDON = false; +PREP(debugDumpToClipboard); PREP(onListBoxSettingsChanged); PREP(onListBoxShowSelectionChanged); PREP(onSettingsMenuOpen); diff --git a/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf new file mode 100644 index 0000000000..55e962b3c3 --- /dev/null +++ b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf @@ -0,0 +1,60 @@ +/* + * Author: PabstMirror + * Dumps debug info to clipboard. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * [] call ACE_optionsmenu_fnc_debugDumpToClipboard + * + * Public: No + */ +#include "script_component.hpp" + +_outputString = "Array Variable Count': +"; + +{ + private["_var"]; + _var = missionNamespace getVariable [_x, nil]; + if(!isnil "_var" && {(typeName _var) == "ARRAY"} ) then { + _outputString = _outputString + format["%1 - ARRAY SIZE: %2 +", _x, (count _var)]; + }; +} forEach (allVariables missionNamespace); + +{ + _unit = _x; + { + private["_var"]; + _var = missionNamespace getVariable [_x, nil]; + if(!isnil "_var" && {(typeName _var) == "ARRAY"} ) then { + _outputString = _outputString + text format["%1 - ARRAY SIZE: %2 for %3 +", _x, (count _var), _unit]; + }; + } forEach (allVariables _unit); +} forEach allUnits; + + +FUNC(clipboardExport) = { + private["_chunks"]; + _chunks = []; + + _chunks = [_this select 0, "-"] call CBA_fnc_split; + + { + private["_chunk"]; + _chunk = _x + ";"; + "ace_clipboard" callExtension format["%1", _chunk]; + } forEach _chunks; + + "ace_clipboard" callExtension "--COMPLETE--"; +}; + + +[_outputString] call FUNC(clipboardExport); + diff --git a/addons/optionsmenu/gui/settingsMenu.hpp b/addons/optionsmenu/gui/settingsMenu.hpp index 04e7ee5aaa..8da18a303b 100644 --- a/addons/optionsmenu/gui/settingsMenu.hpp +++ b/addons/optionsmenu/gui/settingsMenu.hpp @@ -247,6 +247,12 @@ class ACE_settingsMenu { text = "$STR_ACE_OptionsMenu_OpenExport"; x = X_PART(18); action = QUOTE(if (GVAR(serverConfigGeneration) > 0) then {createDialog 'ACE_serverSettingsMenu'; }); + }; + class action_debug: actionClose { + idc = 1102; + text = "$STR_ACE_OptionsMenu_DumpDebug"; + x = X_PART(26.5); + action = QUOTE([] call FUNC(debugDumpToClipboard)); }; }; }; diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 22a1a88cfa..33bd80cae4 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -285,5 +285,8 @@ Bottom Dół + + Debug To Clipboard + From b727fd79c4f0c05932869cb784a6d69941a030cf Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 18 May 2015 19:29:39 -0500 Subject: [PATCH 043/252] Call Ext Directly CBA_fnc_split problems --- .../functions/fnc_debugDumpToClipboard.sqf | 27 +++---------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf index 55e962b3c3..796ee5891e 100644 --- a/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf +++ b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf @@ -15,14 +15,12 @@ */ #include "script_component.hpp" -_outputString = "Array Variable Count': -"; { private["_var"]; _var = missionNamespace getVariable [_x, nil]; if(!isnil "_var" && {(typeName _var) == "ARRAY"} ) then { - _outputString = _outputString + format["%1 - ARRAY SIZE: %2 + "ace_clipboard" callExtension format["%1 - ARRAY SIZE: %2 ", _x, (count _var)]; }; } forEach (allVariables missionNamespace); @@ -31,30 +29,13 @@ _outputString = "Array Variable Count': _unit = _x; { private["_var"]; - _var = missionNamespace getVariable [_x, nil]; + _var = _unit getVariable [_x, nil]; if(!isnil "_var" && {(typeName _var) == "ARRAY"} ) then { - _outputString = _outputString + text format["%1 - ARRAY SIZE: %2 for %3 + "ace_clipboard" callExtension format["%1 - ARRAY SIZE: %2 for %3 ", _x, (count _var), _unit]; }; } forEach (allVariables _unit); } forEach allUnits; -FUNC(clipboardExport) = { - private["_chunks"]; - _chunks = []; - - _chunks = [_this select 0, "-"] call CBA_fnc_split; - - { - private["_chunk"]; - _chunk = _x + ";"; - "ace_clipboard" callExtension format["%1", _chunk]; - } forEach _chunks; - - "ace_clipboard" callExtension "--COMPLETE--"; -}; - - -[_outputString] call FUNC(clipboardExport); - +"ace_clipboard" callExtension "--COMPLETE--"; From 7c8505592b7e46f1cdcb0816005f08e18c6ec23a Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 19 May 2015 01:57:41 -0500 Subject: [PATCH 044/252] Chunk Data to Extension, add some extra diag info --- .../functions/fnc_debugDumpToClipboard.sqf | 48 ++++++++++++++++--- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf index 796ee5891e..706e3e95e9 100644 --- a/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf +++ b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf @@ -15,12 +15,42 @@ */ #include "script_component.hpp" +private ["_outputString", "_var", "_unit", "_countSent"]; +#define CHARS_PER_EXT_CALL 2000 +#define MIN_ARRAY_SIZE 0 + +_outputString = "---ACE Debug--- +"; + +_outputString = _outputString + format ["--Performance-- +diag_fps = %1 +count cba_common_perFrameHandlerArray = %2 +count diag_activeSQFScripts = %3 +count diag_activeSQSScripts = %4 +count diag_activeMissionFSMs = %5 + +", diag_fps, count cba_common_perFrameHandlerArray, count diag_activeSQFScripts, count diag_activeSQSScripts,count diag_activeMissionFSMs]; + +_outputString = _outputString + "--Player-- +"; +if (isNull ACE_player) then { + _outputString = _outputString + "Null + +"; +} else { + _outputString = _outputString + format ["typeOf = %1 +animationState = %2 + +", typeOf ace_player, animationState ace_player]; +}; + +_outputString = _outputString + format ["--Array Info (count >= %1)-- +", MIN_ARRAY_SIZE]; { - private["_var"]; _var = missionNamespace getVariable [_x, nil]; - if(!isnil "_var" && {(typeName _var) == "ARRAY"} ) then { - "ace_clipboard" callExtension format["%1 - ARRAY SIZE: %2 + if(!isnil "_var" && {(typeName _var) == "ARRAY"} && {(count _var) > MIN_ARRAY_SIZE}) then { + _outputString = _outputString + format["%1 - ARRAY SIZE: %2 ", _x, (count _var)]; }; } forEach (allVariables missionNamespace); @@ -28,14 +58,18 @@ { _unit = _x; { - private["_var"]; _var = _unit getVariable [_x, nil]; - if(!isnil "_var" && {(typeName _var) == "ARRAY"} ) then { - "ace_clipboard" callExtension format["%1 - ARRAY SIZE: %2 for %3 -", _x, (count _var), _unit]; + if(!isnil "_var" && {(typeName _var) == "ARRAY"} && {(count _var) > MIN_ARRAY_SIZE}) then { + _outputString = _outputString + format["%1 on [%2] - ARRAY SIZE: %3 +", _x, _unit, (count _var)]; }; } forEach (allVariables _unit); } forEach allUnits; +_countSent = 0; +while {_countSent < (count _outputString)} do { + "ace_clipboard" callExtension (_outputString select [_countSent, CHARS_PER_EXT_CALL]); + _countSent = _countSent + CHARS_PER_EXT_CALL; +}; "ace_clipboard" callExtension "--COMPLETE--"; From f40e471fb91403834cd68de0888528ceff896f17 Mon Sep 17 00:00:00 2001 From: ulteq Date: Tue, 19 May 2015 16:35:26 +0200 Subject: [PATCH 045/252] Initial draft of the ACE2 tracer config compat pbo --- addons/tracers/model.cfg | 44 ---- {addons => optionals}/tracers/$PBOPREFIX$ | 0 optionals/tracers/CfgAmmo.hpp | 209 ++++++++++++++++++ {addons => optionals}/tracers/README.md | 1 - .../tracers/ace_40mm_tracer_red.p3d | Bin .../tracers/ace_TracerGreen2.p3d | Bin .../tracers/ace_TracerRed2.p3d | Bin .../tracers/ace_TracerYellow2.p3d | Bin .../tracers/ace_shell_tracer_green.p3d | Bin .../tracers/ace_shell_tracer_red.p3d | Bin .../tracers/ace_shell_tracer_yellow.p3d | Bin {addons => optionals}/tracers/config.cpp | 4 +- .../data/SLX_GreenTracer_Material.rvmat | 0 .../tracers/data/SLX_RedTracer_Material.rvmat | 0 .../data/SLX_YellowTracer_Material.rvmat | 0 .../tracers/data/TracerGreen.paa | Bin .../tracers/data/TracerRed.paa | Bin .../tracers/data/TracerYellow.paa | Bin .../tracers/data/clear_empty.paa | Bin .../tracers/data/tracer_green.rvmat | 0 .../tracers/data/tracer_green1_ca.paa | Bin .../tracers/data/tracer_red.rvmat | 0 .../tracers/data/tracer_red1_ca.paa | Bin .../tracers/data/tracer_yellow.rvmat | 0 .../tracers/data/tracer_yellow1_ca.paa | Bin optionals/tracers/model.cfg | 44 ++++ .../tracers/script_component.hpp | 0 .../tracers/tracer_green_2.p3d | Bin .../tracers/tracer_red_2.p3d | Bin .../tracers/tracer_yellow_2.p3d | Bin 30 files changed, 256 insertions(+), 46 deletions(-) delete mode 100644 addons/tracers/model.cfg rename {addons => optionals}/tracers/$PBOPREFIX$ (100%) create mode 100644 optionals/tracers/CfgAmmo.hpp rename {addons => optionals}/tracers/README.md (99%) rename {addons => optionals}/tracers/ace_40mm_tracer_red.p3d (100%) rename {addons => optionals}/tracers/ace_TracerGreen2.p3d (100%) rename {addons => optionals}/tracers/ace_TracerRed2.p3d (100%) rename {addons => optionals}/tracers/ace_TracerYellow2.p3d (100%) rename {addons => optionals}/tracers/ace_shell_tracer_green.p3d (100%) rename {addons => optionals}/tracers/ace_shell_tracer_red.p3d (100%) rename {addons => optionals}/tracers/ace_shell_tracer_yellow.p3d (100%) rename {addons => optionals}/tracers/config.cpp (76%) rename {addons => optionals}/tracers/data/SLX_GreenTracer_Material.rvmat (100%) rename {addons => optionals}/tracers/data/SLX_RedTracer_Material.rvmat (100%) rename {addons => optionals}/tracers/data/SLX_YellowTracer_Material.rvmat (100%) rename {addons => optionals}/tracers/data/TracerGreen.paa (100%) rename {addons => optionals}/tracers/data/TracerRed.paa (100%) rename {addons => optionals}/tracers/data/TracerYellow.paa (100%) rename {addons => optionals}/tracers/data/clear_empty.paa (100%) rename {addons => optionals}/tracers/data/tracer_green.rvmat (100%) rename {addons => optionals}/tracers/data/tracer_green1_ca.paa (100%) rename {addons => optionals}/tracers/data/tracer_red.rvmat (100%) rename {addons => optionals}/tracers/data/tracer_red1_ca.paa (100%) rename {addons => optionals}/tracers/data/tracer_yellow.rvmat (100%) rename {addons => optionals}/tracers/data/tracer_yellow1_ca.paa (100%) create mode 100644 optionals/tracers/model.cfg rename {addons => optionals}/tracers/script_component.hpp (100%) rename {addons => optionals}/tracers/tracer_green_2.p3d (100%) rename {addons => optionals}/tracers/tracer_red_2.p3d (100%) rename {addons => optionals}/tracers/tracer_yellow_2.p3d (100%) diff --git a/addons/tracers/model.cfg b/addons/tracers/model.cfg deleted file mode 100644 index fd1f43c832..0000000000 --- a/addons/tracers/model.cfg +++ /dev/null @@ -1,44 +0,0 @@ -class CfgSkeletons { - class Default { - isDiscrete = 1; - skeletonInherit = ""; - skeletonBones[] = {}; - }; - class ACE_Tracer_Skeleton : Default {}; - class ACE_Tracer_Skeleton_Default: ACE_Tracer_Skeleton { // BWC - skeletonInherit = "ACE_Tracer_Skeleton"; - skeletonBones[]= { - "core","", - "halo","", - "tracer","" - }; - }; -}; - -class CfgModels { - class Default { - sectionsInherit=""; - sections[] = {}; - skeletonName = ""; - }; - class ACE_Tracer: Default { - skeletonName = "ACE_Tracer_Skeleton"; - }; - class ACE_Tracer_Default: ACE_Tracer { // BWC - skeletonName = "ACE_Tracer_Skeleton_Default"; - }; - // Bullet tracers - class ace_TracerRed2: ACE_Tracer_Default {}; - class ace_TracerGreen2: ACE_Tracer_Default {}; - class ace_TracerYellow2: ACE_Tracer_Default {}; - - // Bullet tracers, alternative - class tracer_green_2: ACE_Tracer {}; - class tracer_red_2: ACE_Tracer {}; - class tracer_yellow_2: ACE_Tracer {}; - - // Shell Tracers - class ace_shell_tracer_green: ACE_Tracer {}; - class ace_shell_tracer_red: ACE_Tracer {}; - class ace_shell_tracer_yellow: ACE_Tracer {}; -}; diff --git a/addons/tracers/$PBOPREFIX$ b/optionals/tracers/$PBOPREFIX$ similarity index 100% rename from addons/tracers/$PBOPREFIX$ rename to optionals/tracers/$PBOPREFIX$ diff --git a/optionals/tracers/CfgAmmo.hpp b/optionals/tracers/CfgAmmo.hpp new file mode 100644 index 0000000000..64d530f427 --- /dev/null +++ b/optionals/tracers/CfgAmmo.hpp @@ -0,0 +1,209 @@ + +class CfgAmmo { + class B_556x45_Ball; + class B_556x45_Ball_Tracer_Red : B_556x45_Ball { + model = PATHTOF(ace_TracerRed2.p3d); + }; + class B_556x45_Ball_Tracer_Green : B_556x45_Ball { + model = PATHTOF(ace_TracerGreen2.p3d); + }; + class B_556x45_Ball_Tracer_Yellow : B_556x45_Ball { + model = PATHTOF(ace_TracerYellow2.p3d); + }; + class ACE_545x39_Ball_7T3M : B_556x45_Ball_Tracer_Green { + model = PATHTOF(ace_TracerGreen2.p3d); + }; + class B_65x39_Case; + class B_65x39_Case_green: B_65x39_Case { + model = PATHTOF(ace_TracerGreen2.p3d); + }; + class B_65x39_Case_yellow: B_65x39_Case { + model = PATHTOF(ace_TracerYellow2.p3d); + }; + class B_65x39_Caseless; + class B_65x39_Caseless_green: B_65x39_Caseless { + model = PATHTOF(ace_TracerGreen2.p3d); + }; + class B_65x39_Caseless_yellow: B_65x39_Caseless { + model = PATHTOF(ace_TracerYellow2.p3d); + }; + class B_762x51_Ball; + class B_762x51_Tracer_Red: B_762x51_Ball { + model = PATHTOF(ace_TracerRed2.p3d); + }; + class B_762x51_Tracer_Green: B_762x51_Ball { + model = PATHTOF(ace_TracerGreen2.p3d); + }; + class B_762x51_Tracer_Yellow: B_762x51_Ball { + model = PATHTOF(ace_TracerYellow2.p3d); + }; + class SubmunitionBullet; + class B_762x51_Minigun_Tracer_Red: SubmunitionBullet { + model = PATHTOF(ace_TracerRed2.p3d); + }; + class B_762x51_Minigun_Tracer_Red_splash: B_762x51_Ball { + model = PATHTOF(ace_TracerRed2.p3d); + }; + class B_762x54_Ball; + class B_762x54_Tracer_Red: B_762x54_Ball { + model = PATHTOF(ace_TracerRed2.p3d); + }; + class B_762x54_Tracer_Green: B_762x54_Ball { + model = PATHTOF(ace_TracerGreen2.p3d); + }; + class B_762x54_Tracer_Yellow: B_762x54_Ball { + model = PATHTOF(ace_TracerYellow2.p3d); + }; + class ACE_762x54_Ball_7T2 : B_762x54_Tracer_Green { + model = PATHTOF(ace_TracerGreen2.p3d); + }; + class ACE_762x39_Ball_57N231P : B_762x54_Tracer_Green { + model = PATHTOF(ace_TracerGreen2.p3d); + }; + class B_9x21_Ball; + class B_9x21_Ball_Tracer_Green: B_9x21_Ball { + model = PATHTOF(ace_TracerGreen2.p3d); + }; + class B_127x99_Ball; + class B_127x99_Ball_Tracer_Red: B_127x99_Ball { + model = PATHTOF(ace_TracerRed2.p3d); + }; + class B_127x99_Ball_Tracer_Green: B_127x99_Ball { + model = PATHTOF(ace_TracerGreen2.p3d); + }; + class B_127x99_Ball_Tracer_Yellow: B_127x99_Ball { + model = PATHTOF(ace_TracerYellow2.p3d); + }; + class B_127x99_SLAP; + class B_127x99_SLAP_Tracer_Red: B_127x99_SLAP { + model = PATHTOF(ace_TracerRed2.p3d); + }; + class B_127x99_SLAP_Tracer_Green: B_127x99_SLAP { + model = PATHTOF(ace_TracerGreen2.p3d); + }; + class B_127x99_SLAP_Tracer_Yellow: B_127x99_SLAP { + model = PATHTOF(ace_TracerYellow2.p3d); + }; + class B_30mm_HE; + class B_30mm_HE_Tracer_Red: B_30mm_HE { + }; + class B_30mm_HE_Tracer_Green: B_30mm_HE { + }; + class B_30mm_HE_Tracer_Yellow: B_30mm_HE { + }; + class B_40mm_GPR; + class B_40mm_GPR_Tracer_Red: B_40mm_GPR { + model = PATHTOF(ace_40mm_tracer_red.p3d); + }; + class B_40mm_GPR_Tracer_Green: B_40mm_GPR { + }; + class B_40mm_GPR_Tracer_Yellow: B_40mm_GPR { + }; + class B_20mm; + class B_20mm_Tracer_Red: B_20mm { + }; + class B_30mm_AP; + class B_30mm_AP_Tracer_Red: B_30mm_AP { + }; + class B_30mm_AP_Tracer_Green: B_30mm_AP { + }; + class B_30mm_AP_Tracer_Yellow: B_30mm_AP { + }; + class B_30mm_APFSDS; + class B_30mm_APFSDS_Tracer_Red: B_30mm_APFSDS { + }; + class B_30mm_APFSDS_Tracer_Green: B_30mm_APFSDS { + }; + class B_30mm_APFSDS_Tracer_Yellow: B_30mm_APFSDS { + }; + class B_35mm_AA; + class B_35mm_AA_Tracer_Red: B_35mm_AA { + }; + class B_35mm_AA_Tracer_Green: B_35mm_AA { + }; + class B_35mm_AA_Tracer_Yellow: B_35mm_AA { + }; + class Sh_120mm_HE; + class Sh_120mm_HE_Tracer_Red: Sh_120mm_HE { + model = PATHTOF(ace_shell_tracer_red.p3d); + }; + class Sh_120mm_HE_Tracer_Green: Sh_120mm_HE { + model = PATHTOF(ace_shell_tracer_green.p3d); + }; + class Sh_120mm_HE_Tracer_Yellow: Sh_120mm_HE { + model = PATHTOF(ace_shell_tracer_yellow.p3d); + }; + class Sh_120mm_APFSDS; + class Sh_120mm_APFSDS_Tracer_Red: Sh_120mm_APFSDS { + model = PATHTOF(ace_shell_tracer_red.p3d); + }; + class Sh_120mm_APFSDS_Tracer_Green: Sh_120mm_APFSDS { + model = PATHTOF(ace_shell_tracer_green.p3d); + }; + class Sh_120mm_APFSDS_Tracer_Yellow: Sh_120mm_APFSDS { + model = PATHTOF(ace_shell_tracer_yellow.p3d); + }; + class B_762x51_Minigun_Tracer_Red: SubmunitionBullet { + model = PATHTOF(ace_TracerRed2.p3d); + }; + class B_762x51_Minigun_Tracer_Yellow: B_762x51_Minigun_Tracer_Red { + model = PATHTOF(ace_TracerYellow2.p3d); + }; + class B_762x51_Ball; + class B_762x51_Minigun_Tracer_Red_splash: B_762x51_Ball { + model = PATHTOF(ace_TracerRed2.p3d); + }; + class B_762x51_Minigun_Tracer_Yellow_splash: B_762x51_Minigun_Tracer_Red_splash { + model = PATHTOF(ace_TracerYellow2.p3d); + }; + class Sh_125mm_APFSDS; + class Sh_125mm_APFSDS_T_Red: Sh_125mm_APFSDS { + model = PATHTOF(ace_shell_tracer_red.p3d); + }; + class Sh_125mm_APFSDS_T_Green: Sh_125mm_APFSDS { + model = PATHTOF(ace_shell_tracer_green.p3d); + }; + class Sh_125mm_APFSDS_T_Yellow: Sh_125mm_APFSDS { + model = PATHTOF(ace_shell_tracer_yellow.p3d); + }; + class Sh_125mm_HE; + class Sh_125mm_HE_T_Red: Sh_125mm_HE { + model = PATHTOF(ace_shell_tracer_red.p3d); + }; + class Sh_125mm_HE_T_Green: Sh_125mm_HE { + model = PATHTOF(ace_shell_tracer_green.p3d); + }; + class Sh_125mm_HE_T_Yellow: Sh_125mm_HE { + model = PATHTOF(ace_shell_tracer_yellow.p3d); + }; + class Sh_125mm_HEAT; + class Sh_125mm_HEAT_T_Red: Sh_125mm_HEAT { + model = PATHTOF(ace_shell_tracer_red.p3d); + }; + class Sh_125mm_HEAT_T_Green: Sh_125mm_HEAT { + model = PATHTOF(ace_shell_tracer_green.p3d); + }; + class Sh_125mm_HEAT_T_Yellow: Sh_125mm_HEAT { + model = PATHTOF(ace_shell_tracer_yellow.p3d); + }; + class Sh_105mm_APFSDS; + class Sh_105mm_APFSDS_T_Red: Sh_105mm_APFSDS { + model = PATHTOF(ace_shell_tracer_red.p3d); + }; + class Sh_105mm_APFSDS_T_Green: Sh_105mm_APFSDS { + model = PATHTOF(ace_shell_tracer_green.p3d); + }; + class Sh_105mm_APFSDS_T_Yellow: Sh_105mm_APFSDS { + model = PATHTOF(ace_shell_tracer_yellow.p3d); + }; + class Sh_105mm_HEAT_MP; + class Sh_105mm_HEAT_MP_T_Red: Sh_105mm_HEAT_MP { + model = PATHTOF(ace_shell_tracer_red.p3d); + }; + class Sh_105mm_HEAT_MP_T_Green: Sh_105mm_HEAT_MP { + model = PATHTOF(ace_shell_tracer_green.p3d); + }; + class Sh_105mm_HEAT_MP_T_Yellow: Sh_105mm_HEAT_MP { + model = PATHTOF(ace_shell_tracer_yellow.p3d); + }; +}; diff --git a/addons/tracers/README.md b/optionals/tracers/README.md similarity index 99% rename from addons/tracers/README.md rename to optionals/tracers/README.md index 3fa628ce27..813949de4b 100644 --- a/addons/tracers/README.md +++ b/optionals/tracers/README.md @@ -3,7 +3,6 @@ ace_tracers Ball tracers for ArmA3 ported from ACE2. - ## Maintainers The people responsible for merging changes to this component or answering potential questions. diff --git a/addons/tracers/ace_40mm_tracer_red.p3d b/optionals/tracers/ace_40mm_tracer_red.p3d similarity index 100% rename from addons/tracers/ace_40mm_tracer_red.p3d rename to optionals/tracers/ace_40mm_tracer_red.p3d diff --git a/addons/tracers/ace_TracerGreen2.p3d b/optionals/tracers/ace_TracerGreen2.p3d similarity index 100% rename from addons/tracers/ace_TracerGreen2.p3d rename to optionals/tracers/ace_TracerGreen2.p3d diff --git a/addons/tracers/ace_TracerRed2.p3d b/optionals/tracers/ace_TracerRed2.p3d similarity index 100% rename from addons/tracers/ace_TracerRed2.p3d rename to optionals/tracers/ace_TracerRed2.p3d diff --git a/addons/tracers/ace_TracerYellow2.p3d b/optionals/tracers/ace_TracerYellow2.p3d similarity index 100% rename from addons/tracers/ace_TracerYellow2.p3d rename to optionals/tracers/ace_TracerYellow2.p3d diff --git a/addons/tracers/ace_shell_tracer_green.p3d b/optionals/tracers/ace_shell_tracer_green.p3d similarity index 100% rename from addons/tracers/ace_shell_tracer_green.p3d rename to optionals/tracers/ace_shell_tracer_green.p3d diff --git a/addons/tracers/ace_shell_tracer_red.p3d b/optionals/tracers/ace_shell_tracer_red.p3d similarity index 100% rename from addons/tracers/ace_shell_tracer_red.p3d rename to optionals/tracers/ace_shell_tracer_red.p3d diff --git a/addons/tracers/ace_shell_tracer_yellow.p3d b/optionals/tracers/ace_shell_tracer_yellow.p3d similarity index 100% rename from addons/tracers/ace_shell_tracer_yellow.p3d rename to optionals/tracers/ace_shell_tracer_yellow.p3d diff --git a/addons/tracers/config.cpp b/optionals/tracers/config.cpp similarity index 76% rename from addons/tracers/config.cpp rename to optionals/tracers/config.cpp index f01b9297cb..7ea5992f14 100644 --- a/addons/tracers/config.cpp +++ b/optionals/tracers/config.cpp @@ -5,9 +5,11 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; + requiredAddons[] = {"ace_ballistics"}; author[] = {"ACE2 Team"}; authorUrl = "https://www.ace3mod.com"; VERSION_CONFIG; }; }; + +#include "CfgAmmo.hpp" diff --git a/addons/tracers/data/SLX_GreenTracer_Material.rvmat b/optionals/tracers/data/SLX_GreenTracer_Material.rvmat similarity index 100% rename from addons/tracers/data/SLX_GreenTracer_Material.rvmat rename to optionals/tracers/data/SLX_GreenTracer_Material.rvmat diff --git a/addons/tracers/data/SLX_RedTracer_Material.rvmat b/optionals/tracers/data/SLX_RedTracer_Material.rvmat similarity index 100% rename from addons/tracers/data/SLX_RedTracer_Material.rvmat rename to optionals/tracers/data/SLX_RedTracer_Material.rvmat diff --git a/addons/tracers/data/SLX_YellowTracer_Material.rvmat b/optionals/tracers/data/SLX_YellowTracer_Material.rvmat similarity index 100% rename from addons/tracers/data/SLX_YellowTracer_Material.rvmat rename to optionals/tracers/data/SLX_YellowTracer_Material.rvmat diff --git a/addons/tracers/data/TracerGreen.paa b/optionals/tracers/data/TracerGreen.paa similarity index 100% rename from addons/tracers/data/TracerGreen.paa rename to optionals/tracers/data/TracerGreen.paa diff --git a/addons/tracers/data/TracerRed.paa b/optionals/tracers/data/TracerRed.paa similarity index 100% rename from addons/tracers/data/TracerRed.paa rename to optionals/tracers/data/TracerRed.paa diff --git a/addons/tracers/data/TracerYellow.paa b/optionals/tracers/data/TracerYellow.paa similarity index 100% rename from addons/tracers/data/TracerYellow.paa rename to optionals/tracers/data/TracerYellow.paa diff --git a/addons/tracers/data/clear_empty.paa b/optionals/tracers/data/clear_empty.paa similarity index 100% rename from addons/tracers/data/clear_empty.paa rename to optionals/tracers/data/clear_empty.paa diff --git a/addons/tracers/data/tracer_green.rvmat b/optionals/tracers/data/tracer_green.rvmat similarity index 100% rename from addons/tracers/data/tracer_green.rvmat rename to optionals/tracers/data/tracer_green.rvmat diff --git a/addons/tracers/data/tracer_green1_ca.paa b/optionals/tracers/data/tracer_green1_ca.paa similarity index 100% rename from addons/tracers/data/tracer_green1_ca.paa rename to optionals/tracers/data/tracer_green1_ca.paa diff --git a/addons/tracers/data/tracer_red.rvmat b/optionals/tracers/data/tracer_red.rvmat similarity index 100% rename from addons/tracers/data/tracer_red.rvmat rename to optionals/tracers/data/tracer_red.rvmat diff --git a/addons/tracers/data/tracer_red1_ca.paa b/optionals/tracers/data/tracer_red1_ca.paa similarity index 100% rename from addons/tracers/data/tracer_red1_ca.paa rename to optionals/tracers/data/tracer_red1_ca.paa diff --git a/addons/tracers/data/tracer_yellow.rvmat b/optionals/tracers/data/tracer_yellow.rvmat similarity index 100% rename from addons/tracers/data/tracer_yellow.rvmat rename to optionals/tracers/data/tracer_yellow.rvmat diff --git a/addons/tracers/data/tracer_yellow1_ca.paa b/optionals/tracers/data/tracer_yellow1_ca.paa similarity index 100% rename from addons/tracers/data/tracer_yellow1_ca.paa rename to optionals/tracers/data/tracer_yellow1_ca.paa diff --git a/optionals/tracers/model.cfg b/optionals/tracers/model.cfg new file mode 100644 index 0000000000..3de6e77bd1 --- /dev/null +++ b/optionals/tracers/model.cfg @@ -0,0 +1,44 @@ +class CfgSkeletons { + class Default { + isDiscrete = 1; + skeletonInherit = ""; + skeletonBones[] = {}; + }; + class ACE_Tracer_Skeleton : Default {}; + class ACE_Tracer_Skeleton_Default: ACE_Tracer_Skeleton { // BWC + skeletonInherit = "ACE_Tracer_Skeleton"; + skeletonBones[]= { + "core","", + "halo","", + "tracer","" + }; + }; +}; + +class CfgModels { + class Default { + sectionsInherit=""; + sections[] = {}; + skeletonName = ""; + }; + class ACE_Tracer: Default { + skeletonName = "ACE_Tracer_Skeleton"; + }; + class ACE_Tracer_Default: ACE_Tracer { // BWC + skeletonName = "ACE_Tracer_Skeleton_Default"; + }; + // Bullet tracers + class ace_TracerRed2: ACE_Tracer_Default {}; + class ace_TracerGreen2: ACE_Tracer_Default {}; + class ace_TracerYellow2: ACE_Tracer_Default {}; + + // Bullet tracers, alternative + class tracer_green_2: ACE_Tracer {}; + class tracer_red_2: ACE_Tracer {}; + class tracer_yellow_2: ACE_Tracer {}; + + // Shell Tracers + class ace_shell_tracer_green: ACE_Tracer {}; + class ace_shell_tracer_red: ACE_Tracer {}; + class ace_shell_tracer_yellow: ACE_Tracer {}; +}; diff --git a/addons/tracers/script_component.hpp b/optionals/tracers/script_component.hpp similarity index 100% rename from addons/tracers/script_component.hpp rename to optionals/tracers/script_component.hpp diff --git a/addons/tracers/tracer_green_2.p3d b/optionals/tracers/tracer_green_2.p3d similarity index 100% rename from addons/tracers/tracer_green_2.p3d rename to optionals/tracers/tracer_green_2.p3d diff --git a/addons/tracers/tracer_red_2.p3d b/optionals/tracers/tracer_red_2.p3d similarity index 100% rename from addons/tracers/tracer_red_2.p3d rename to optionals/tracers/tracer_red_2.p3d diff --git a/addons/tracers/tracer_yellow_2.p3d b/optionals/tracers/tracer_yellow_2.p3d similarity index 100% rename from addons/tracers/tracer_yellow_2.p3d rename to optionals/tracers/tracer_yellow_2.p3d From 60e3d8ff6abecdce6704a7d0dd56bfcd783af064 Mon Sep 17 00:00:00 2001 From: ulteq Date: Tue, 19 May 2015 16:55:55 +0200 Subject: [PATCH 046/252] Renamed tracers into balltracers --- optionals/balltracers/$PBOPREFIX$ | 1 + optionals/{tracers => balltracers}/CfgAmmo.hpp | 0 optionals/{tracers => balltracers}/README.md | 0 .../ace_40mm_tracer_red.p3d | Bin .../{tracers => balltracers}/ace_TracerGreen2.p3d | Bin .../{tracers => balltracers}/ace_TracerRed2.p3d | Bin .../{tracers => balltracers}/ace_TracerYellow2.p3d | Bin .../ace_shell_tracer_green.p3d | Bin .../ace_shell_tracer_red.p3d | Bin .../ace_shell_tracer_yellow.p3d | Bin optionals/{tracers => balltracers}/config.cpp | 0 .../data/SLX_GreenTracer_Material.rvmat | 0 .../data/SLX_RedTracer_Material.rvmat | 0 .../data/SLX_YellowTracer_Material.rvmat | 0 .../{tracers => balltracers}/data/TracerGreen.paa | Bin .../{tracers => balltracers}/data/TracerRed.paa | Bin .../{tracers => balltracers}/data/TracerYellow.paa | Bin .../{tracers => balltracers}/data/clear_empty.paa | Bin .../data/tracer_green.rvmat | 0 .../data/tracer_green1_ca.paa | Bin .../{tracers => balltracers}/data/tracer_red.rvmat | 0 .../data/tracer_red1_ca.paa | Bin .../data/tracer_yellow.rvmat | 0 .../data/tracer_yellow1_ca.paa | Bin optionals/{tracers => balltracers}/model.cfg | 0 optionals/balltracers/script_component.hpp | 12 ++++++++++++ .../{tracers => balltracers}/tracer_green_2.p3d | Bin optionals/{tracers => balltracers}/tracer_red_2.p3d | Bin .../{tracers => balltracers}/tracer_yellow_2.p3d | Bin optionals/tracers/$PBOPREFIX$ | 1 - optionals/tracers/script_component.hpp | 12 ------------ 31 files changed, 13 insertions(+), 13 deletions(-) create mode 100644 optionals/balltracers/$PBOPREFIX$ rename optionals/{tracers => balltracers}/CfgAmmo.hpp (100%) rename optionals/{tracers => balltracers}/README.md (100%) rename optionals/{tracers => balltracers}/ace_40mm_tracer_red.p3d (100%) rename optionals/{tracers => balltracers}/ace_TracerGreen2.p3d (100%) rename optionals/{tracers => balltracers}/ace_TracerRed2.p3d (100%) rename optionals/{tracers => balltracers}/ace_TracerYellow2.p3d (100%) rename optionals/{tracers => balltracers}/ace_shell_tracer_green.p3d (100%) rename optionals/{tracers => balltracers}/ace_shell_tracer_red.p3d (100%) rename optionals/{tracers => balltracers}/ace_shell_tracer_yellow.p3d (100%) rename optionals/{tracers => balltracers}/config.cpp (100%) rename optionals/{tracers => balltracers}/data/SLX_GreenTracer_Material.rvmat (100%) rename optionals/{tracers => balltracers}/data/SLX_RedTracer_Material.rvmat (100%) rename optionals/{tracers => balltracers}/data/SLX_YellowTracer_Material.rvmat (100%) rename optionals/{tracers => balltracers}/data/TracerGreen.paa (100%) rename optionals/{tracers => balltracers}/data/TracerRed.paa (100%) rename optionals/{tracers => balltracers}/data/TracerYellow.paa (100%) rename optionals/{tracers => balltracers}/data/clear_empty.paa (100%) rename optionals/{tracers => balltracers}/data/tracer_green.rvmat (100%) rename optionals/{tracers => balltracers}/data/tracer_green1_ca.paa (100%) rename optionals/{tracers => balltracers}/data/tracer_red.rvmat (100%) rename optionals/{tracers => balltracers}/data/tracer_red1_ca.paa (100%) rename optionals/{tracers => balltracers}/data/tracer_yellow.rvmat (100%) rename optionals/{tracers => balltracers}/data/tracer_yellow1_ca.paa (100%) rename optionals/{tracers => balltracers}/model.cfg (100%) create mode 100644 optionals/balltracers/script_component.hpp rename optionals/{tracers => balltracers}/tracer_green_2.p3d (100%) rename optionals/{tracers => balltracers}/tracer_red_2.p3d (100%) rename optionals/{tracers => balltracers}/tracer_yellow_2.p3d (100%) delete mode 100644 optionals/tracers/$PBOPREFIX$ delete mode 100644 optionals/tracers/script_component.hpp diff --git a/optionals/balltracers/$PBOPREFIX$ b/optionals/balltracers/$PBOPREFIX$ new file mode 100644 index 0000000000..3bb61dd773 --- /dev/null +++ b/optionals/balltracers/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\balltracers \ No newline at end of file diff --git a/optionals/tracers/CfgAmmo.hpp b/optionals/balltracers/CfgAmmo.hpp similarity index 100% rename from optionals/tracers/CfgAmmo.hpp rename to optionals/balltracers/CfgAmmo.hpp diff --git a/optionals/tracers/README.md b/optionals/balltracers/README.md similarity index 100% rename from optionals/tracers/README.md rename to optionals/balltracers/README.md diff --git a/optionals/tracers/ace_40mm_tracer_red.p3d b/optionals/balltracers/ace_40mm_tracer_red.p3d similarity index 100% rename from optionals/tracers/ace_40mm_tracer_red.p3d rename to optionals/balltracers/ace_40mm_tracer_red.p3d diff --git a/optionals/tracers/ace_TracerGreen2.p3d b/optionals/balltracers/ace_TracerGreen2.p3d similarity index 100% rename from optionals/tracers/ace_TracerGreen2.p3d rename to optionals/balltracers/ace_TracerGreen2.p3d diff --git a/optionals/tracers/ace_TracerRed2.p3d b/optionals/balltracers/ace_TracerRed2.p3d similarity index 100% rename from optionals/tracers/ace_TracerRed2.p3d rename to optionals/balltracers/ace_TracerRed2.p3d diff --git a/optionals/tracers/ace_TracerYellow2.p3d b/optionals/balltracers/ace_TracerYellow2.p3d similarity index 100% rename from optionals/tracers/ace_TracerYellow2.p3d rename to optionals/balltracers/ace_TracerYellow2.p3d diff --git a/optionals/tracers/ace_shell_tracer_green.p3d b/optionals/balltracers/ace_shell_tracer_green.p3d similarity index 100% rename from optionals/tracers/ace_shell_tracer_green.p3d rename to optionals/balltracers/ace_shell_tracer_green.p3d diff --git a/optionals/tracers/ace_shell_tracer_red.p3d b/optionals/balltracers/ace_shell_tracer_red.p3d similarity index 100% rename from optionals/tracers/ace_shell_tracer_red.p3d rename to optionals/balltracers/ace_shell_tracer_red.p3d diff --git a/optionals/tracers/ace_shell_tracer_yellow.p3d b/optionals/balltracers/ace_shell_tracer_yellow.p3d similarity index 100% rename from optionals/tracers/ace_shell_tracer_yellow.p3d rename to optionals/balltracers/ace_shell_tracer_yellow.p3d diff --git a/optionals/tracers/config.cpp b/optionals/balltracers/config.cpp similarity index 100% rename from optionals/tracers/config.cpp rename to optionals/balltracers/config.cpp diff --git a/optionals/tracers/data/SLX_GreenTracer_Material.rvmat b/optionals/balltracers/data/SLX_GreenTracer_Material.rvmat similarity index 100% rename from optionals/tracers/data/SLX_GreenTracer_Material.rvmat rename to optionals/balltracers/data/SLX_GreenTracer_Material.rvmat diff --git a/optionals/tracers/data/SLX_RedTracer_Material.rvmat b/optionals/balltracers/data/SLX_RedTracer_Material.rvmat similarity index 100% rename from optionals/tracers/data/SLX_RedTracer_Material.rvmat rename to optionals/balltracers/data/SLX_RedTracer_Material.rvmat diff --git a/optionals/tracers/data/SLX_YellowTracer_Material.rvmat b/optionals/balltracers/data/SLX_YellowTracer_Material.rvmat similarity index 100% rename from optionals/tracers/data/SLX_YellowTracer_Material.rvmat rename to optionals/balltracers/data/SLX_YellowTracer_Material.rvmat diff --git a/optionals/tracers/data/TracerGreen.paa b/optionals/balltracers/data/TracerGreen.paa similarity index 100% rename from optionals/tracers/data/TracerGreen.paa rename to optionals/balltracers/data/TracerGreen.paa diff --git a/optionals/tracers/data/TracerRed.paa b/optionals/balltracers/data/TracerRed.paa similarity index 100% rename from optionals/tracers/data/TracerRed.paa rename to optionals/balltracers/data/TracerRed.paa diff --git a/optionals/tracers/data/TracerYellow.paa b/optionals/balltracers/data/TracerYellow.paa similarity index 100% rename from optionals/tracers/data/TracerYellow.paa rename to optionals/balltracers/data/TracerYellow.paa diff --git a/optionals/tracers/data/clear_empty.paa b/optionals/balltracers/data/clear_empty.paa similarity index 100% rename from optionals/tracers/data/clear_empty.paa rename to optionals/balltracers/data/clear_empty.paa diff --git a/optionals/tracers/data/tracer_green.rvmat b/optionals/balltracers/data/tracer_green.rvmat similarity index 100% rename from optionals/tracers/data/tracer_green.rvmat rename to optionals/balltracers/data/tracer_green.rvmat diff --git a/optionals/tracers/data/tracer_green1_ca.paa b/optionals/balltracers/data/tracer_green1_ca.paa similarity index 100% rename from optionals/tracers/data/tracer_green1_ca.paa rename to optionals/balltracers/data/tracer_green1_ca.paa diff --git a/optionals/tracers/data/tracer_red.rvmat b/optionals/balltracers/data/tracer_red.rvmat similarity index 100% rename from optionals/tracers/data/tracer_red.rvmat rename to optionals/balltracers/data/tracer_red.rvmat diff --git a/optionals/tracers/data/tracer_red1_ca.paa b/optionals/balltracers/data/tracer_red1_ca.paa similarity index 100% rename from optionals/tracers/data/tracer_red1_ca.paa rename to optionals/balltracers/data/tracer_red1_ca.paa diff --git a/optionals/tracers/data/tracer_yellow.rvmat b/optionals/balltracers/data/tracer_yellow.rvmat similarity index 100% rename from optionals/tracers/data/tracer_yellow.rvmat rename to optionals/balltracers/data/tracer_yellow.rvmat diff --git a/optionals/tracers/data/tracer_yellow1_ca.paa b/optionals/balltracers/data/tracer_yellow1_ca.paa similarity index 100% rename from optionals/tracers/data/tracer_yellow1_ca.paa rename to optionals/balltracers/data/tracer_yellow1_ca.paa diff --git a/optionals/tracers/model.cfg b/optionals/balltracers/model.cfg similarity index 100% rename from optionals/tracers/model.cfg rename to optionals/balltracers/model.cfg diff --git a/optionals/balltracers/script_component.hpp b/optionals/balltracers/script_component.hpp new file mode 100644 index 0000000000..eed05135ce --- /dev/null +++ b/optionals/balltracers/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT balltracers +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_SYS_BALLTRACERS + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_SYS_BALLTRACERS + #define DEBUG_SETTINGS DEBUG_SETTINGS_SYS_BALLTRACERS +#endif + +#include "\z\ace\addons\main\script_macros.hpp" diff --git a/optionals/tracers/tracer_green_2.p3d b/optionals/balltracers/tracer_green_2.p3d similarity index 100% rename from optionals/tracers/tracer_green_2.p3d rename to optionals/balltracers/tracer_green_2.p3d diff --git a/optionals/tracers/tracer_red_2.p3d b/optionals/balltracers/tracer_red_2.p3d similarity index 100% rename from optionals/tracers/tracer_red_2.p3d rename to optionals/balltracers/tracer_red_2.p3d diff --git a/optionals/tracers/tracer_yellow_2.p3d b/optionals/balltracers/tracer_yellow_2.p3d similarity index 100% rename from optionals/tracers/tracer_yellow_2.p3d rename to optionals/balltracers/tracer_yellow_2.p3d diff --git a/optionals/tracers/$PBOPREFIX$ b/optionals/tracers/$PBOPREFIX$ deleted file mode 100644 index 0b2ee2511f..0000000000 --- a/optionals/tracers/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\tracers \ No newline at end of file diff --git a/optionals/tracers/script_component.hpp b/optionals/tracers/script_component.hpp deleted file mode 100644 index b5dd507dcb..0000000000 --- a/optionals/tracers/script_component.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#define COMPONENT tracers -#include "\z\ace\addons\main\script_mod.hpp" - -#ifdef DEBUG_ENABLED_SYS_TRACERS - #define DEBUG_MODE_FULL -#endif - -#ifdef DEBUG_SETTINGS_SYS_TRACERS - #define DEBUG_SETTINGS DEBUG_SETTINGS_SYS_TRACERS -#endif - -#include "\z\ace\addons\main\script_macros.hpp" From f59ce7179a5fd8e45cf8390c8aa34fa284a5eba5 Mon Sep 17 00:00:00 2001 From: ulteq Date: Tue, 19 May 2015 17:03:38 +0200 Subject: [PATCH 047/252] Spelling mistake corrected. --- optionals/balltracers/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optionals/balltracers/README.md b/optionals/balltracers/README.md index 813949de4b..e4ddeeec8b 100644 --- a/optionals/balltracers/README.md +++ b/optionals/balltracers/README.md @@ -1,7 +1,7 @@ ace_tracers =========== -Ball tracers for ArmA3 ported from ACE2. +Ball tracers for Arma 3 ported from ACE2. ## Maintainers From fb5e6395e28f16ad4059aed0c25555044c06931a Mon Sep 17 00:00:00 2001 From: ulteq Date: Tue, 19 May 2015 17:06:33 +0200 Subject: [PATCH 048/252] Yet another typo. --- optionals/balltracers/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optionals/balltracers/README.md b/optionals/balltracers/README.md index e4ddeeec8b..868b697cff 100644 --- a/optionals/balltracers/README.md +++ b/optionals/balltracers/README.md @@ -1,4 +1,4 @@ -ace_tracers +ace_balltracers =========== Ball tracers for Arma 3 ported from ACE2. From 06e1435a56500138f956f8f4f2d9f44c33118868 Mon Sep 17 00:00:00 2001 From: ulteq Date: Tue, 19 May 2015 17:25:27 +0200 Subject: [PATCH 049/252] Reverted the renaming: balltracers -> tracers --- optionals/balltracers/$PBOPREFIX$ | 1 - optionals/balltracers/script_component.hpp | 12 ------------ optionals/tracers/$PBOPREFIX$ | 1 + optionals/{balltracers => tracers}/CfgAmmo.hpp | 17 ++++++++++++++++- optionals/{balltracers => tracers}/README.md | 0 .../ace_40mm_tracer_red.p3d | Bin .../ace_TracerGreen2.p3d | Bin .../ace_TracerRed2.p3d | Bin .../ace_TracerYellow2.p3d | Bin .../ace_shell_tracer_green.p3d | Bin .../ace_shell_tracer_red.p3d | Bin .../ace_shell_tracer_yellow.p3d | Bin optionals/{balltracers => tracers}/config.cpp | 0 .../data/SLX_GreenTracer_Material.rvmat | 0 .../data/SLX_RedTracer_Material.rvmat | 0 .../data/SLX_YellowTracer_Material.rvmat | 0 .../data/TracerGreen.paa | Bin .../data/TracerRed.paa | Bin .../data/TracerYellow.paa | Bin .../data/clear_empty.paa | Bin .../data/tracer_green.rvmat | 0 .../data/tracer_green1_ca.paa | Bin .../data/tracer_red.rvmat | 0 .../data/tracer_red1_ca.paa | Bin .../data/tracer_yellow.rvmat | 0 .../data/tracer_yellow1_ca.paa | Bin optionals/{balltracers => tracers}/model.cfg | 0 optionals/tracers/script_component.hpp | 12 ++++++++++++ .../tracer_green_2.p3d | Bin .../{balltracers => tracers}/tracer_red_2.p3d | Bin .../tracer_yellow_2.p3d | Bin 31 files changed, 29 insertions(+), 14 deletions(-) delete mode 100644 optionals/balltracers/$PBOPREFIX$ delete mode 100644 optionals/balltracers/script_component.hpp create mode 100644 optionals/tracers/$PBOPREFIX$ rename optionals/{balltracers => tracers}/CfgAmmo.hpp (90%) rename optionals/{balltracers => tracers}/README.md (100%) rename optionals/{balltracers => tracers}/ace_40mm_tracer_red.p3d (100%) rename optionals/{balltracers => tracers}/ace_TracerGreen2.p3d (100%) rename optionals/{balltracers => tracers}/ace_TracerRed2.p3d (100%) rename optionals/{balltracers => tracers}/ace_TracerYellow2.p3d (100%) rename optionals/{balltracers => tracers}/ace_shell_tracer_green.p3d (100%) rename optionals/{balltracers => tracers}/ace_shell_tracer_red.p3d (100%) rename optionals/{balltracers => tracers}/ace_shell_tracer_yellow.p3d (100%) rename optionals/{balltracers => tracers}/config.cpp (100%) rename optionals/{balltracers => tracers}/data/SLX_GreenTracer_Material.rvmat (100%) rename optionals/{balltracers => tracers}/data/SLX_RedTracer_Material.rvmat (100%) rename optionals/{balltracers => tracers}/data/SLX_YellowTracer_Material.rvmat (100%) rename optionals/{balltracers => tracers}/data/TracerGreen.paa (100%) rename optionals/{balltracers => tracers}/data/TracerRed.paa (100%) rename optionals/{balltracers => tracers}/data/TracerYellow.paa (100%) rename optionals/{balltracers => tracers}/data/clear_empty.paa (100%) rename optionals/{balltracers => tracers}/data/tracer_green.rvmat (100%) rename optionals/{balltracers => tracers}/data/tracer_green1_ca.paa (100%) rename optionals/{balltracers => tracers}/data/tracer_red.rvmat (100%) rename optionals/{balltracers => tracers}/data/tracer_red1_ca.paa (100%) rename optionals/{balltracers => tracers}/data/tracer_yellow.rvmat (100%) rename optionals/{balltracers => tracers}/data/tracer_yellow1_ca.paa (100%) rename optionals/{balltracers => tracers}/model.cfg (100%) create mode 100644 optionals/tracers/script_component.hpp rename optionals/{balltracers => tracers}/tracer_green_2.p3d (100%) rename optionals/{balltracers => tracers}/tracer_red_2.p3d (100%) rename optionals/{balltracers => tracers}/tracer_yellow_2.p3d (100%) diff --git a/optionals/balltracers/$PBOPREFIX$ b/optionals/balltracers/$PBOPREFIX$ deleted file mode 100644 index 3bb61dd773..0000000000 --- a/optionals/balltracers/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\balltracers \ No newline at end of file diff --git a/optionals/balltracers/script_component.hpp b/optionals/balltracers/script_component.hpp deleted file mode 100644 index eed05135ce..0000000000 --- a/optionals/balltracers/script_component.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#define COMPONENT balltracers -#include "\z\ace\addons\main\script_mod.hpp" - -#ifdef DEBUG_ENABLED_SYS_BALLTRACERS - #define DEBUG_MODE_FULL -#endif - -#ifdef DEBUG_SETTINGS_SYS_BALLTRACERS - #define DEBUG_SETTINGS DEBUG_SETTINGS_SYS_BALLTRACERS -#endif - -#include "\z\ace\addons\main\script_macros.hpp" diff --git a/optionals/tracers/$PBOPREFIX$ b/optionals/tracers/$PBOPREFIX$ new file mode 100644 index 0000000000..0b2ee2511f --- /dev/null +++ b/optionals/tracers/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\tracers \ No newline at end of file diff --git a/optionals/balltracers/CfgAmmo.hpp b/optionals/tracers/CfgAmmo.hpp similarity index 90% rename from optionals/balltracers/CfgAmmo.hpp rename to optionals/tracers/CfgAmmo.hpp index 64d530f427..2d6bafb0a5 100644 --- a/optionals/balltracers/CfgAmmo.hpp +++ b/optionals/tracers/CfgAmmo.hpp @@ -86,42 +86,57 @@ class CfgAmmo { }; class B_30mm_HE; class B_30mm_HE_Tracer_Red: B_30mm_HE { + model = PATHTOF(tracer_red_2.p3d); }; class B_30mm_HE_Tracer_Green: B_30mm_HE { + model = PATHTOF(tracer_green_2.p3d); }; class B_30mm_HE_Tracer_Yellow: B_30mm_HE { + model = PATHTOF(tracer_yellow_2.p3d); }; class B_40mm_GPR; class B_40mm_GPR_Tracer_Red: B_40mm_GPR { - model = PATHTOF(ace_40mm_tracer_red.p3d); + model = PATHTOF(tracer_red_2.p3d); }; class B_40mm_GPR_Tracer_Green: B_40mm_GPR { + model = PATHTOF(tracer_green_2.p3d); }; class B_40mm_GPR_Tracer_Yellow: B_40mm_GPR { + model = PATHTOF(tracer_yellow_2.p3d); }; class B_20mm; class B_20mm_Tracer_Red: B_20mm { + model = PATHTOF(tracer_red_2.p3d); }; class B_30mm_AP; class B_30mm_AP_Tracer_Red: B_30mm_AP { + model = PATHTOF(tracer_red_2.p3d); }; class B_30mm_AP_Tracer_Green: B_30mm_AP { + model = PATHTOF(tracer_green_2.p3d); }; class B_30mm_AP_Tracer_Yellow: B_30mm_AP { + model = PATHTOF(tracer_yellow_2.p3d); }; class B_30mm_APFSDS; class B_30mm_APFSDS_Tracer_Red: B_30mm_APFSDS { + model = PATHTOF(tracer_red_2.p3d); }; class B_30mm_APFSDS_Tracer_Green: B_30mm_APFSDS { + model = PATHTOF(tracer_green_2.p3d); }; class B_30mm_APFSDS_Tracer_Yellow: B_30mm_APFSDS { + model = PATHTOF(tracer_yellow_2.p3d); }; class B_35mm_AA; class B_35mm_AA_Tracer_Red: B_35mm_AA { + model = PATHTOF(tracer_red_2.p3d); }; class B_35mm_AA_Tracer_Green: B_35mm_AA { + model = PATHTOF(tracer_green_2.p3d); }; class B_35mm_AA_Tracer_Yellow: B_35mm_AA { + model = PATHTOF(tracer_yellow_2.p3d); }; class Sh_120mm_HE; class Sh_120mm_HE_Tracer_Red: Sh_120mm_HE { diff --git a/optionals/balltracers/README.md b/optionals/tracers/README.md similarity index 100% rename from optionals/balltracers/README.md rename to optionals/tracers/README.md diff --git a/optionals/balltracers/ace_40mm_tracer_red.p3d b/optionals/tracers/ace_40mm_tracer_red.p3d similarity index 100% rename from optionals/balltracers/ace_40mm_tracer_red.p3d rename to optionals/tracers/ace_40mm_tracer_red.p3d diff --git a/optionals/balltracers/ace_TracerGreen2.p3d b/optionals/tracers/ace_TracerGreen2.p3d similarity index 100% rename from optionals/balltracers/ace_TracerGreen2.p3d rename to optionals/tracers/ace_TracerGreen2.p3d diff --git a/optionals/balltracers/ace_TracerRed2.p3d b/optionals/tracers/ace_TracerRed2.p3d similarity index 100% rename from optionals/balltracers/ace_TracerRed2.p3d rename to optionals/tracers/ace_TracerRed2.p3d diff --git a/optionals/balltracers/ace_TracerYellow2.p3d b/optionals/tracers/ace_TracerYellow2.p3d similarity index 100% rename from optionals/balltracers/ace_TracerYellow2.p3d rename to optionals/tracers/ace_TracerYellow2.p3d diff --git a/optionals/balltracers/ace_shell_tracer_green.p3d b/optionals/tracers/ace_shell_tracer_green.p3d similarity index 100% rename from optionals/balltracers/ace_shell_tracer_green.p3d rename to optionals/tracers/ace_shell_tracer_green.p3d diff --git a/optionals/balltracers/ace_shell_tracer_red.p3d b/optionals/tracers/ace_shell_tracer_red.p3d similarity index 100% rename from optionals/balltracers/ace_shell_tracer_red.p3d rename to optionals/tracers/ace_shell_tracer_red.p3d diff --git a/optionals/balltracers/ace_shell_tracer_yellow.p3d b/optionals/tracers/ace_shell_tracer_yellow.p3d similarity index 100% rename from optionals/balltracers/ace_shell_tracer_yellow.p3d rename to optionals/tracers/ace_shell_tracer_yellow.p3d diff --git a/optionals/balltracers/config.cpp b/optionals/tracers/config.cpp similarity index 100% rename from optionals/balltracers/config.cpp rename to optionals/tracers/config.cpp diff --git a/optionals/balltracers/data/SLX_GreenTracer_Material.rvmat b/optionals/tracers/data/SLX_GreenTracer_Material.rvmat similarity index 100% rename from optionals/balltracers/data/SLX_GreenTracer_Material.rvmat rename to optionals/tracers/data/SLX_GreenTracer_Material.rvmat diff --git a/optionals/balltracers/data/SLX_RedTracer_Material.rvmat b/optionals/tracers/data/SLX_RedTracer_Material.rvmat similarity index 100% rename from optionals/balltracers/data/SLX_RedTracer_Material.rvmat rename to optionals/tracers/data/SLX_RedTracer_Material.rvmat diff --git a/optionals/balltracers/data/SLX_YellowTracer_Material.rvmat b/optionals/tracers/data/SLX_YellowTracer_Material.rvmat similarity index 100% rename from optionals/balltracers/data/SLX_YellowTracer_Material.rvmat rename to optionals/tracers/data/SLX_YellowTracer_Material.rvmat diff --git a/optionals/balltracers/data/TracerGreen.paa b/optionals/tracers/data/TracerGreen.paa similarity index 100% rename from optionals/balltracers/data/TracerGreen.paa rename to optionals/tracers/data/TracerGreen.paa diff --git a/optionals/balltracers/data/TracerRed.paa b/optionals/tracers/data/TracerRed.paa similarity index 100% rename from optionals/balltracers/data/TracerRed.paa rename to optionals/tracers/data/TracerRed.paa diff --git a/optionals/balltracers/data/TracerYellow.paa b/optionals/tracers/data/TracerYellow.paa similarity index 100% rename from optionals/balltracers/data/TracerYellow.paa rename to optionals/tracers/data/TracerYellow.paa diff --git a/optionals/balltracers/data/clear_empty.paa b/optionals/tracers/data/clear_empty.paa similarity index 100% rename from optionals/balltracers/data/clear_empty.paa rename to optionals/tracers/data/clear_empty.paa diff --git a/optionals/balltracers/data/tracer_green.rvmat b/optionals/tracers/data/tracer_green.rvmat similarity index 100% rename from optionals/balltracers/data/tracer_green.rvmat rename to optionals/tracers/data/tracer_green.rvmat diff --git a/optionals/balltracers/data/tracer_green1_ca.paa b/optionals/tracers/data/tracer_green1_ca.paa similarity index 100% rename from optionals/balltracers/data/tracer_green1_ca.paa rename to optionals/tracers/data/tracer_green1_ca.paa diff --git a/optionals/balltracers/data/tracer_red.rvmat b/optionals/tracers/data/tracer_red.rvmat similarity index 100% rename from optionals/balltracers/data/tracer_red.rvmat rename to optionals/tracers/data/tracer_red.rvmat diff --git a/optionals/balltracers/data/tracer_red1_ca.paa b/optionals/tracers/data/tracer_red1_ca.paa similarity index 100% rename from optionals/balltracers/data/tracer_red1_ca.paa rename to optionals/tracers/data/tracer_red1_ca.paa diff --git a/optionals/balltracers/data/tracer_yellow.rvmat b/optionals/tracers/data/tracer_yellow.rvmat similarity index 100% rename from optionals/balltracers/data/tracer_yellow.rvmat rename to optionals/tracers/data/tracer_yellow.rvmat diff --git a/optionals/balltracers/data/tracer_yellow1_ca.paa b/optionals/tracers/data/tracer_yellow1_ca.paa similarity index 100% rename from optionals/balltracers/data/tracer_yellow1_ca.paa rename to optionals/tracers/data/tracer_yellow1_ca.paa diff --git a/optionals/balltracers/model.cfg b/optionals/tracers/model.cfg similarity index 100% rename from optionals/balltracers/model.cfg rename to optionals/tracers/model.cfg diff --git a/optionals/tracers/script_component.hpp b/optionals/tracers/script_component.hpp new file mode 100644 index 0000000000..b5dd507dcb --- /dev/null +++ b/optionals/tracers/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT tracers +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_SYS_TRACERS + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_SYS_TRACERS + #define DEBUG_SETTINGS DEBUG_SETTINGS_SYS_TRACERS +#endif + +#include "\z\ace\addons\main\script_macros.hpp" diff --git a/optionals/balltracers/tracer_green_2.p3d b/optionals/tracers/tracer_green_2.p3d similarity index 100% rename from optionals/balltracers/tracer_green_2.p3d rename to optionals/tracers/tracer_green_2.p3d diff --git a/optionals/balltracers/tracer_red_2.p3d b/optionals/tracers/tracer_red_2.p3d similarity index 100% rename from optionals/balltracers/tracer_red_2.p3d rename to optionals/tracers/tracer_red_2.p3d diff --git a/optionals/balltracers/tracer_yellow_2.p3d b/optionals/tracers/tracer_yellow_2.p3d similarity index 100% rename from optionals/balltracers/tracer_yellow_2.p3d rename to optionals/tracers/tracer_yellow_2.p3d From 02c85eae07fe32fde64d3baa1c9400891321100d Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Tue, 19 May 2015 20:29:23 +0200 Subject: [PATCH 050/252] Changed the animation from medic to put when placing an explosive. Added a put animation when setting the trigger for an explosive. --- addons/explosives/functions/fnc_placeExplosive.sqf | 2 ++ addons/explosives/functions/fnc_place_Approve.sqf | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/explosives/functions/fnc_placeExplosive.sqf b/addons/explosives/functions/fnc_placeExplosive.sqf index 4bed019d47..2e6a0ad2c5 100644 --- a/addons/explosives/functions/fnc_placeExplosive.sqf +++ b/addons/explosives/functions/fnc_placeExplosive.sqf @@ -25,6 +25,8 @@ private ["_ammo", "_explosive", "_attachedTo", "_expPos", "_magazineTrigger"]; EXPLODE_6_PVT(_this,_unit,_pos,_dir,_magazineClass,_triggerConfig,_triggerSpecificVars); DEFAULT_PARAM(6,_setupPlaceholderObject,objNull); +_unit playActionNow "PutDown"; + _attachedTo = objNull; if (!isNull _setupPlaceholderObject) then { _attachedTo = attachedTo _setupPlaceholderObject; diff --git a/addons/explosives/functions/fnc_place_Approve.sqf b/addons/explosives/functions/fnc_place_Approve.sqf index f133dbb080..323e8bd634 100644 --- a/addons/explosives/functions/fnc_place_Approve.sqf +++ b/addons/explosives/functions/fnc_place_Approve.sqf @@ -42,5 +42,5 @@ _player setVariable [QGVAR(PlantingExplosive), true]; [{_this setVariable [QGVAR(PlantingExplosive), false]}, _player, 1.5, 0.5] call EFUNC(common,waitAndExecute); _setup addEventHandler ["EpeContactStart", FUNC(onLanded)]; _setup enableSimulationGlobal true; -_player playActionNow "MedicOther"; +_player playActionNow "PutDown"; _player removeMagazine (_setup getVariable [QGVAR(Class), ""]); From df722c7c7d958692ebfb22334dcea1b7ddbfbdd7 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 19 May 2015 18:34:48 -0500 Subject: [PATCH 051/252] #1318 - isInMedicalVehicle - medicClass is number --- addons/medical/functions/fnc_isInMedicalVehicle.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_isInMedicalVehicle.sqf b/addons/medical/functions/fnc_isInMedicalVehicle.sqf index 5422ce8e1f..d376ce3824 100644 --- a/addons/medical/functions/fnc_isInMedicalVehicle.sqf +++ b/addons/medical/functions/fnc_isInMedicalVehicle.sqf @@ -21,4 +21,4 @@ _vehicle = vehicle _unit; if (_unit == _vehicle) exitWith {false}; if (_unit in [driver _vehicle, gunner _vehicle, commander _vehicle]) exitWith {false}; -_vehicle getVariable [QGVAR(medicClass), getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "attendant") == 1] +(_vehicle getVariable [QGVAR(medicClass), getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "attendant")]) > 0 From d6cc1d4b7618adb75e6e908c307bd49af3f12a95 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Wed, 20 May 2015 10:26:32 +0200 Subject: [PATCH 052/252] Proposed fix for #1158 Sent directly to extension instead of splitting it --- .../functions/fnc_exportSettings.sqf | 20 ++----------------- 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/addons/optionsmenu/functions/fnc_exportSettings.sqf b/addons/optionsmenu/functions/fnc_exportSettings.sqf index 68dc7fbecd..af5309a7f2 100644 --- a/addons/optionsmenu/functions/fnc_exportSettings.sqf +++ b/addons/optionsmenu/functions/fnc_exportSettings.sqf @@ -18,8 +18,6 @@ private ["_compiledConfig", "_name", "_typeName", "_isClientSetable", "_localizedName", "_localizedDescription", "_possibleValues", "_defaultValue", "_value", "_compiledConfigEntry"]; -_compiledConfig = " -"; { /*_settingData = [ _name, @@ -55,25 +53,11 @@ class %1 { force = 1; };", _name, _value, format['"%1"', _typeName]]; - _compiledConfig = _compiledConfig + _compiledConfigEntry; + "ace_clipboard" callExtension _compiledConfigEntry; }; } forEach EGVAR(common,settings); -FUNC(clipboardExport) = { - private["_chunks"]; - _chunks = []; - - _chunks = [_this select 0, ";"] call CBA_fnc_split; - - { - private["_chunk"]; - _chunk = _x + ";"; - "ace_clipboard" callExtension format["%1", _chunk]; - } forEach _chunks; - - "ace_clipboard" callExtension "--COMPLETE--"; -}; -[_compiledConfig] call FUNC(clipboardExport); + "ace_clipboard" callExtension "--COMPLETE--"; ["STR_ACE_OptionsMenu_settingsExported"] call EFUNC(common,displayTextStructured); From f74eb31bbceacea7c2c2d3a3954220afbbba94a1 Mon Sep 17 00:00:00 2001 From: jaynus Date: Thu, 21 May 2015 08:43:02 -0700 Subject: [PATCH 053/252] cross-platform compat integration for medical (history rewrite from gay merge). --- extensions/medical/handleDamage.cpp | 21 +++++++++++---------- extensions/medical/medical.cpp | 4 ++-- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/extensions/medical/handleDamage.cpp b/extensions/medical/handleDamage.cpp index 0cd31dd273..b388845ac5 100644 --- a/extensions/medical/handleDamage.cpp +++ b/extensions/medical/handleDamage.cpp @@ -3,6 +3,7 @@ #include "DamageType.h" #include "InjuryType.h" #include +#include namespace ace { namespace medical { @@ -59,11 +60,11 @@ namespace ace { std::vector> information; std::shared_ptr highestSpot = nullptr; - for each (std::shared_ptr damageType in damageTypes) + for (auto & damageType : damageTypes) { if (damageType->typeName == typeOfDamage) { - for each (std::shared_ptr possibleInjury in damageType->possibleInjuries) + for (auto & possibleInjury : damageType->possibleInjuries) { if (amountOfDamage >= possibleInjury->minDamage && (amountOfDamage <= possibleInjury->maxDamage || possibleInjury->maxDamage <= 0)) { @@ -81,7 +82,7 @@ namespace ace { } int c = 0; - for each (double threshold in damageType->minDamageThreshold) + for (double & threshold : damageType->minDamageThreshold) { if (amountOfDamage >= threshold) { @@ -132,12 +133,12 @@ namespace ace { std::stringstream stream; stream << "ADDED: " << typeName << " - " << minimalLethalDamage << " - ["; - for each (double sel in minDamageThreshold) + for (double & sel : minDamageThreshold) { stream << sel << " -"; } stream << "] - ["; - for each (double sel in amountOfInjuresOnDamage) + for (double & sel : amountOfInjuresOnDamage) { stream << sel << " -"; } @@ -167,13 +168,13 @@ namespace ace { std::stringstream stream; stream << "ADDED: " << ID << " - " << className << " - ["; - for each (std::string sel in allowedSelections) + for (std::string & sel : allowedSelections) { stream << sel << " -"; } stream << "] - "; stream << bloodLoss << " - " << pain << " - " << minDamage << " - " << maxDamage; - for each (std::string sel in possibleCauses) + for (std::string & sel : possibleCauses) { stream << sel << " -"; } @@ -186,11 +187,11 @@ namespace ace { void handleDamage::FinalizeDefinitions() { // We are finding all possible injuries for a specific damage type here, so we don't have to figure that out at a later stage. - for each (std::shared_ptr damageType in damageTypes) + for (auto & damageType : damageTypes) { - for each (std::shared_ptr injuryType in injuryTypes) + for (auto & injuryType : injuryTypes) { - std::vector::iterator it = find(injuryType->causes.begin(), injuryType->causes.end(), damageType->typeName); + std::vector::iterator it = std::find(injuryType->causes.begin(), injuryType->causes.end(), damageType->typeName); // outputstream << " Evaluating causes: " << (it != injuryType->causes.end()) << " "; if (it != injuryType->causes.end()) { diff --git a/extensions/medical/medical.cpp b/extensions/medical/medical.cpp index 4f25472e26..3dcf3196ab 100644 --- a/extensions/medical/medical.cpp +++ b/extensions/medical/medical.cpp @@ -5,7 +5,7 @@ * Glowbal */ -#include "ace_common.h" +#include "shared.hpp" #include #include #include @@ -13,7 +13,7 @@ #include "OpenWound.h" extern "C" { - __declspec (dllexport) void __stdcall RVExtension(char *output, int outputSize, const char *function); + EXPORT void __stdcall RVExtension(char *output, int outputSize, const char *function); }; std::vector parseExtensionInput(const std::string& input) From 7a0fd7cf247d39b97da60ee7d46071f8a2993b8f Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 23 May 2015 19:04:29 +0200 Subject: [PATCH 054/252] Removed duplicate config entries --- optionals/tracers/CfgAmmo.hpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/optionals/tracers/CfgAmmo.hpp b/optionals/tracers/CfgAmmo.hpp index 2d6bafb0a5..7155087627 100644 --- a/optionals/tracers/CfgAmmo.hpp +++ b/optionals/tracers/CfgAmmo.hpp @@ -37,13 +37,6 @@ class CfgAmmo { class B_762x51_Tracer_Yellow: B_762x51_Ball { model = PATHTOF(ace_TracerYellow2.p3d); }; - class SubmunitionBullet; - class B_762x51_Minigun_Tracer_Red: SubmunitionBullet { - model = PATHTOF(ace_TracerRed2.p3d); - }; - class B_762x51_Minigun_Tracer_Red_splash: B_762x51_Ball { - model = PATHTOF(ace_TracerRed2.p3d); - }; class B_762x54_Ball; class B_762x54_Tracer_Red: B_762x54_Ball { model = PATHTOF(ace_TracerRed2.p3d); @@ -158,13 +151,13 @@ class CfgAmmo { class Sh_120mm_APFSDS_Tracer_Yellow: Sh_120mm_APFSDS { model = PATHTOF(ace_shell_tracer_yellow.p3d); }; + class SubmunitionBullet; class B_762x51_Minigun_Tracer_Red: SubmunitionBullet { model = PATHTOF(ace_TracerRed2.p3d); }; class B_762x51_Minigun_Tracer_Yellow: B_762x51_Minigun_Tracer_Red { model = PATHTOF(ace_TracerYellow2.p3d); }; - class B_762x51_Ball; class B_762x51_Minigun_Tracer_Red_splash: B_762x51_Ball { model = PATHTOF(ace_TracerRed2.p3d); }; From 8ef41b7523f8e6078818164ad73bb895ac6fd9ad Mon Sep 17 00:00:00 2001 From: gienkov Date: Sat, 23 May 2015 18:16:20 +0200 Subject: [PATCH 055/252] Translate missing frag and adv. ball. strings to PL --- addons/advanced_ballistics/stringtable.xml | 245 +++++++++++---------- addons/frag/stringtable.xml | 81 ++++--- 2 files changed, 172 insertions(+), 154 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index d39139ce36..211a2493c4 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -1,119 +1,126 @@ - - - - - Show Wind Info - Pokaż inf. o wietrze - Mostra indicazioni del vento - Показать информацию о ветре - Afficher les info sur le vent - Mostrar información del viento - Windinformationen anzeigen - Széladatok mutatása - Zobrazit informace o větru - Mostrar Informação do Vento - - - Show Protractor - Pokaż kątomierz - Mostra il rapportatore - Показать транспортир - Afficher le rapporteur - Mostrar transportador - Winkelmesser anzeigen - Szögmérő mutatása - Zobrazit úhloměr - Mostrar Transferidor - - - Advanced Ballistics - Zaawansowana balistyka - - - Advanced Ballistics - Zaawansowana balistyka - - - Enables advanced ballistics - Aktywuje zaawansowaną balistykę - - - Enabled For Snipers - - - Enables advanced ballistics for non local snipers (when using high power optics) - - - Enabled For Group Members - - - Enables advanced ballistics for non local group members - - - Enabled For Everyone - - - Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer) - - - Always Enabled For Group Members - Zawsze akt. dla czł. grupy - - - Always enables advanced ballistics when a group member fires - Aktywuje zaawansowaną balistykę dla wszystkich członków grupy - - - Disabled In FullAuto Mode - Wył. podczas ognia auto. - - - Disables the advanced ballistics during full auto fire - Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego - - - Enable Ammo Temperature Simulation - Symulacja temp. amunicji - - - Muzzle velocity varies with ammo temperature - Prędkość wylotowa pocisku jest zależna od temperatury amunicji - - - Enable Barrel Length Simulation - Symulacja długości lufy - - - Muzzle velocity varies with barrel length - Prędkość wylotowa pocisku jest zależna od długości lufy - - - Enable Bullet Trace Effect - Efekt smugi pocisku - - - Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics) - Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę) - - - Simulation Interval - Interwał symulacji - - - Defines the interval between every calculation step - Określa interwał pomiędzy każdym krokiem kalkulacji - - - Simulation Radius - Zasięg symulacji - - - Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles - Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków - - - - Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki. - - - + + + + + + Show Wind Info + Pokaż inf. o wietrze + Mostra indicazioni del vento + Показать информацию о ветре + Afficher les info sur le vent + Mostrar información del viento + Windinformationen anzeigen + Széladatok mutatása + Zobrazit informace o větru + Mostrar Informação do Vento + + + Show Protractor + Pokaż kątomierz + Mostra il rapportatore + Показать транспортир + Afficher le rapporteur + Mostrar transportador + Winkelmesser anzeigen + Szögmérő mutatása + Zobrazit úhloměr + Mostrar Transferidor + + + Advanced Ballistics + Zaawansowana balistyka + + + Advanced Ballistics + Zaawansowana balistyka + + + Enables advanced ballistics + Aktywuje zaawansowaną balistykę + + + Enabled For Snipers + Akt. dla snajperów + + + Enables advanced ballistics for non local snipers (when using high power optics) + Aktywuje zaawansowaną balistykę dla nielokalnych snajperów (kiedy używają optyki) + + + Enabled For Group Members + Akt. dla czł. grupy + + + Enables advanced ballistics for non local group members + Aktywuje zaawansowaną balistykę dla nielokalnych członków grupy + + + Enabled For Everyone + Akt. dla wszystkich + + + Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer) + Aktywuje zaawansowaną balistykę dla wszystkich nielokalnych graczy (aktywacja tej opcji może spodowować spory spadek wydajności podczas ciężkiej wymiany ognia) + + + Always Enabled For Group Members + Zawsze akt. dla czł. grupy + + + Always enables advanced ballistics when a group member fires + Aktywuje zaawansowaną balistykę dla wszystkich członków grupy + + + Disabled In FullAuto Mode + Wył. podczas ognia auto. + + + Disables the advanced ballistics during full auto fire + Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego + + + Enable Ammo Temperature Simulation + Symulacja temp. amunicji + + + Muzzle velocity varies with ammo temperature + Prędkość wylotowa pocisku jest zależna od temperatury amunicji + + + Enable Barrel Length Simulation + Symulacja długości lufy + + + Muzzle velocity varies with barrel length + Prędkość wylotowa pocisku jest zależna od długości lufy + + + Enable Bullet Trace Effect + Efekt smugi pocisku + + + Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics) + Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę) + + + Simulation Interval + Interwał symulacji + + + Defines the interval between every calculation step + Określa interwał pomiędzy każdym krokiem kalkulacji + + + Simulation Radius + Zasięg symulacji + + + Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles + Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków + + + + Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki. + + + \ No newline at end of file diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index a3a91b92d9..bbc7d1bc98 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -1,35 +1,46 @@ - - - - - Fragmentation Simulation - - - Enable the ACE Fragmentation Simulation - - - Spalling Simulation - - - Enable the ACE Spalling Simulation - - - Maximum Projectiles Tracked - - - This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once) - - - Maximum Projectiles Per Frame - - - The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further. - - - (SP Only) Frag/Spall Debug Tracing - - - (SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only. - - - + + + + + + Fragmentation Simulation + Symulacja fragmentacji + + + Enable the ACE Fragmentation Simulation + Aktywuje symulację fragmentacji ACE + + + Spalling Simulation + Symulacja odprysków + + + Enable the ACE Spalling Simulation + Aktywuje symulację odprysków ACE + + + Maximum Projectiles Tracked + Maks. liczba śledzonych pocisków + + + This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once) + To ustawienie kontroluje maksymalną ilość pocisków, jakie fragmentacja i odpryski symulują w danym momencie. Jeżeli więcej pocisków będzie wystrzelonych, wtedy nie będą one śledzone. Zmniejsz tą opcję jeżeli nie chcesz odczuwać spadków FPS podczas ciężkiej wymiany ognia (więcej niż 200 pocisków w powietrzu na raz). + + + Maximum Projectiles Per Frame + Maks. liczba pocisków na klatkę + + + The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further. + Ilość obliczeń wykonywanych przez symulację odprysków w danej klatce. Ta opcja pomaga rozprzestrzenić obliczenia odprysków na więcej klatek, zmniejszając spadek FPS jeszcze bardziej. + + + (SP Only) Frag/Spall Debug Tracing + (Tylko SP) Wizualny debug odł./odpr. + + + (SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only. + (Tylko SP) Wymaga restartu misji/edytora. Aktywuje wizualne śledzenie odłamków oraz odprysków w trybie gry Single Player. + + + \ No newline at end of file From d96873b8a0d4f0a6366a2a0d628143a0fbb2a450 Mon Sep 17 00:00:00 2001 From: Grzegorz Date: Sat, 23 May 2015 19:17:32 +0200 Subject: [PATCH 056/252] Fix line ending --- addons/advanced_ballistics/stringtable.xml | 251 ++++++++++----------- addons/frag/stringtable.xml | 91 ++++---- 2 files changed, 170 insertions(+), 172 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index 211a2493c4..873014b034 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -1,126 +1,125 @@ - - - - - - Show Wind Info - Pokaż inf. o wietrze - Mostra indicazioni del vento - Показать информацию о ветре - Afficher les info sur le vent - Mostrar información del viento - Windinformationen anzeigen - Széladatok mutatása - Zobrazit informace o větru - Mostrar Informação do Vento - - - Show Protractor - Pokaż kątomierz - Mostra il rapportatore - Показать транспортир - Afficher le rapporteur - Mostrar transportador - Winkelmesser anzeigen - Szögmérő mutatása - Zobrazit úhloměr - Mostrar Transferidor - - - Advanced Ballistics - Zaawansowana balistyka - - - Advanced Ballistics - Zaawansowana balistyka - - - Enables advanced ballistics - Aktywuje zaawansowaną balistykę - - - Enabled For Snipers - Akt. dla snajperów - - - Enables advanced ballistics for non local snipers (when using high power optics) - Aktywuje zaawansowaną balistykę dla nielokalnych snajperów (kiedy używają optyki) - - - Enabled For Group Members - Akt. dla czł. grupy - - - Enables advanced ballistics for non local group members - Aktywuje zaawansowaną balistykę dla nielokalnych członków grupy - - - Enabled For Everyone - Akt. dla wszystkich - - - Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer) - Aktywuje zaawansowaną balistykę dla wszystkich nielokalnych graczy (aktywacja tej opcji może spodowować spory spadek wydajności podczas ciężkiej wymiany ognia) - - - Always Enabled For Group Members - Zawsze akt. dla czł. grupy - - - Always enables advanced ballistics when a group member fires - Aktywuje zaawansowaną balistykę dla wszystkich członków grupy - - - Disabled In FullAuto Mode - Wył. podczas ognia auto. - - - Disables the advanced ballistics during full auto fire - Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego - - - Enable Ammo Temperature Simulation - Symulacja temp. amunicji - - - Muzzle velocity varies with ammo temperature - Prędkość wylotowa pocisku jest zależna od temperatury amunicji - - - Enable Barrel Length Simulation - Symulacja długości lufy - - - Muzzle velocity varies with barrel length - Prędkość wylotowa pocisku jest zależna od długości lufy - - - Enable Bullet Trace Effect - Efekt smugi pocisku - - - Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics) - Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę) - - - Simulation Interval - Interwał symulacji - - - Defines the interval between every calculation step - Określa interwał pomiędzy każdym krokiem kalkulacji - - - Simulation Radius - Zasięg symulacji - - - Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles - Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków - - - - Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki. - - - \ No newline at end of file + + + + + Show Wind Info + Pokaż inf. o wietrze + Mostra indicazioni del vento + Показать информацию о ветре + Afficher les info sur le vent + Mostrar información del viento + Windinformationen anzeigen + Széladatok mutatása + Zobrazit informace o větru + Mostrar Informação do Vento + + + Show Protractor + Pokaż kątomierz + Mostra il rapportatore + Показать транспортир + Afficher le rapporteur + Mostrar transportador + Winkelmesser anzeigen + Szögmérő mutatása + Zobrazit úhloměr + Mostrar Transferidor + + + Advanced Ballistics + Zaawansowana balistyka + + + Advanced Ballistics + Zaawansowana balistyka + + + Enables advanced ballistics + Aktywuje zaawansowaną balistykę + + + Enabled For Snipers + Akt. dla snajperów + + + Enables advanced ballistics for non local snipers (when using high power optics) + Aktywuje zaawansowaną balistykę dla nielokalnych snajperów (kiedy używają optyki) + + + Enabled For Group Members + Akt. dla czł. grupy + + + Enables advanced ballistics for non local group members + Aktywuje zaawansowaną balistykę dla nielokalnych członków grupy + + + Enabled For Everyone + Akt. dla wszystkich + + + Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer) + Aktywuje zaawansowaną balistykę dla wszystkich nielokalnych graczy (aktywacja tej opcji może spodowować spory spadek wydajności podczas ciężkiej wymiany ognia) + + + Always Enabled For Group Members + Zawsze akt. dla czł. grupy + + + Always enables advanced ballistics when a group member fires + Aktywuje zaawansowaną balistykę dla wszystkich członków grupy + + + Disabled In FullAuto Mode + Wył. podczas ognia auto. + + + Disables the advanced ballistics during full auto fire + Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego + + + Enable Ammo Temperature Simulation + Symulacja temp. amunicji + + + Muzzle velocity varies with ammo temperature + Prędkość wylotowa pocisku jest zależna od temperatury amunicji + + + Enable Barrel Length Simulation + Symulacja długości lufy + + + Muzzle velocity varies with barrel length + Prędkość wylotowa pocisku jest zależna od długości lufy + + + Enable Bullet Trace Effect + Efekt smugi pocisku + + + Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics) + Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę) + + + Simulation Interval + Interwał symulacji + + + Defines the interval between every calculation step + Określa interwał pomiędzy każdym krokiem kalkulacji + + + Simulation Radius + Zasięg symulacji + + + Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles + Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków + + + + Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki. + + + diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index bbc7d1bc98..17cca2d83a 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -1,46 +1,45 @@ - - - - - - Fragmentation Simulation - Symulacja fragmentacji - - - Enable the ACE Fragmentation Simulation - Aktywuje symulację fragmentacji ACE - - - Spalling Simulation - Symulacja odprysków - - - Enable the ACE Spalling Simulation - Aktywuje symulację odprysków ACE - - - Maximum Projectiles Tracked - Maks. liczba śledzonych pocisków - - - This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once) - To ustawienie kontroluje maksymalną ilość pocisków, jakie fragmentacja i odpryski symulują w danym momencie. Jeżeli więcej pocisków będzie wystrzelonych, wtedy nie będą one śledzone. Zmniejsz tą opcję jeżeli nie chcesz odczuwać spadków FPS podczas ciężkiej wymiany ognia (więcej niż 200 pocisków w powietrzu na raz). - - - Maximum Projectiles Per Frame - Maks. liczba pocisków na klatkę - - - The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further. - Ilość obliczeń wykonywanych przez symulację odprysków w danej klatce. Ta opcja pomaga rozprzestrzenić obliczenia odprysków na więcej klatek, zmniejszając spadek FPS jeszcze bardziej. - - - (SP Only) Frag/Spall Debug Tracing - (Tylko SP) Wizualny debug odł./odpr. - - - (SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only. - (Tylko SP) Wymaga restartu misji/edytora. Aktywuje wizualne śledzenie odłamków oraz odprysków w trybie gry Single Player. - - - \ No newline at end of file + + + + + Fragmentation Simulation + Symulacja fragmentacji + + + Enable the ACE Fragmentation Simulation + Aktywuje symulację fragmentacji ACE + + + Spalling Simulation + Symulacja odprysków + + + Enable the ACE Spalling Simulation + Aktywuje symulację odprysków ACE + + + Maximum Projectiles Tracked + Maks. liczba śledzonych pocisków + + + This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once) + To ustawienie kontroluje maksymalną ilość pocisków, jakie fragmentacja i odpryski symulują w danym momencie. Jeżeli więcej pocisków będzie wystrzelonych, wtedy nie będą one śledzone. Zmniejsz tą opcję jeżeli nie chcesz odczuwać spadków FPS podczas ciężkiej wymiany ognia (więcej niż 200 pocisków w powietrzu na raz). + + + Maximum Projectiles Per Frame + Maks. liczba pocisków na klatkę + + + The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further. + Ilość obliczeń wykonywanych przez symulację odprysków w danej klatce. Ta opcja pomaga rozprzestrzenić obliczenia odprysków na więcej klatek, zmniejszając spadek FPS jeszcze bardziej. + + + (SP Only) Frag/Spall Debug Tracing + (Tylko SP) Wizualny debug odł./odpr. + + + (SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only. + (Tylko SP) Wymaga restartu misji/edytora. Aktywuje wizualne śledzenie odłamków oraz odprysków w trybie gry Single Player. + + + From 369499b5d05c9de52ec992b9577bf3f33ccceab3 Mon Sep 17 00:00:00 2001 From: BullHorn Date: Sun, 24 May 2015 18:21:08 +0300 Subject: [PATCH 057/252] Docs - installation - add optionals --- documentation/user/installation-guide.md | 27 ++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/documentation/user/installation-guide.md b/documentation/user/installation-guide.md index 62f62b7a08..63e90a8bb9 100644 --- a/documentation/user/installation-guide.md +++ b/documentation/user/installation-guide.md @@ -21,18 +21,37 @@ This guide will explain how to get ACE3 up and running faster than you can say b 64-Bit - `C:/Program Files (x86)/Steam/Steamapps/Common/Arma 3/` - After extraction you should have the `@ace` and `@CBA_A3` folders inside your Arma 3 folder. -## 4. Launch Arma 3 with ACE3 +## 4. Install ACE3 Optional components +
+
Note:
+

Skip this step if you're not using additional mods. If you are, consult with your mission maker before installing any of these components.

+
+ +### 4.1 What do they do? +Optional components supplement 3rd party mods with ACE3 features, for example: +- Optional weapon components make Advanced Ballistics possible, as well as the ability to use ACE3 weapon attachments with 3rd party weapons like RHS, HLC, etc. +- Optional tracers component brings back ACE2 ball tracers. +- Optional server component is used to load the userconfig files. + +### 4.2 Which optionals should I use? +Only use the optional components that correspond with your mod-pack. + +### 4.3 How to install these components? +- Inside your `Arma 3/@ace/` folder, you'll find the `optionals` and `addons` folders. +- Copy and paste the relevant `.pbo` and `.bisign` files from the `optionals` folder into the `addons` folder. + +## 5. Launch Arma 3 with ACE3 - Launch Arma 3 to start the official game Launcher. - Click `Mods` and make sure the checkboxes next to `ace` and `CBA_A3` are ticked. Arma 3 Vanilla Launcher - Click `Play` -## 5. Alternative launch methods +## 6. Alternative launch methods -### 5.1 Steam Launch Parameters +### 6.1 Steam Launch Parameters - Not supported with the new Arma 3 Launcher -### 5.2 ArmA3Sync +### 6.2 ArmA3Sync - Inspect `Addon Options` and verify the `Addon Search Directories` are leading to your Arma 3 folder. - Return to the `Addons` tab and click `Refresh`. - Right-click inside `Addon Groups`, click `Create Group` and give it a name. From 329148bbdc0536ca1ee9cb29f3f361a075215d28 Mon Sep 17 00:00:00 2001 From: BullHorn Date: Mon, 25 May 2015 12:43:01 +0300 Subject: [PATCH 058/252] Update installation-guide - optional userconfig --- documentation/user/installation-guide.md | 1 + 1 file changed, 1 insertion(+) diff --git a/documentation/user/installation-guide.md b/documentation/user/installation-guide.md index 63e90a8bb9..4618ab4216 100644 --- a/documentation/user/installation-guide.md +++ b/documentation/user/installation-guide.md @@ -39,6 +39,7 @@ Only use the optional components that correspond with your mod-pack. ### 4.3 How to install these components? - Inside your `Arma 3/@ace/` folder, you'll find the `optionals` and `addons` folders. - Copy and paste the relevant `.pbo` and `.bisign` files from the `optionals` folder into the `addons` folder. +- Copy and paste the `userconfig` folder from the `optionals` folder into root `Arma 3` folder. ## 5. Launch Arma 3 with ACE3 - Launch Arma 3 to start the official game Launcher. From 41892fd6df8c4a235981e65d8692786b2373c589 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Tue, 26 May 2015 00:33:20 +0200 Subject: [PATCH 059/252] Added surgicalKit treatment --- addons/medical/XEH_preInit.sqf | 2 ++ .../fnc_treatmentAdvanced_surgicalKit.sqf | 20 +++++++++++++++++++ ...fnc_treatmentAdvanced_surgicalKitLocal.sqf | 18 +++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 addons/medical/functions/fnc_treatmentAdvanced_surgicalKit.sqf create mode 100644 addons/medical/functions/fnc_treatmentAdvanced_surgicalKitLocal.sqf diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index 4f4ff5bc30..33ef6fbcde 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -78,6 +78,8 @@ PREP(treatmentAdvanced_fullHeal); PREP(treatmentAdvanced_fullHealLocal); PREP(treatmentAdvanced_medication); PREP(treatmentAdvanced_medicationLocal); +PREP(treatmentAdvanced_surgicalKit); +PREP(treatmentAdvanced_surgicalKitLocal); PREP(treatmentBasic_bandage); PREP(treatmentBasic_bloodbag); PREP(treatmentBasic_bloodbagLocal); diff --git a/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit.sqf b/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit.sqf new file mode 100644 index 0000000000..da967b7f1b --- /dev/null +++ b/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit.sqf @@ -0,0 +1,20 @@ +/* + * Author: BaerMitUmlaut + * Handles treatment via surgical kit. + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_target", "_caller", "_selectionName", "_className", "_items"]; +_caller = _this select 0; +_target = _this select 1; +_selectionName = _this select 2; +_className = _this select 3; +_items = _this select 4; + +// TODO replace by event system +[[_caller, _target], QUOTE(DFUNC(treatmentAdvanced_surgicalKitLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ + +true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_surgicalKitLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_surgicalKitLocal.sqf new file mode 100644 index 0000000000..c5596c0bcb --- /dev/null +++ b/addons/medical/functions/fnc_treatmentAdvanced_surgicalKitLocal.sqf @@ -0,0 +1,18 @@ +/* + * Author: BaerMitUmlaut + * Handles treatment via surgical kit (locally). + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_target", "_caller"]; +_caller = _this select 0; +_target = _this select 1; + +if (alive _target) exitwith { + + _target setvariable [QGVAR(bandagedWounds), [], true]; + +}; From 7eeddfbd6584a6135600ede616cdc5df41c6109a Mon Sep 17 00:00:00 2001 From: Macusercom Date: Tue, 26 May 2015 17:04:53 +0200 Subject: [PATCH 060/252] German translations Added a lot of German translations and fixed even more typos. --- addons/advanced_ballistics/stringtable.xml | 25 ++++- addons/ballistics/stringtable.xml | 3 +- addons/captives/stringtable.xml | 4 +- addons/common/stringtable.xml | 16 ++- addons/explosives/stringtable.xml | 9 +- addons/fcs/stringtable.xml | 4 +- addons/hearing/stringtable.xml | 3 + addons/interaction/stringtable.xml | 11 +- addons/inventory/stringtable.xml | 4 +- addons/magazinerepack/stringtable.xml | 6 +- addons/map/stringtable.xml | 13 +++ addons/medical/stringtable.xml | 114 ++++++++++++++++++--- addons/microdagr/stringtable.xml | 7 +- addons/missileguidance/stringtable.xml | 7 +- addons/mk6mortar/stringtable.xml | 9 +- addons/nametags/stringtable.xml | 23 ++++- addons/nightvision/stringtable.xml | 16 +-- addons/optionsmenu/stringtable.xml | 14 ++- addons/respawn/stringtable.xml | 13 ++- addons/switchunits/stringtable.xml | 15 ++- addons/vehiclelock/stringtable.xml | 15 ++- addons/weather/stringtable.xml | 14 +++ addons/winddeflection/stringtable.xml | 12 ++- 23 files changed, 301 insertions(+), 56 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index d39139ce36..1d37742800 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -28,92 +28,115 @@ Advanced Ballistics Zaawansowana balistyka + Erweiterte Ballistik Advanced Ballistics Zaawansowana balistyka + Erweiterte Ballistik Enables advanced ballistics Aktywuje zaawansowaną balistykę + Aktiviert die erweiterte Ballistik Enabled For Snipers + Für Sniper aktiviert Enables advanced ballistics for non local snipers (when using high power optics) + Aktiviert die erweiterte Ballistik für Nicht-lokale-Sniper (wenn Optiken mit hohem Zoom) Enabled For Group Members + Für Gruppenmitglieder aktiviert Enables advanced ballistics for non local group members + Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder Enabled For Everyone + Für jeden aktiviert Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer) + Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das zu aktivieren könnte die Leistung während großen Feuergefechten im Multiplayer reduzieren) Always Enabled For Group Members Zawsze akt. dla czł. grupy + Für Gruppenmitglieder immer aktiviert Always enables advanced ballistics when a group member fires Aktywuje zaawansowaną balistykę dla wszystkich członków grupy + Erweiterte Ballistik immer aktiviert lassen, wenn ein Gruppenmitglieder schießt Disabled In FullAuto Mode Wył. podczas ognia auto. + Im Aut Disables the advanced ballistics during full auto fire Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego + Deaktiviert die erweiterte Ballistik während Vollautomatik Enable Ammo Temperature Simulation Symulacja temp. amunicji + Munitionstemperatur-Simulation aktivieren Muzzle velocity varies with ammo temperature Prędkość wylotowa pocisku jest zależna od temperatury amunicji + Mün Enable Barrel Length Simulation Symulacja długości lufy + Lauflängen-Simulation aktivieren Muzzle velocity varies with barrel length Prędkość wylotowa pocisku jest zależna od długości lufy + Länge des Laufs verändert Mündungsbeschleunigung Enable Bullet Trace Effect Efekt smugi pocisku + Leuchtspurgeschosse aktivieren Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics) Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę) + Aktiviere Leuchtspurgeschosse für hohe Kaliber (nur sichtbar bei Verwendung von Visieren) Simulation Interval Interwał symulacji + Simulationsinterval Defines the interval between every calculation step Określa interwał pomiędzy każdym krokiem kalkulacji + Gibt das Interval zwischen jeder Berechnung an Simulation Radius Zasięg symulacji + Simulationsradius Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków + Gibt den Radius an (in Metern) bei dem die erweiterte Ballistik um den Spieler auf Geschosse angewendet wird Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki. - + \ No newline at end of file diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml index 85ac44b4de..68b6146ca8 100644 --- a/addons/ballistics/stringtable.xml +++ b/addons/ballistics/stringtable.xml @@ -1595,6 +1595,7 @@ [ACE] Ammo Supply Crate [ACE] Skrzynka z amunicją + [ACE] Munitionskiste - + \ No newline at end of file diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 07cf780e19..9c164e28fe 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -196,10 +196,12 @@ Make Unit Surrender Poddaj się! + Einheit aufgeben lassen Sync a unit to make them surrender.<br />Source: ace_captives Zsynchronizuj z jednostką aby sprawić by się poddała<br />Źródło: ace_captives + Einheit synchronisieren, um sie aufgeben zu lassen.<br />Quelle: ace_captives - + \ No newline at end of file diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 1b960de982..6a1ff475a1 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -39,7 +39,7 @@ ACE Options - ACE Optionen + ACE-Optionen Opciones ACE Ustawienia ACE Nastavení ACE @@ -473,6 +473,7 @@ Check PBOs Sprawdzaj PBO + Überprüfe PBOs @@ -481,46 +482,57 @@ Action Akcja + Aktion What to do with people who do not have the right PBOs? Co zrobić z graczami, którzy nie mają właściwych PBO? + Was soll mit Leuten passieren, die nicht die richtigen PBOs haben? Warn once Ostrzeż raz + Einmal verwarnen Warn (permanent) Ostrzeżenie (permanentne) + Immer verwarnen Kick Kick + Kicken Check all addons Sprawdź wsz. addony + Alle Addons überprüfen Check all addons instead of only those of ACE? Sprawdzaj wszystkie addony czy tylko te z ACE? + Alle Addons anstatt nur ACE überprüfen? Whitelist Biała lista + Whitelist What addons are allowed regardless? Jakie addony są dozwolone? + Welche Addons werden dennoch erlaubt? LSD Vehicles Pojazdy LSD + LSD-Fahrzeuge Adds LSD effect to synchronized vehicle Dodaje efekt LSD pod zsynchronizowany pojazd + Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu - + \ No newline at end of file diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 5f5076175d..e88d7f0a4b 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -508,26 +508,31 @@ Explosive System System ładunków wybuchowych + Sprengstoffsystem Require specialists? Wymagaj specjalistów? + Benötigt Experten? Require explosive specialists to disable explosives? Default: No Wymagać saperów do rozbrajania ładunków wybuchowych? Domyślnie: Nie + Benötige Sprengstoffexperte um Sprengladungen zu entschärfen? Standard: Nein Punish non-specialists? Karaj nie-specjalistów? + Bestrafe Nicht-Experten? Increase the time it takes to complete actions for non-specialists? Default: Yes Zwiększyć ilość wymaganego czasu do ukończenia akcji dla nie-specjalistów? Domyślnie: Tak + Entschärfungszeit für Nicht-Experten erhöhen? Standard: Ja Moduł ten pozwala dostosować opcje związane z ładunkami wybuchowymi, ich podkładaniem oraz rozbrajaniem. - + \ No newline at end of file diff --git a/addons/fcs/stringtable.xml b/addons/fcs/stringtable.xml index d62a5d85ea..77d683fc98 100644 --- a/addons/fcs/stringtable.xml +++ b/addons/fcs/stringtable.xml @@ -3,7 +3,7 @@ Lase Target / Measure Distance - Ziel anlasern / Entfernung Messen + Ziel anlasern / Entfernung messen Télémétrer la cible Naświetl cel / Zmierz odległość Označit cíl / Změřit vzdálenost @@ -74,4 +74,4 @@ СУО обнулен. - + \ No newline at end of file diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 9e960f6d63..e8bf6c4ab1 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -112,14 +112,17 @@ Hearing Słuch + Gehör Enable combat deafness? Wł. głuchotę bojową + Aktiviere Taubheit im Gefecht? Enable combat deafness? Możliwość chwilowej utraty słuchu przy głośnych wystrzałach i jednoczesnym braku włożonych stoperów + Aktiviere Taubheit im Gefecht? diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index b2e75ccdff..aa39762f6c 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -111,7 +111,7 @@ Interaction Menu (Self) - Interaktionsmenü (Selbst) + Interaktionsmenü (selbst) Menú de interacción (Propio) Menu interakcji (własne) Menu interakce (vlastní) @@ -495,7 +495,7 @@ Get Down! - Auf Den Boden! + Auf den Boden! Al suelo! Padnij! K zemi! @@ -507,7 +507,7 @@ Team Management - Team Management + Teamverwaltung Gestión de equipo Gestion d'équipe Zarządzanie oddziałem @@ -796,14 +796,17 @@ Interaction System System interakcji + Interaktionssystem Enable Team Management Wł. zarządzanie drużyną + Aktiviere Teamverwaltung Should players be allowed to use the Team Management Menu? Default: Yes Czy gracze mogą korzystać z menu zarządzania drużyną? Domyślnie: Tak + Sollen Spieler das Teamverwaltungsmenü verwenden dürfen? Standard: Ja diff --git a/addons/inventory/stringtable.xml b/addons/inventory/stringtable.xml index 6ad5ec0408..8272594df5 100644 --- a/addons/inventory/stringtable.xml +++ b/addons/inventory/stringtable.xml @@ -15,7 +15,7 @@ Normally inventory display is scaled by UI size. This allows scaling the Inventory UI size up, but doesn't increase font size allowing more rows displayed. - Im Regelfall wird die Inventargröße durch die Größe der Nutzeroberfläche bestimmt. Diese Einstellung erlaubt es das Inventar unter Ausschluss der Schriftgröße zu vergrößern. Dadurch können mehr Gegenstände angezeigt werden. + Im Regelfall wird die Inventargröße durch die Größe der Nutzeroberfläche bestimmt. Diese Einstellung erlaubt es, das Inventar unter Ausschluss der Schriftgröße zu vergrößern. Dadurch können mehr Gegenstände angezeigt werden. Normalmente la pantalla de inventario se escala por el tamaño de la interfaz de usuario. Esto permite ampliar el tamaño de la interfaz de usuario de inventario, pero no aumenta el tamaño de fuente, permitiendo mostrar más filas. Обычно, размер окна инвентаря зависит от размеров пользовательского интерфейса. Эта настройка позволяет увеличить размер окна инвентаря, не увеличивая размеры шрифтов, так что отображется большее количество строк. Normálně se velikost invetáře škáluje s velikostí UI. Toto nastavení dovoluje škálování velikost inventáře ale nežvětšuje velikost fontu. To dovoluje zobrazení více řad v inventáři. @@ -26,4 +26,4 @@ Normalmente o tamanho da tela do inventário é ditada pelo tamanho da UI. Isso permite aumentar o tamanho da tela de inventário, mas não aumenta o tamanho da fonte, permitindo que mais linhas sejam visualizadas. - + \ No newline at end of file diff --git a/addons/magazinerepack/stringtable.xml b/addons/magazinerepack/stringtable.xml index 8c1a0e01dc..c6879280da 100644 --- a/addons/magazinerepack/stringtable.xml +++ b/addons/magazinerepack/stringtable.xml @@ -76,7 +76,7 @@ Repacking Finished Réorganisation terminée - Wiederverpacken Fertig + Wiederverpacken fertig Reorganización finalizada Перепаковка завершена Páskování dokončeno @@ -88,7 +88,7 @@ Repacking Interrupted Réorganisation interrompue - Umpacken Unterbrochen + Umpacken unterbrochen Reorganización interrumpida Перепаковка прервана Páskování přerušeno @@ -110,4 +110,4 @@ %1 Total e %2 Parcial - + \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index c93ff4c286..d6546b2b4c 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -4,10 +4,12 @@ Map Mapa + Karte Map illumination? Oświetlenie mapy + Kartenbeleuchtung Calculate dynamic map illumination based on light conditions? @@ -16,26 +18,32 @@ Map shake? Drżenie mapy + Kamerawackeln Make map shake when walking? Ekran mapy drży podczas ruchu + Kamerawackeln beim Gehen? Limit map zoom? Ograniczony zoom + Kartenzoom einschränken Limit the amount of zoom available for the map? Ogranicza maksymalny stopień przybliżenia mapy + Zoomstufe der Karte einschränken? Show cursor coordinates? Koordynaty pod kursorem + Zeige Cursor-Koordinaten? Show the grid coordinates on the mouse pointer? Pokazuje pod kursorem koordynaty wskazanego kwadratu mapy + Gitter-Koordinaten auf dem Mauszeiger anzeigen? @@ -44,22 +52,27 @@ Blue Force Tracking Blue Force Tracking + Blue Force Tracking Interval Interwał + Interval How often the markers should be refreshed (in seconds) Jak często markery powinny być odświeżane (w sekundach) + Wie oft sollen die Markierungen aktualisiert werden (in Sekunden) Hide AI groups? Ukryj grupy AI + KI-Gruppen verstecken? Hide markers for 'AI only' groups? Ukrywa markery dla grup złożonych tylko z AI + Verstecke Marker für "nur KI"-Gruppen? diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 9e818e8ca3..7384fea5ae 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -44,7 +44,7 @@ Устанавливает количество мусора, который появляется после использования мед. препаратов. Большое количество мусора может уменьшить производительность, поэтому данная настройка локальна для клиента. Il livello di dettagli della simulazione dei rifiuti indica il numero di rifiuti che verranno creati localmente nel client. La creazione di troppi rifiuti in aree locali potrebbe causare lag e calo di FPS. Questo è un settaggio client. Le niveau de simulation des détritus règle la quantité de déchets qui vont être créés localement chez le client. Des quantitées excessive chez certains clients peuvent causer des chutes de FPS, c'est donc une option client uniquement. - Die Einstellung für das Abfall-Detaillevel stellt die Menge der lokal erzeugten medizinischen Abfälle ein. Zuviel erzeugte Abfälle können FPS-Lags erzeugen, deswegen ist diese Einstellung nur clientseitig. + Die Einstellung für das Abfall-Detaillevel stellt die Menge der lokal erzeugten medizinischen Abfälle ein. Zuviel erzeugte Abfälle können FPS-Einbrüche erzeugen, deswegen ist diese Einstellung nur clientseitig. A hulladékszimuláció részletessége megszabja a kliens által megjelenített hulladékobjektumok mennyiségét. Súlyos mennyiségek izolált területeken alacsony FPS-t okozhatnak, így ez egy kliensoldali beállítás. O nível de detalhe de sujeira determina o número de itens que irão aparecer no cliente. Quantidades excessivas em áreas locais podem aumentar o lag do FPS, então esta é uma opção somente para o cliente. Počet zobrazených předmětů po použití zdravotnického materiálu ovlivňuje počet objektů, které budou zobrazeny klientovi v místě použití zdravotnického materiálu. Vyšší množství objektů může způsobovat poklesy FPS a proto je toto nastavení čistě na klientovi. @@ -111,7 +111,7 @@ Transfuse Saline - Salzlösungtransfusion + Salzlösungstransfusion Transfundir salino Transfúze fyziologický roztoku Przetocz sól fizjologiczną @@ -123,7 +123,7 @@ Apply Tourniquet - Tourniquet anwenden + Druckverband anwenden Aplicar torniquete Aplikovat škrtidlo Załóż stazę @@ -171,7 +171,7 @@ Bandage Left Arm - Arm links verbinden + Linken Arm verbinden Vendar el brazo izquierdo Bandażuj lewe ramię Obvázat levou ruku @@ -183,7 +183,7 @@ Bandage Right Arm - Arm rechts verbinden + Rechten Arm verbinden Vendar el brazo derecho Bandażuj prawe ramię Obvázat pravou ruku @@ -195,7 +195,7 @@ Bandage Left Leg - Bein links verbinden + Linkes Bein verbinden Vendar la pierna izquierda Bandażuj lewą nogę Obvázat levou nohu @@ -207,7 +207,7 @@ Bandage Right Leg - Bein rechts verbinden + Rechtes Bein verbinden Vendar la pierna derecha Bandażuj prawą nogę Obvázat pravou nohu @@ -267,7 +267,7 @@ Transfusing Saline ... - Sallösungtransfusion ... + Salzlösungtransfusion ... Transfusión de salino ... Probíha transfúze fyziologický roztoku ... Przetaczanie soli fizjologicznej ... @@ -747,7 +747,7 @@ Tourniquet [CAT] - Tourniquet [CAT] + Druckverband [CAT] Жгут Torniquete [CAT] Tourniquet [CAT] @@ -787,7 +787,7 @@ Utilizado para cubrir una herida Utilisé pour couvrir une blessure Używany w celu przykrycia i ochrony miejsca zranienia - Verwendet, um Wunden abzudecken + Verwendet um Wunden abzudecken Sebesülések befedésére alkalmas Usato per coprire una ferita Usado para cobrir um ferimento @@ -915,7 +915,7 @@ Morphine autoinjector - Morphium Autoinjektor + Morphium-Autoinjektor Морфин в пневмошприце Morfina auto-inyectable Auto-injecteur de Morphine @@ -955,7 +955,7 @@ Atropina auto-inyectable Auto-injecteur d'Atropine Autostrzykawka AtroPen - Atropin Autoinjektor + Atropin-Autoinjektor Autoinjektor atropin Atropin autoinjektor Autoiniettore di atropina @@ -967,7 +967,7 @@ Usado en escenarios NBQ Utilisé en cas d'attaque CBRN Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. - Verwendet bei ABC Kontamination + Verwendet bei ABC-Kontamination NBK helyzetek esetén használandó Usato in situazioni con gas nervino. Usado em casos de ataque QBRN @@ -979,7 +979,7 @@ Medicamento usado por militares en escenarios NBQ Médicament utilisé par l'armée en cas d'attaque CBRN Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. Środek stosowany w przypadku zagrożeń NBC. - Ein Medikament, das vom Militär bei ABC Kontamination verwendet wird. + Ein Medikament, das vom Militär bei ABC-Kontamination verwendet wird. Egy instabil alkaloid, NBK helyzetek esetén a katonai szervezetek veszik használatba. E' un farmaco usato in ambito militare in scenari con presenza di gas nervino. Uma droga usada por militares em casos de ataque QBRN. @@ -991,7 +991,7 @@ Epinefrina auto-inyectable Auto-injecteur d'épinéphrine Autostrzykawka EpiPen - Epiniphrin Autoinjektor + Epiniphrin-Autoinjektor Autoinjektor adrenalin Epinefrin autoinjektor Autoiniettore di epinefrina @@ -1016,7 +1016,7 @@ Medicament qui fonctionne sur le système nerveux sympathique créant une dilatation des bronches, augmente la fréquence cardiaque et annule les effets d'une réaction allergique (anaphylaxie). Utilisé lors d'arrêt cardio-respiratoire pour augmenter les chances de retrouver un pouls. EpiPen z adrenaliną ma działanie sympatykomimetyczne, tj. pobudza receptory alfa- i beta-adrenergiczne. Pobudzenie układu współczulnego prowadzi do zwiększenia częstotliwości pracy serca, zwiększenia pojemności wyrzutowej serca i przyśpieszenia krążenia wieńcowego. Pobudzenie oskrzelowych receptorów beta-adrenergicznych wywołuje rozkurcz mięśni gładkich oskrzeli, co w efekcie zmniejsza towarzyszące oddychaniu świsty i duszności. Una sostanza che permette di dilatare i bronchi, aumentare il battito cardiaco e combattere effetti di reazioni allergiche. Usato anche in casi di arresto cardiaco. - Ein Medikament, dass die Bronchien erweitert, die Herzfrequenz erhöht und Symptome von allergischen Reaktionen(Anaphylaxie) bekämpft. Wird bei plötzlichem Herzstillstand verabreicht. + Ein Medikament, das die Bronchien erweitert, die Herzfrequenz erhöht und Symptome von allergischen Reaktionen(Anaphylaxie) bekämpft. Wird bei plötzlichem Herzstillstand verabreicht. Uma droga trabalha dilatando os bronquios, aumentando a frequência cardíaca e combate efeitos de reações alérgicas(anáfilaticas). Usado em casos de parada cardiaca com poucas changes de recuperação. Egy hormon, mely a szimpatikus idegrendszer által kitágítja a hörgőket, valamint megnöveli a szívverést, ezzel ellensúlyozva ilyen jellegű allergiás reakciókat (anafilaxiás sokk). Hirtelen szívmegállás esetén is használt, idő alatt csökkenő hatásfokkal. Zúžení periferních cév díky působení na alfa receptory a následné kontrakci hladkých svalů, tím dochází k tzv. centralizaci oběhu, krev se soustřeďuje v životně důležitých centrálních orgánech (srdce, mozek, plíce), působí také pozitivně na srdeční činnost a dochází ke zvýšení krevního tlaku a tepu. Dále se používá při náhlé srdeční zástavě. @@ -2708,10 +2708,12 @@ Medical Settings [ACE] Ustawienia medyczne [ACE] + Medizinische Einstellungen [ACE] Medical Level Poziom medyczny + Medizinisches Level What is the medical simulation level? @@ -2720,14 +2722,17 @@ Basic Podstawowy + Standard Advanced Zaawansowany + Erweitert Medics setting Poziom medyków + Medizinische Einstellungen What is the level of detail prefered for medics? @@ -2736,10 +2741,12 @@ Disable medics Wyłącz medyków + Sanitäter deaktivieren Enable Litter Aktywuj odpadki + Abfall aktivieren Enable litter being created upon treatment @@ -2756,14 +2763,17 @@ Enable Screams Aktywuj wrzaski + Schreie aktivieren Enable screaming by injuried units Aktywuj wrzeszczenie z bólu przez ranne jednostki + Aktiviere Schreie bei verletzten Einheiten Player Damage Próg obrażeń graczy + Spielerschaden What is the damage a player can take before being killed? @@ -2772,6 +2782,7 @@ AI Damage Próg obrażeń AI + KI-Schaden What is the damage an AI can take before being killed? @@ -2780,118 +2791,147 @@ AI Unconsciousness Nieprzytomność AI + KI-Bewusstlosigkeit Allow AI to go unconscious Czy AI może być nieprzytomne od odniesionych obrażeń? + KI kann bewusstlos werden Disabled Wyłączone + Deaktiviert Enabled Włączone + Aktiviert Prevent instant death Wył. natychmiast. śmierć + Verhindere direkten Tod Have a unit move to unconscious instead of death Spraw, aby jednostka została przeniesiona do stanu nieprzytomności zamiast ginąć na miejscu od śmiertelnych obrażeń + Lässt eine Einheit bewusstlos werden anstatt zu sterben Bleeding coefficient Mnożnik krwawienia + Verblutungsmultiplikator Coefficient to modify the bleeding speed Mnożnik modyfikujący prędkość wykrwawiania się + Multiplikator um die Verblutungsgeschwindigkeit zu verändern Pain coefficient Mnożnik bólu + Schmerzmultiplikator Coefficient to modify the pain intensity Mnożnik modyfikujący intensywność bólu + Multiplikator um den Schmerzintensität zu verändern Sync status Synchronizuj status + Status synchronisieren Keep unit status synced. Recommended on. Utrzymuj synchronizację statusu jednostek. Zalecane zostawienie tej opcji włączonej. + Status der Einheit synchron halten. Sollte aktiviert bleiben. Provides a medical system for both players and AI. Moduł ten dostarcza system medyczny dla graczy oraz AI. + Aktiviert ein medizinisches System für Spieler und KI. Advanced Medical Settings [ACE] Zaawansowane ustawienia medyczne [ACE] + Erweiterte medizinische Einstellungen [ACE] Enabled for Aktywne dla + Aktiviert für Select what units the advanced medical system will be enabled for Wybierz dla kogo zaawansowany system medyczny będzie aktywny + Wähle aus welche Einheiten das erweiterte medizinische System haben Players only Tylko dla graczy + Nur Spieler Players and AI Gracze oraz AI + Spieler und KI Enable Advanced wounds Akt. zaawansowane rany + Aktiviere erweiterte Wunden Allow reopening of bandaged wounds? Pozwól na otwieranie się zabandażowanych ran? + Erlaube das Öffnen von bandagierten Wunden? Vehicle Crashes Obrażenia od kolizji + Fahrzeugunfälle Do units take damage from a vehicle crash? Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów? + Bekommen Einheiten von Fahrzeugunfällen Schaden? Allow PAK Ust. apteczek osobistych + Erlaube Erstehilfekasten Who can use the PAK for full heal? Kto może skorzystać z apteczki osobistej w celu pełnego uleczenia? + Wer kann den Erstehilfekasten für eine Endheilung verwenden? Anyone Wszyscy + Jeder Medics only Tylko medycy + Nur Sanitäter Doctors only Tylko doktorzy + Nur Ärzte Remove PAK on use Usuń apteczkę po użyciu + Entferne Erstehilfekasten bei Verwendung Should PAK be removed on usage? Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu? + Sollen Erstehilfekästen bei Verwendung entfernt werden? Locations PAK @@ -2900,42 +2940,52 @@ Where can the personal aid kit be used? Gdzie można korzystać z apteczek osobistych? + Wo kann der Erstehilfekasten verwendet werden? Anywhere Wszędzie + Überall Medical vehicles Pojazdy medyczne + Medizinische Fahrzeuge Medical facility Budynki medyczne + Medizinische Einrichtungen Vehicles & facility Pojazdy i budynki medyczne + Fahrzeuge & Einrichtungen Disabled Wyłączone + Deaktiviert Allow Surgical kit (Adv) Ust. zestawu chirurg. + Erlaube Operationskasten Who can use the surgical kit? Kto może skorzystać z zestawu chirurgicznego w celu zszycia ran? + Wer kann den Operationskasten verwenden? Remove Surgical kit (Adv) Usuń zest. chir. po użyciu + Enrtferne Operationskasten (erweitert) Should Surgical kit be removed on usage? Czy zestaw chirurgiczny powinien zniknąć z ekwipunku po jego użyciu? + Entferne Operationskästen bei Verwendung? Locations Surgical kit (Adv) @@ -2944,58 +2994,72 @@ Where can the Surgical kit be used? Gdzie można korzystać z zestawu chirurgicznego? + Wo kann der Operationskasten verwendet werden? Configure the treatment settings from ACE Medical Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE + Behandlungseinstellungen vom ACE-Medical konfigurieren Revive Settings [ACE] Ustawienia wskrzeszania [ACE] + Wiederbelebungseinstellungen [ACE] Enable Revive Aktywuj wskrzeszanie + Erlaube Wiederbelebung Enable a basic revive system Aktywuj podstawowy system wskrzeszania + Aktiviere Standard-Wiederbelebungssystem Max Revive time Maks. czas agonii + Maximale Wiederbelebungszeit Max amount of seconds a unit can spend in revive state Maksymalna długość agonii w sekundach (czas na wskrzeszenie) + Maximale Zeitspanne in Sekunden die eine Einheit im Wiederbelebungszustand verbringen kann Max Revive lives Maks. ilość wskrzeszeń + Maximale Leben bei Wiederbelebung Max amount of lives a unit. 0 or -1 is disabled. Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć. + Maximale Anzahl von Leben einer Einheit. 0 or -1 bedeutet deaktiviert. Provides a medical system for both players and AI. Moduł ten aktywuje podstawowy system wskrzeszania. Jednostka po otrzymaniu śmiertelnych obrażeń przechodzi do stanu agonii, która trwa określoną długość czasu. W tym czasie aby wskrzesić i jednocześnie odratować jednostkę należy opatrzeć jej rany i wykonać RKO. + Aktiviert das Medicsystem für Spieler und KI. Set Medic Class [ACE] Ustaw klasę medyka [ACE] + Setze Sanitäterklassen [ACE] List Lista + Liste List of unit names that will be classified as medic, separated by commas. Lista nazw jednostek, które są sklasyfikowane jako medycy, oddzielone przecinkami. + Liste von Namen, die als Sanitäter verwendet werden. Wird durch Kommas getrennt. Is Medic Klasa medyczna + Ist Sanitäter @@ -3004,66 +3068,82 @@ None Żadna + Keine Regular medic Zwykły medyk + Normaler Sanitäter Doctor (Only Advanced Medics) Doktor (tylko zaawansowani medycy) + Arzt (nur erweiterte Sanitäter) Assigns the ACE medic class to a unit Moduł ten przypisuje klasę medyka ACE do jednostek. + Weise die ACE-Sanitäterklasse einer Einheit zu Set Medical Vehicle [ACE] Ustaw pojazd medyczny [ACE] + Setze medizinisches Fahrzeug [ACE] List Lista + Liste List of vehicles that will be classified as medical vehicle, separated by commas. Lista nazw pojazdów, które są sklasyfikowane jako pojazdy medyczne, oddzielone przecinkami. + Liste ovn Fahrzeugen, die als medizinische Fahrzeuge verwendet werden. Wird durch Kommas getrennt. Is Medical Vehicle Jest pojazdem med. + Ist medizinisches Fahrzeug Whatever or not the objects in the list will be a medical vehicle. Czy pojazdy z tej listy są pojazdami medycznymi. + Leg fest ob das Objekt in der Liste ein medizinisches Fahrzeug ist. Assigns the ACE medic class to a unit Moduł ten pozwala na przypisanie danym pojazdom statusu pojazdów medycznych. Wewnątrz takiego pojazdu można wykonywać zaawansowane zabiegi medyczne. + Weist die ACE-Sanitäterklasse einer Einheit zu Set Medical Facility [ACE] Ustaw budynek medyczny [ACE] + Setze medizinische Einrichtung [ACE] Is Medical Facility Jest budynkiem med. + Ist eine medizinische Einrichtung Registers an object as a medical facility Przypisuje danemu obiektowi status budynku medycznego + Definiert ein Objekt als medizinische Einrichtung Defines an object as a medical facility. This allows for more advanced treatments. Can be used on buildings and vehicles. Moduł ten pozwala przypisać status budynku medycznego danemu obiektowi. Budynek taki pozwala na wykonywanie zaawansowanych zabiegów medycznych. Może być użyte na pojazdach i budynkach. + Definiert ein Objekt als medizinische Einrichtung. Das ermöglicht weitere Behandlungen. Kann bei Gebäuden und Fahrzeugen verwendet werden. [ACE] Medical Supply Crate (Basic) [ACE] Skrzynka z zapasami medycznymi (podstawowa) + [ACE] Medizinische Kiste (standard) [ACE] Medical Supply Crate (Advanced) [ACE] Skrzynka z zapasami medycznymi (zaawansowana) + [ACE] Medizinische Kiste (erweitert) Yes @@ -3090,4 +3170,4 @@ No - + \ No newline at end of file diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index b1bac6976b..9371840137 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -312,22 +312,27 @@ How much map data is filled on MicroDAGR's Jak duża część informacji mapy jest załadowana do MicroDAGR? + Wie viel Daten auf einem MicroDAGR zu sehen sind Full Satellite + Buildings Pełna satelitarna + budynki + Satellitenbild + Gebäude Topographical + Roads Topograficzna + drogi + Topografisch + Straßen None (Cannot use map view) Żadna (wyłącza ekran mapy) + Keine (kann keine Kartenansicht verwenden) Controls how much data is filled on the microDAGR items. Less data restricts the map view to show less on the minimap.<br />Source: microDAGR.pbo Moduł ten pozwala kontrolować jak duża ilość informacji jest załadowana do przedmiotów MicroDAGR. Mniejsza ilość danych ogranicza widok mapy pokazując mniej rzeczy na minimapie.<br />Źródło: microDAGR.pbo + Steuert wie viel Daten auf dem microDAGR zu sehen ist. Weniger Daten schränken die Kartenansicht ein, um mehr auf der Minimap zu sehen.<br />Quelle: microDAGR.pbo - + \ No newline at end of file diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index 798b2aafcd..d1042ee87e 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -19,7 +19,7 @@ Guida dei missili avanzata, o AMG, offre diversi miglioramenti alla teleguida di missili. E' anche un sistema necessario per i tipi di armi missile. Продвинутое наведение ракет, или ПНР, обеспечивает множество усовершествований для наведения и стрельбы ракет. Также, это система, необходимая для всех ракетных типов оружия. El guiado avanzado de misiles, o AMG en sus siglas en inglés, ofrece múltiples mejoras en el fijado y disparo de misiles. Es también un sistema requerido para armas de tipo misil. - Das Erweiterte Raketenlenksystem, auch ERls genannt, bietet viele Verbesserungen zum Aufschalten und Feuern mittels gelenkten Raketen. + Das Erweiterte Raketenlenksystem, auch ERls genannt, bietet viele Verbesserungen zum Aufschalten und Feuern mittels gelenkter Raketen. Le guidage avancé de missile, ou AMG en anglais, apporte de multiple améliorations au verouillage et au tir de missiles. C'est aussi un framework requis pour tout arme de type missile. A fejlett rakétairányító (vagy AMG) többféle módosítást tartalmaz a rakéták célkövetéséhez és tüzeléséhez. Ez egy szükséges keresztrendszer a rakéta-alapú fegyverekhez. Orientação avançada de mísseis ou OAM, fornece vários aprimoramentos para travamento de mísseis e disparos. Também é um sistema requerido para disparar armas que utilizem mísseis. @@ -100,14 +100,17 @@ Off Wyłącz + Aus Player Only Tylko gracz + Nur Spieler Player and AI Gracz oraz AI + Spieler und KI - + \ No newline at end of file diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index 37c7d322ad..e83153c57a 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -52,34 +52,41 @@ MK6 Settings Moździerz MK6 - Ustawienia + MK6-Einstellungen Air Resistance Opór powietrza + Luftwiderstand For Player Shots, Model Air Resistance and Wind Effects Modeluj opór powietrza oraz wpływ wiatru na tor lotu pocisku dla strzałów z moździerza MK6 przez graczy + Für Spielerschüsse, Luftwiderstand und Windeffekte Allow MK6 Computer Komputer MK6 + Erlaube MK6-Computer Show the Computer and Rangefinder (these NEED to be removed if you enable air resistance) Zezwól na komputer i dalmierz (opcja ta MUSI zostać wyłączona jeżeli aktywowałeś opór powietrza) + Zeige den Computer und den Entfernungsmesser an (diese MÜSSEN entfernt werden, wenn der Luftwiderstand aktiviert ist) Allow MK6 Compass Kompas MK6 + Erlaube MK6-Kompass Show the MK6 Digital Compass Pokaż kompas MK6 + Zeige MK6-Digitaler-Kompass Moduł ten pozwala dostosować ustawienia moździerza MK6. - + \ No newline at end of file diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index ef94140510..64dcd4c32b 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -112,50 +112,62 @@ Name Tags Ustawienia imion + Namensanzeigen Player Names View Dist. Zasięg imion graczy + Spielernamen-Distanz Distance in meters at which player names are shown. Default: 5 Dystans w metrach, na którym wyświetlane są imiona graczy. Domyślnie: 5 + Distanz in Metern bei der Spielernamen angezeigt werden. Standard: 5 Show name tags for AI? Imiona AI + Zeige Namensanzeigen für KI? Show the name and rank tags for friendly AI units? Default: Do not force Pokaż imiona i rangi przyjaznych jednostek AI? Domyślnie: Nie wymuszaj + Zeige den Namen und Rang für freundliche KI-Einheiten? Standard: nicht erwzingen Do Not Force Nie wymuszaj + Nicht erzwingen Force Hide Wymuś ukrycie + Verstecken erzwingen Force show Wymuś wyświetlanie + Anzeigen erzwingen Show crew info? Pokaż załogę + Zeige Besatzungsinfo? Show vehicle crew info, or by default allows players to choose it on their own. Default: Do Not Force Pokaż informacje o obsadzie pojazdu, lub pozwól graczom ustawić tą opcje według własnego uznania. Domyślnie: Nie wymuszaj + Zeige Fahrzeugbesatzungsinfo oder erlaube Spielern es auszuwählen. Standard: nicht erzwingen. Show for Vehicles Pokaż dla pojazdów + Zeige bei Fahrzeugen Show cursor NameTag for vehicle commander (only if client has name tags enabled)Default: No Pokazuj imię dowódcy pojazdu nad pojazdem (tylko jeżeli klient ma włączone imiona graczy). Domyślnie: Nie + Zeige Maus-Namensanzeigen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein @@ -164,38 +176,45 @@ Disabled Wyłączone + Deaktiviert Enabled Włączone + Aktiviert Only Cursor Tylko pod kursorem + Nur bei Maus Only On Keypress Tylko po wciśnięciu klawisza + Nur bei Tastendruck Only Cursor and KeyPress Tylko pod kursorem i po wciśnięciu klawisza + Nur Maus und Tastendruck Use Nametag settings Użyj ustawień imion + Verwende Namenanzeigen Always Show All Zawsze pokazuj wszystkie + Immer alle zeigen - Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -> ACE3. + Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -> ACE3. Opcja ta pozwala dostosować sposób wyświetlania efektu fal dźwiękowych nad głowami mówiących graczy, wyświetlanych po przytrzymaniu klawisza PTT. Opcja ta współpracuje z TFAR oraz ACRE2. - + \ No newline at end of file diff --git a/addons/nightvision/stringtable.xml b/addons/nightvision/stringtable.xml index 9fe8593e13..050945d5d8 100644 --- a/addons/nightvision/stringtable.xml +++ b/addons/nightvision/stringtable.xml @@ -5,7 +5,7 @@ NV Goggles (Gen1) Noktovizor (Gen1) JVN (Gen1) - NS-Brille (Gen1) + NS-Brille (1. Gen.) Occhiali notturni (Gen1) Gogle noktowizyjne (Gen1) Óculos de visão noturna (Gen1) @@ -17,7 +17,7 @@ NV Goggles (Gen2) Noktovizor (Gen2) JVN (Gen2) - NS-Brille (Gen2) + NS-Brille (2. Gen.) Occhiali notturni (Gen2) Gogle noktowizyjne (Gen2) Óculos de visão noturna (Gen2) @@ -29,7 +29,7 @@ NV Goggles (Gen3) Noktovizor (Gen3) JVN (Gen3) - NS-Brille (Gen3) + NS-Brille (3. Gen.) Occhiali notturni (Gen3) Gogle noktowizyjne (Gen3) Óculos de visão noturna (Gen3) @@ -41,7 +41,7 @@ NV Goggles (Gen3, Brown) Noktovizor (Gen3, hnědý) JVN (Gen3, marron) - NS-Brille (Gen3, Braun) + NS-Brille (3. Gen., braun) Occhiali notturni (Gen3, marroni) Gogle noktowizyjne (Gen3, brązowe) Óculos de visão noturna (Gen3, marrons) @@ -53,7 +53,7 @@ NV Goggles (Gen3, Green) Noktovizor (Gen3, zelený) JVN (Gen3, vertes) - NS-Brille (Gen3, Grün) + NS-Brille (3. Gen., grün) Occhiali notturni (Gen3, verdi) Gogle noktowizyjne (Gen3, zielone) Óculos de visão noturna (Gen3, verdes) @@ -65,7 +65,7 @@ NV Goggles (Gen3, Black) Noktovizor (Gen3, černý) JVN (Gen3, noires) - NS-Brille (Gen3, Schwarz) + NS-Brille (3. Gen., schwarz) Occhiali notturni (Gen3, neri) Gogle noktowizyjne (Gen3, czarne) Óculos de visão noturna (Gen3, pretos) @@ -77,7 +77,7 @@ NV Goggles (Gen4) Noktovizor (Gen4) JVN (Gen4) - NS-Brille (Gen4) + NS-Brille (4. Gen.) Occhiali notturni (Gen4) Gogle noktowizyjne (Gen4) Óculos de visão noturna (Gen4) @@ -134,4 +134,4 @@ Riduci la luminosità dell'NVG - + \ No newline at end of file diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 22a1a88cfa..4eb18dc46a 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -3,7 +3,7 @@ ACE Options - ACE Optionen + ACE-Optionen Opciones ACE Ustawienia ACE ACE Nastavení @@ -244,14 +244,17 @@ Allow Config Export [ACE] Pozwól na eksport ustawień [ACE] + Erlaube Config-Export [ACE] Allow Zezwól + Erlaube Allow export of all settings to a server config formatted. Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera. + Erlaube alle Einstellungen in einer Server-Config zu exportieren. When allowed, you have access to the settings modification and export in SP. Clicking export will place the formated config on your clipboard. @@ -260,30 +263,37 @@ Hide Ukryj + Verstecken Top right, downwards Po prawej u góry, w dół + Open rechts, nach unten Top right, to the left Po prawej u góry, do lewej + Von rechts nach links Top left, downwards Po lewej u góry, w dół + Von links, nach unten Top left, to the right Po lewej u góry, do prawej + Oben links nach rechts Top Góra + Oben Bottom Dół + Unten - + \ No newline at end of file diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index d7d5b7ac98..28e9da73a1 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -148,22 +148,27 @@ Respawn System System odrodzenia + Respawn-System Save Gear? Zapisać ekwipunek? + Ausrüstung speichern? Respawn with the gear a soldier had just before his death? Odradzaj z ekwipunkiem jaki żołnierz miał tuż przed swoją śmiercią? + Mit der Ausrüstung, die ein Soldat vor seinem Tod hatte, respawnen? Remove bodies? Usuwać ciała? + Körper entfernen? Remove player bodies after disconnect? Usuwaj ciała graczy po rozłączeniu z serwera? + Entferne Spielerkörper nach dem Trennen einer Verbindung? @@ -172,6 +177,7 @@ Friendly Fire Messages Wiadomości Friendly Fire + Freundbeschuss-Nachrichten @@ -180,18 +186,21 @@ Rallypoint System System punktu zbiórki + Rallypoint-System - Moduł ten pozwala zastosować na misji "punkt zbiórki", do którego można szybko przeteleportować się z "bazy". Wymaga postawienia odpowiednich obiektów na mapie - bazy oraz flagi. Obydwa dostępne są w kategorii Puste -> ACE Odrodzenie. + Moduł ten pozwala zastosować na misji "punkt zbiórki", do którego można szybko przeteleportować się z "bazy". Wymaga postawienia odpowiednich obiektów na mapie - bazy oraz flagi. Obydwa dostępne są w kategorii Puste -> ACE Odrodzenie. Move Rallypoint Przenieś punkt zbiórki + Bewege Rallypoint ACE Respawn ACE Odrodzenie + ACE-Respawn - + \ No newline at end of file diff --git a/addons/switchunits/stringtable.xml b/addons/switchunits/stringtable.xml index cdde0f8ff1..a1018f7840 100644 --- a/addons/switchunits/stringtable.xml +++ b/addons/switchunits/stringtable.xml @@ -28,58 +28,71 @@ SwitchUnits System System zmiany stron + Einheiten-Switch-System? Switch to West? Zmiana na Zachód? + Nach BLUFOR wechseln? Allow switching to west units? Pozwolić zmieniać graczom stronę na Zachód? + Erlaube das Wechseln zu BLUFOR-Einheiten? Switch to East? Zmiana na Wschód? + Nach OPFOR wechseln? Allow switching to east units? Pozwolić zmieniać graczom stronę na Wschód? + Erlaube das Wechseln zu OPFOR-Einheiten? Switch to Independent? Zmiana na Ruch Oporu? + Nach INDFOR wechseln? Allow switching to independent units? Pozwolić zmieniać stronę na Ruch Oporu? + Erlaube das Wechseln zu INDFOR-Einheiten? Switch to Civilian? Zmiana na Cywili? + Nach CIVILIAN wechseln? Allow switching to civilian units? Pozwolić zmieniać stronę na Cywili? + Erlaube das Wechseln zu CIVILIAN-Einheiten? Enable Safe Zone? Aktywuj bezp. strefę? + Aktiviere Sicherheitszone? Enable a safe zone around enemy units? Players can't switch to units inside of the safe zone. Aktywuje bezpieczną strefę wokół jednostek przeciwnika. Gracze nie mogą zmieniać strony wewnątrz tej strefy. + Aktiviere eine Sicherheitszone um feindliche Einheiten? Spieler können nicht zu Einheiten in der Sicherheitszone wechseln. Safe Zone Radius Promień bezp. strefy + Sicherheitszonenradius The safe zone around players from a different team. Default: 200 Promień bezpiecznej strefy wokół graczy z innych drużyn. Domyślnie: 200 + Die Sicherheitszone um Spieler von einem anderen Team. Standard: 200 - + \ No newline at end of file diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml index 4738d045df..ddd3bc72d3 100644 --- a/addons/vehiclelock/stringtable.xml +++ b/addons/vehiclelock/stringtable.xml @@ -136,54 +136,67 @@ Vehicle Lock Setup Ustawienie blokady pojazdów + Fahrzeugsperreinstellungen Lock Vehicle Inventory Zablokuj ekwipunek pojazdu + Sperre Fahrzeuginventar Locks the inventory of locked vehicles Blokuje dostęp do ekwipunku pojazdu + Sperrt das Inventar von gesperrten Fahrzeugen Vehicle Starting Lock State Początkowy stan blok. poj. + Fahrzeuge spawnen gesperrt Set lock state for all vehicles (removes ambiguous lock states) Ustawia początkowy stan blokady dla wszystkich pojazdów (usuwa dwuznaczne stany blokady) + Setze Sperrstatus für alle Fahrzeuge (entfernt unklare Sperrzustände) As Is Jak jest + Unverändert Locked Zablokowany + Gesperrt Unlocked Odblokowany + Offen Default Lockpick Strength Czas włamywania + Standard-Pick-Stärke Default Time to lockpick (in seconds). Default: 10 Domyślny czas potrzebny na otwarcie pojazdu (w sekundach). Domyślnie: 10 + Standardzeit um ein Schloss zu knacken (in Sekunden). Standard: 10 Settings for lockpick strength and initial vehicle lock state. Removes ambiguous lock states.<br />Source: vehiclelock.pbo Ustawienia czasu włamywania oraz domyślnego stanu blokady pojazdów. Wyłącza dwuznaczne ustawienia blokady. Moduł ten umożliwia więc np. zamknięcie pojazdów przeciwnika na klucz tak, że gracze bez odpowiedniego sprzętu (wytrycha) nie będą mogli ich używać.<br />Źródło: vehiclelock.pbo + Einstellungen für Pick-Stärke und anfänglichen Fahrzeugsperrzustand. Entfernt unklare Sperrzustände.<br />Quelle: vehiclelock.pbo Vehicle Key Assign Przydział kluczyka do pojazdu + Fahrzeugschlüsselzuweisung Sync with vehicles and players. Will handout custom keys to players for every synced vehicle. Only valid for objects present at mission start.<br />Source: vehiclelock.pbo Zsynchronizuj z pojazdami i graczami. Rozda klucze dla graczy dla każdego zsynchronizowanego pojazdu. Działa tylko na pojazdy obecne na misji od samego początku (postawione w edytorze).<br />Źródło: vehiclelock.pbo + Synchronisiere mit Fahrzeugen und Spielern. Wird eigene Schlüssel an Spieler für jedes synchronisierte Fahrzeuge aushändigen. Nur gültig für am Missionsstart existierende Fahrzeuge.<br />Quelle: vehiclelock.pbo - + \ No newline at end of file diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml index 02c0964e03..12612aad43 100644 --- a/addons/weather/stringtable.xml +++ b/addons/weather/stringtable.xml @@ -16,58 +16,72 @@ Weather Pogoda + Wetter Multiplayer synchronized ACE weather module Synchronizowana pogoda ACE + Synchronisiere ACE-Wettermodul im Multiplayer Weather propagation Zmiany pogody + Wettervorhersage Enables server side weather propagation Aktywuje zmiany pogody po stronie serwera + Aktiviere serverseitige Wettervorhersage ACE Weather Pogoda ACE + ACE-Wetter Overrides the default weather (editor, mission settings) with ACE weather (map based) Nadpisuje domyślne ustawienia pogody (edytor, wywiad) przy użyciu pogody ACE (zależna od mapy) + Überschreibt das Standardwetter (Editor, Missionseinstellungen) mit dem ACE-Wetter (kartenbasiert) Sync Rain Synchronizuj deszcz + Regen synchronisieren Synchronizes rain Synchronizuje deszcz + Synchronisiert den Regen Sync Wind Synchronizuj wiatr + Wind synchronisieren Synchronizes wind Synchronizuje wiatr + Synchronisiert den Wind Sync Misc Synchronizuj różne + Sonstiges synchronisieren Synchronizes lightnings, rainbow, fog, ... Synchronizuje pioruny, tęcze, mgłę, ... + Synchronisiert Blitze, Regenbögen, Nebel, ... Update Interval Interwał aktualizacji + Aktualisierungsintervall Defines the interval (seconds) between weather updates Określa interwał (sekundy) pomiędzy aktualizacjami pogody + Definiert das Intervall (in Sekunden) zwischen Wetteraktualisierungen \ No newline at end of file diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index 806bf4c449..5707797e76 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -65,43 +65,53 @@ Wind Deflection Wpływ wiatru + Windböen Wind Deflection Wpływ wiatru + Windböen Enables wind deflection Aktywuje wpływ wiatru na trajektorię lotu pocisków + Aktiviert Windböen Vehicle Enabled Włączone dla pojazdów + Fahrzeuge aktiviert Enables wind deflection for static/vehicle gunners Aktywuje wpływ wiatru na trajektorię lotu pocisków dla broni statycznej i na pojazdach + Aktiviere Windböen für statische oder Fahrzeugschützen Simulation Interval Interwał symulacji + Simulationsintervall Defines the interval between every calculation step Określa interwał pomiędzy każdym krokiem kalkulacji + Definiert das Intervall zwischen jedem Berechnungsschritt Simulation Radius Zasięg symulacji + Simulationsradius Defines the radius around the player (in meters) at which projectiles are wind deflected Określa obszar naokoło gracza (w metrach), na którym pociski są znoszone przez wiatr + Gibt den Radius um den Spieler (in Metern) an, bei der Projektile vom Wind beeinflusst werden Wind influence on projectiles trajectory Wpływ wiatru na trajektorię lotu pocisków + Wind hat Einfluss auf Projektilflugbahn - + \ No newline at end of file From 05d780d78121c7eb93a38914ee52b87b6abd5e10 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 26 May 2015 22:43:52 +0200 Subject: [PATCH 061/252] new build --- ace_medical.dll | Bin 223232 -> 223744 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ace_medical.dll b/ace_medical.dll index 475a1e3fbbdc19876090912c596bec42e1ca636d..cab14d4a199a875b83aafebc053a6982a3cfef58 100644 GIT binary patch delta 64764 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 ^32rAQEXmcHAz| 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 From 890b568225556949c201d61cff9485c77e1a7593 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Wed, 27 May 2015 00:45:22 +0200 Subject: [PATCH 062/252] Implemented dynamic treatment time --- addons/medical/functions/fnc_treatment.sqf | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf index f50ff505e0..8f092f7ab9 100644 --- a/addons/medical/functions/fnc_treatment.sqf +++ b/addons/medical/functions/fnc_treatment.sqf @@ -16,7 +16,7 @@ #include "script_component.hpp" -private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_callbackProgress", "_treatmentTime", "_callerAnim", "_patientAnim", "_iconDisplayed", "_return", "_usersOfItems", "_consumeItems", "_condition", "_displayText", "_wpn"]; +private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_callbackProgress", "_treatmentTime", "_callerAnim", "_patientAnim", "_iconDisplayed", "_return", "_usersOfItems", "_consumeItems", "_condition", "_displayText", "_wpn", "_treatmentTime", "_treatmentTimeConfig"]; _caller = _this select 0; _target = _this select 1; _selectionName = _this select 2; @@ -174,8 +174,26 @@ if (vehicle _caller == _caller && {_callerAnim != ""}) then { [_caller, _callerAnim] call EFUNC(common,doAnimation); }; +//Get treatment time +if (isNumber (_config >> "treatmentTime")) then { + _treatmentTime = getNumber (_config >> "treatmentTime"); +} else { + if (isText (_config >> "treatmentTime")) then { + _treatmentTimeConfig = getText(_config >> "treatmentTime"); + if (isnil _treatmentTimeConfig) then { + _treatmentTimeConfig = compile _treatmentTimeConfig; + } else { + _treatmentTimeConfig = missionNamespace getvariable _treatmentTimeConfig; + }; + if (typeName _treatmentTimeConfig == "SCALAR") then { + _treatmentTime = _treatmentTimeConfig; + } else { + _treatmentTime = [_caller, _target, _selectionName, _className] call _treatmentTimeConfig; + }; + }; +}; + // Start treatment -_treatmentTime = getNumber (_config >> "treatmentTime"); [ _treatmentTime, [_caller, _target, _selectionName, _className, _items, _usersOfItems], From 30df0e8dc986ba6eb235a600c5e8ed8412b673f4 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Wed, 27 May 2015 00:45:50 +0200 Subject: [PATCH 063/252] Switched to callbackPogress for treatment --- addons/medical/ACE_Medical_Treatments.hpp | 5 ++-- addons/medical/XEH_preInit.sqf | 3 +- ...eatmentAdvanced_surgicalKit_onProgress.sqf | 28 +++++++++++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 addons/medical/functions/fnc_treatmentAdvanced_surgicalKit_onProgress.sqf diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index 9848410c8c..76bd77b44a 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -200,8 +200,9 @@ class ACE_Medical_Actions { items[] = {"ACE_surgicalKit"}; treatmentLocations[] = {QGVAR(useLocation_SurgicalKit)}; requiredMedic = QGVAR(medicSetting_SurgicalKit); - treatmentTime = 10; - callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_surgicalKit)); + treatmentTime = "(count ((_this select 1) getVariable ['ACE_Medical_bandagedWounds', []]) * 5)"; + callbackSuccess = ""; + callbackProgress = QUOTE(DFUNC(treatmentAdvanced_surgicalKit_onProgress)); itemConsumed = QGVAR(consumeItem_SurgicalKit); animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; litter[] = { {"All", "", {"ACE_MedicalLitter_gloves"} }}; diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index 33ef6fbcde..d3c2275751 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -78,8 +78,7 @@ PREP(treatmentAdvanced_fullHeal); PREP(treatmentAdvanced_fullHealLocal); PREP(treatmentAdvanced_medication); PREP(treatmentAdvanced_medicationLocal); -PREP(treatmentAdvanced_surgicalKit); -PREP(treatmentAdvanced_surgicalKitLocal); +PREP(treatmentAdvanced_surgicalKit_onProgress); PREP(treatmentBasic_bandage); PREP(treatmentBasic_bloodbag); PREP(treatmentBasic_bloodbagLocal); diff --git a/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit_onProgress.sqf b/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit_onProgress.sqf new file mode 100644 index 0000000000..c50665803b --- /dev/null +++ b/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit_onProgress.sqf @@ -0,0 +1,28 @@ +/* + * Author: BaerMitUmlaut + * Handles treatment via surgical kit per frame. + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_args", "_target", "_caller", "_elapsedTime", "_totalTime", "_bandagedWounds"]; +_args = _this select 0; +_caller = _args select 0; +_target = _args select 1; +_elapsedTime = _this select 1; +_totalTime = _this select 2; + +_bandagedWounds = _target getVariable [QGVAR(bandagedWounds), []]; + +//In case two people stitch up one patient and the last wound has already been closed we can stop already +if (count _bandagedWounds == 0) exitWith {false}; + +//Has enough time elapsed that we can close another wound? +if ((_totalTime - _elapsedTime) <= (((count _bandagedWounds) - 1) * 5)) then { + _bandagedWounds deleteAt 0; + _target setVariable [QGVAR(bandagedWounds), _bandagedWounds, true]; +}; + +true \ No newline at end of file From f7578a92c9f6d28b0cf0bc4e640a3da2c389710b Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Wed, 27 May 2015 00:52:16 +0200 Subject: [PATCH 064/252] Reverted in favour of onProgress treatment --- .../fnc_treatmentAdvanced_surgicalKit.sqf | 20 ------------------- ...fnc_treatmentAdvanced_surgicalKitLocal.sqf | 18 ----------------- 2 files changed, 38 deletions(-) delete mode 100644 addons/medical/functions/fnc_treatmentAdvanced_surgicalKit.sqf delete mode 100644 addons/medical/functions/fnc_treatmentAdvanced_surgicalKitLocal.sqf diff --git a/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit.sqf b/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit.sqf deleted file mode 100644 index da967b7f1b..0000000000 --- a/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit.sqf +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Author: BaerMitUmlaut - * Handles treatment via surgical kit. - * - * Public: No - */ - -#include "script_component.hpp" - -private ["_target", "_caller", "_selectionName", "_className", "_items"]; -_caller = _this select 0; -_target = _this select 1; -_selectionName = _this select 2; -_className = _this select 3; -_items = _this select 4; - -// TODO replace by event system -[[_caller, _target], QUOTE(DFUNC(treatmentAdvanced_surgicalKitLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ - -true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_surgicalKitLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_surgicalKitLocal.sqf deleted file mode 100644 index c5596c0bcb..0000000000 --- a/addons/medical/functions/fnc_treatmentAdvanced_surgicalKitLocal.sqf +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Author: BaerMitUmlaut - * Handles treatment via surgical kit (locally). - * - * Public: No - */ - -#include "script_component.hpp" - -private ["_target", "_caller"]; -_caller = _this select 0; -_target = _this select 1; - -if (alive _target) exitwith { - - _target setvariable [QGVAR(bandagedWounds), [], true]; - -}; From adf29d75e3d536d21c3ab3f636a0149083d9130a Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 26 May 2015 23:15:50 -0500 Subject: [PATCH 065/252] Explosives - Local Defuse Helpers --- addons/explosives/XEH_postInit.sqf | 55 +++++++++++++------ .../functions/fnc_placeExplosive.sqf | 10 +--- .../functions/fnc_place_Approve.sqf | 2 +- 3 files changed, 40 insertions(+), 27 deletions(-) diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index 88a7bbba95..5bff254613 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -15,26 +15,45 @@ */ #include "script_component.hpp" -//Start up a PFEH that scans all mines/explosives without defuseObjects attached and adds them -//Handles Editor Placed / Zeus / Scripted -if (isServer) then { - [{ - private ["_explosive", "_helpers", "_defuseHelper"]; - { - _explosive = _x; - _helpers = { - ((typeOf _x) == "ACE_DefuseObject") && {(_x getVariable [QGVAR(Explosive), objNull]) == _explosive} - } count (attachedObjects _explosive); +//Event system to add the defuse object to all explosive devices (defuse is local) +GVAR(explosivesHelped) = []; +GVAR(defuseOjbects) = []; - if (_helpers == 0) then { - TRACE_3("Explosive without helper",_explosive,(getPosAsl _explosive),(typeOf _explosive)); - _defuseHelper = createVehicle ["ACE_DefuseObject", (getPos _explosive), [], 0, "NONE"]; - _defuseHelper attachTo [_explosive, [0,0,0], ""]; - _defuseHelper setVariable [QGVAR(Explosive),_explosive,true]; +["explosive_placed", { + PARAMS_1(_explosive); + if (_explosive in GVAR(explosivesHelped)) exitWith {}; + private ["_defuseHelper"]; + _defuseHelper = "ACE_DefuseObject" createVehicleLocal (getPos _explosive); + _defuseHelper attachTo [_explosive, [0,0,0]]; + _defuseHelper setVariable [QGVAR(Explosive),_explosive]; + TRACE_3("Added local defuse to helper",_explosive,(typeOf _explosive),_defuseHelper); + GVAR(explosivesHelped) pushBack _explosive; + GVAR(defuseOjbects) pushBack _defuseHelper; +}] call EFUNC(common,addEventHandler); + +//Start up a PFEH that scans all mines/explosives without defuseObjects attached and adds them +//Handles Editor Placed / Zeus / Scripted / JIP +[{ + private ["_modeAdd"]; + _modeAdd = (_this select 0) select 0; + if (_modeAdd) then { + TRACE_2("Adding Helpers",(count allMines),(count GVAR(explosivesHelped))); + { + TRACE_2("Explosive without helper",_explosive,(typeOf _explosive)); + ["explosive_placed", [_x]] call EFUNC(common,localEvent); + } forEach (allMines - GVAR(explosivesHelped)); + } else { + TRACE_2("Cleaning Helpers",(count allMines),(count GVAR(explosivesHelped))); + { + if (isNull _x) then { + deleteVehicle (GVAR(defuseObjects) select _forEachIndex); }; - } forEach allMines; - }, 5, []] call CBA_fnc_addPerFrameHandler; -}; + } forEach GVAR(explosivesHelped); + GVAR(explosivesHelped) = GVAR(explosivesHelped) - [objNull]; + GVAR(defuseOjbects) = GVAR(defuseOjbects) - [objNull]; + }; + (_this select 0) set [0, !_modeAdd]; +}, 5, [true]] call CBA_fnc_addPerFrameHandler; if !(hasInterface) exitWith {}; GVAR(PlacedCount) = 0; diff --git a/addons/explosives/functions/fnc_placeExplosive.sqf b/addons/explosives/functions/fnc_placeExplosive.sqf index 2e6a0ad2c5..f4fcacb7b1 100644 --- a/addons/explosives/functions/fnc_placeExplosive.sqf +++ b/addons/explosives/functions/fnc_placeExplosive.sqf @@ -51,18 +51,12 @@ if (isText(_magazineTrigger >> "ammo")) then { _ammo = getText (_magazineTrigger >> "ammo"); }; _triggerSpecificVars pushBack _triggerConfig; -private ["_defuseHelper"]; -_defuseHelper = createVehicle ["ACE_DefuseObject", _pos, [], 0, "NONE"]; -_defuseHelper setPosATL _pos; _explosive = createVehicle [_ammo, _pos, [], 0, "NONE"]; -_defuseHelper attachTo [_explosive, [0,0,0], ""]; -_defuseHelper setVariable [QGVAR(Explosive),_explosive,true]; - -_expPos = getPosATL _explosive; -_defuseHelper setPosATL (((getPosATL _defuseHelper) vectorAdd (_pos vectorDiff _expPos))); _explosive setPosATL _pos; +["explosive_placed", [_explosive]] call EFUNC(common,globalEvent); + if (!isNull _attachedTo) then { TRACE_1("Attaching Live Explosive",_attachedTo); _explosive attachTo [_attachedTo]; diff --git a/addons/explosives/functions/fnc_place_Approve.sqf b/addons/explosives/functions/fnc_place_Approve.sqf index 323e8bd634..0604045f65 100644 --- a/addons/explosives/functions/fnc_place_Approve.sqf +++ b/addons/explosives/functions/fnc_place_Approve.sqf @@ -37,7 +37,7 @@ if (_dir > 180) then { } else { _dir = 180 + _dir; }; -_setup setVariable [QGVAR(Direction), _dir]; +_setup setVariable [QGVAR(Direction), _dir, true]; _player setVariable [QGVAR(PlantingExplosive), true]; [{_this setVariable [QGVAR(PlantingExplosive), false]}, _player, 1.5, 0.5] call EFUNC(common,waitAndExecute); _setup addEventHandler ["EpeContactStart", FUNC(onLanded)]; From 6894a7433a51538ba14fcc6a201f2f6dd99accde Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Wed, 27 May 2015 13:51:15 +0200 Subject: [PATCH 066/252] Removed duplicate private var --- addons/medical/functions/fnc_treatment.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf index 8f092f7ab9..a5fde365cf 100644 --- a/addons/medical/functions/fnc_treatment.sqf +++ b/addons/medical/functions/fnc_treatment.sqf @@ -16,7 +16,7 @@ #include "script_component.hpp" -private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_callbackProgress", "_treatmentTime", "_callerAnim", "_patientAnim", "_iconDisplayed", "_return", "_usersOfItems", "_consumeItems", "_condition", "_displayText", "_wpn", "_treatmentTime", "_treatmentTimeConfig"]; +private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_callbackProgress", "_treatmentTime", "_callerAnim", "_patientAnim", "_iconDisplayed", "_return", "_usersOfItems", "_consumeItems", "_condition", "_displayText", "_wpn", "_treatmentTimeConfig"]; _caller = _this select 0; _target = _this select 1; _selectionName = _this select 2; From f2e6a98eb4ddcc119b180c9f88e43c062df797b7 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Wed, 27 May 2015 13:51:22 +0200 Subject: [PATCH 067/252] Killed tabs --- .../fnc_treatmentAdvanced_surgicalKit_onProgress.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit_onProgress.sqf b/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit_onProgress.sqf index c50665803b..c0e1037027 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit_onProgress.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit_onProgress.sqf @@ -21,8 +21,8 @@ if (count _bandagedWounds == 0) exitWith {false}; //Has enough time elapsed that we can close another wound? if ((_totalTime - _elapsedTime) <= (((count _bandagedWounds) - 1) * 5)) then { - _bandagedWounds deleteAt 0; - _target setVariable [QGVAR(bandagedWounds), _bandagedWounds, true]; + _bandagedWounds deleteAt 0; + _target setVariable [QGVAR(bandagedWounds), _bandagedWounds, true]; }; true \ No newline at end of file From 600fe61f72982adb37fa87acbb704e8abfa570b9 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 27 May 2015 17:10:34 +0200 Subject: [PATCH 068/252] Added STRING and CSTRING Macros --- addons/main/script_macros.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index 175e5f63c7..77ad0199f1 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -22,6 +22,8 @@ #define PATHTOEF(var1,var2) PATHTOF_SYS(PREFIX,var1,var2) +#define STRING(var1) QUOTE(TRIPLES(STR,ADDON,var1)) +#define CSTRING(var1) QUOTE(TRIPLES($STR,ADDON,var1)) #define GETVAR_SYS(var1,var2) getVariable [ARR_2(QUOTE(var1),var2)] #define SETVAR_SYS(var1,var2) setVariable [ARR_2(QUOTE(var1),var2)] From 6072e140776c522f459b7712b5b818787ddc7494 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 27 May 2015 19:04:25 +0200 Subject: [PATCH 069/252] Changed all strings to macros (except external) --- addons/advanced_ballistics/CfgVehicles.hpp | 44 +-- addons/advanced_ballistics/initKeybinds.sqf | 2 +- addons/aircraft/CfgVehicles.hpp | 8 +- addons/aircraft/CfgWeapons.hpp | 6 +- addons/atragmx/CfgVehicles.hpp | 2 +- addons/atragmx/CfgWeapons.hpp | 4 +- addons/atragmx/initKeybinds.sqf | 2 +- addons/attach/CfgVehicles.hpp | 8 +- addons/attach/CfgWeapons.hpp | 4 +- addons/attach/functions/fnc_attach.sqf | 8 +- addons/attach/functions/fnc_detach.sqf | 4 +- addons/attach/functions/fnc_placeApprove.sqf | 2 +- addons/ballistics/CfgMagazines.hpp | 192 ++++++------ addons/ballistics/CfgVehicles.hpp | 2 +- addons/captives/CfgVehicles.hpp | 26 +- addons/captives/CfgWeapons.hpp | 4 +- .../functions/fnc_doEscortCaptive.sqf | 2 +- .../captives/functions/fnc_doFriskPerson.sqf | 2 +- .../functions/fnc_moduleSurrender.sqf | 6 +- addons/common/CfgUnitInsignia.hpp | 4 +- addons/common/CfgVehicles.hpp | 38 +-- addons/common/CfgVoice.hpp | 6 +- addons/common/CfgWeapons.hpp | 6 +- addons/common/config.cpp | 22 +- addons/disarming/CfgVehicles.hpp | 2 +- addons/disposable/CfgMagazines.hpp | 6 +- addons/disposable/CfgWeapons.hpp | 4 +- addons/dragging/functions/fnc_carryObject.sqf | 2 +- addons/dragging/functions/fnc_dragObject.sqf | 2 +- .../dragging/functions/fnc_setCarryable.sqf | 4 +- .../dragging/functions/fnc_setDraggable.sqf | 4 +- addons/dragging/functions/fnc_startCarry.sqf | 2 +- addons/dragging/functions/fnc_startDrag.sqf | 2 +- addons/explosives/CfgModule.hpp | 12 +- addons/explosives/CfgVehicles.hpp | 4 +- addons/explosives/ExplosivesUI.hpp | 10 +- .../explosives/functions/fnc_addClacker.sqf | 4 +- .../functions/fnc_openTimerSetUI.sqf | 2 +- .../functions/fnc_setupExplosive.sqf | 4 +- .../explosives/functions/fnc_startDefuse.sqf | 2 +- addons/fcs/functions/fnc_keyUp.sqf | 2 +- addons/fcs/functions/fnc_reset.sqf | 2 +- addons/fcs/initKeybinds.sqf | 6 +- addons/flashsuppressors/CfgWeapons.hpp | 14 +- addons/frag/ACE_Settings.hpp | 20 +- addons/goggles/ACE_Settings.hpp | 2 +- addons/goggles/XEH_postInit.sqf | 2 +- addons/grenades/CfgMagazines.hpp | 28 +- addons/grenades/XEH_postInit.sqf | 2 +- addons/grenades/functions/fnc_nextMode.sqf | 10 +- addons/hearing/ACE_Settings.hpp | 2 +- addons/hearing/CfgVehicles.hpp | 12 +- addons/hearing/CfgWeapons.hpp | 4 +- .../hearing/functions/fnc_putInEarplugs.sqf | 4 +- .../hearing/functions/fnc_removeEarplugs.sqf | 4 +- addons/interact_menu/ACE_Settings.hpp | 28 +- addons/interact_menu/XEH_clientInit.sqf | 4 +- .../functions/fnc_compileMenuSelfAction.sqf | 4 +- addons/interaction/CfgVehicles.hpp | 132 ++++---- addons/interaction/XEH_postInit.sqf | 6 +- addons/interaction/functions/fnc_joinTeam.sqf | 6 +- .../functions/fnc_openMenuSelectUI.sqf | 2 +- .../functions/fnc_prepareSelectMenu.sqf | 2 +- .../interaction/functions/fnc_tapShoulder.sqf | 4 +- addons/inventory/ACE_Settings.hpp | 4 +- addons/javelin/initKeybinds.sqf | 4 +- addons/kestrel4500/CfgVehicles.hpp | 6 +- addons/kestrel4500/CfgWeapons.hpp | 4 +- addons/kestrel4500/initKeybinds.sqf | 4 +- .../laser/functions/fnc_keyLaserCodeDown.sqf | 2 +- addons/laser/functions/fnc_keyLaserCodeUp.sqf | 2 +- addons/laser/initKeybinds.sqf | 4 +- .../functions/fnc_initDesignatorActions.sqf | 4 +- addons/laserpointer/CfgWeapons.hpp | 22 +- addons/laserpointer/initKeybinds.sqf | 2 +- addons/logistics_uavbattery/CfgVehicles.hpp | 2 +- addons/logistics_uavbattery/CfgWeapons.hpp | 4 +- .../functions/fnc_refuelUAV.sqf | 2 +- addons/logistics_wirecutter/CfgWeapons.hpp | 4 +- .../functions/fnc_cutDownFence.sqf | 2 +- .../functions/fnc_cutDownFenceCallback.sqf | 2 +- .../functions/fnc_interactEH.sqf | 2 +- addons/magazinerepack/CfgVehicles.hpp | 2 +- .../functions/fnc_magazineRepackFinish.sqf | 6 +- .../functions/fnc_startRepackingMagazine.sqf | 2 +- addons/map/CfgVehicles.hpp | 32 +- addons/maptools/CfgVehicles.hpp | 18 +- addons/maptools/CfgWeapons.hpp | 4 +- .../functions/fnc_onSliderPosChangedAngle.sqf | 2 +- addons/medical/ACE_Medical_Actions.hpp | 210 ++++++------- addons/medical/ACE_Medical_SelfActions.hpp | 128 ++++---- addons/medical/ACE_Medical_Treatments.hpp | 142 ++++----- addons/medical/ACE_Settings.hpp | 10 +- addons/medical/CfgFactionClasses.hpp | 2 +- addons/medical/CfgVehicles.hpp | 204 ++++++------ .../fnc_actionCheckBloodPressureLocal.sqf | 22 +- .../functions/fnc_actionCheckPulseLocal.sqf | 20 +- .../functions/fnc_actionCheckResponse.sqf | 4 +- .../medical/functions/fnc_actionDiagnose.sqf | 16 +- .../fnc_displayPatientInformation.sqf | 32 +- .../functions/fnc_displayTriageCard.sqf | 2 +- .../medical/functions/fnc_getTriageStatus.sqf | 10 +- .../fnc_treatmentAdvanced_bandage.sqf | 2 +- .../fnc_treatmentAdvanced_medication.sqf | 2 +- addons/medical/functions/fnc_treatmentIV.sqf | 2 +- .../functions/fnc_treatmentTourniquet.sqf | 2 +- addons/medical/ui/RscTitles.hpp | 2 +- addons/medical/ui/triagecard.hpp | 2 +- addons/microdagr/CfgVehicles.hpp | 22 +- addons/microdagr/CfgWeapons.hpp | 4 +- addons/microdagr/XEH_clientInit.sqf | 4 +- .../functions/fnc_showApplicationPage.sqf | 4 +- .../microdagr/functions/fnc_updateDisplay.sqf | 12 +- addons/microdagr/gui_controls.hpp | 22 +- addons/missileguidance/ACE_Settings.hpp | 2 +- addons/missileguidance/CfgAmmo.hpp | 16 +- addons/missionmodules/CfgFactionClasses.hpp | 2 +- addons/missionmodules/CfgVehicles.hpp | 32 +- addons/mk6mortar/CfgVehicles.hpp | 18 +- addons/mk6mortar/CfgWeapons.hpp | 4 +- .../fnc_handlePlayerVehicleChanged.sqf | 2 +- .../functions/fnc_rangeTableOpen.sqf | 2 +- addons/movement/ACE_Settings.hpp | 2 +- addons/movement/XEH_postInit.sqf | 4 +- addons/movement/functions/fnc_climb.sqf | 2 +- addons/nametags/ACE_Settings.hpp | 16 +- addons/nametags/CfgVehicles.hpp | 32 +- addons/nametags/XEH_postInit.sqf | 2 +- addons/nightvision/CfgWeapons.hpp | 16 +- addons/nightvision/XEH_postInitClient.sqf | 4 +- .../functions/fnc_changeNVGBrightness.sqf | 2 +- addons/optics/CfgWeapons.hpp | 20 +- addons/optionsmenu/ACE_Settings.hpp | 2 +- .../functions/fnc_exportSettings.sqf | 2 +- .../fnc_onListBoxShowSelectionChanged.sqf | 4 +- ...nc_onServerListBoxShowSelectionChanged.sqf | 6 +- .../fnc_onServerSettingsMenuOpen.sqf | 4 +- .../fnc_serverSettingsMenuUpdateKeyView.sqf | 12 +- .../fnc_serverSettingsMenuUpdateList.sqf | 2 +- .../fnc_settingsMenuUpdateKeyView.sqf | 4 +- .../functions/fnc_settingsMenuUpdateList.sqf | 2 +- addons/optionsmenu/gui/pauseMenu.hpp | 2 +- addons/optionsmenu/gui/settingsMenu.hpp | 30 +- addons/overheating/ACE_Settings.hpp | 4 +- addons/overheating/CfgVehicles.hpp | 4 +- addons/overheating/CfgWeapons.hpp | 4 +- addons/overheating/XEH_postInit.sqf | 2 +- addons/overheating/functions/fnc_clearJam.sqf | 2 +- .../overheating/functions/fnc_jamWeapon.sqf | 4 +- .../overheating/functions/fnc_swapBarrel.sqf | 2 +- .../functions/fnc_swapBarrelCallback.sqf | 2 +- addons/parachute/CfgVehicles.hpp | 2 +- addons/parachute/CfgWeapons.hpp | 4 +- addons/parachute/XEH_postInit.sqf | 2 +- addons/realisticnames/CfgMagazines.hpp | 32 +- addons/realisticnames/CfgVehicles.hpp | 292 +++++++++--------- addons/realisticnames/CfgWeapons.hpp | 144 ++++----- addons/reload/ACE_Settings.hpp | 4 +- addons/reload/CfgVehicles.hpp | 6 +- addons/reload/XEH_postInit.sqf | 2 +- .../reload/functions/fnc_startLinkingBelt.sqf | 2 +- addons/reloadlaunchers/CfgVehicles.hpp | 2 +- .../functions/fnc_addMissileReloadActions.sqf | 2 +- addons/reloadlaunchers/functions/fnc_load.sqf | 4 +- addons/respawn/CfgVehicleClasses.hpp | 2 +- addons/respawn/CfgVehicles.hpp | 46 +-- .../respawn/functions/fnc_moveRallypoint.sqf | 4 +- .../functions/fnc_teleportToRallypoint.sqf | 2 +- addons/safemode/XEH_postInit.sqf | 2 +- addons/safemode/functions/fnc_lockSafety.sqf | 4 +- .../safemode/functions/fnc_unlockSafety.sqf | 2 +- addons/scopes/CfgVehicles.hpp | 2 +- addons/scopes/XEH_postInit.sqf | 16 +- addons/switchunits/CfgVehicles.hpp | 28 +- .../switchunits/functions/fnc_switchUnit.sqf | 4 +- addons/vector/CfgVehicles.hpp | 2 +- addons/vector/CfgWeapons.hpp | 4 +- addons/vector/initKeybinds.sqf | 4 +- addons/vehiclelock/CfgMagazines.hpp | 2 +- addons/vehiclelock/CfgVehicles.hpp | 38 +-- addons/vehiclelock/CfgWeapons.hpp | 12 +- addons/vehiclelock/functions/fnc_lockpick.sqf | 2 +- addons/vehicles/XEH_postInit.sqf | 2 +- .../vehicles/functions/fnc_speedLimiter.sqf | 4 +- addons/weaponselect/ACE_Settings.hpp | 4 +- addons/weaponselect/XEH_postInit.sqf | 28 +- .../functions/fnc_selectGrenadeAll.sqf | 2 +- .../functions/fnc_selectGrenadeFrag.sqf | 2 +- .../functions/fnc_selectGrenadeOther.sqf | 2 +- addons/weather/CfgVehicles.hpp | 28 +- addons/weather/XEH_postInit.sqf | 2 +- addons/winddeflection/CfgVehicles.hpp | 20 +- 192 files changed, 1418 insertions(+), 1418 deletions(-) diff --git a/addons/advanced_ballistics/CfgVehicles.hpp b/addons/advanced_ballistics/CfgVehicles.hpp index 854930d639..27ccb2377b 100644 --- a/addons/advanced_ballistics/CfgVehicles.hpp +++ b/addons/advanced_ballistics/CfgVehicles.hpp @@ -2,7 +2,7 @@ class CfgVehicles { class ACE_Module; class GVAR(ModuleSettings): ACE_Module { scope = 2; - displayName = "$STR_ACE_AdvancedBallistics_DisplayName"; + displayName = CSTRING(DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Wind_ca.paa)); category = "ACE"; function = QUOTE(DFUNC(initModuleSettings)); @@ -12,32 +12,32 @@ class CfgVehicles { author = "Ruthberg"; class Arguments { class enabled { - displayName = "$STR_ACE_AdvancedBallistics_enabled_DisplayName"; - description = "$STR_ACE_AdvancedBallistics_enabled_Description"; + displayName = CSTRING(enabled_DisplayName); + description = CSTRING(enabled_Description); typeName = "BOOL"; defaultValue = 0; }; class simulateForSnipers { - displayName = "$STR_ACE_AdvancedBallistics_simulateForSnipers_DisplayName"; - description = "$STR_ACE_AdvancedBallistics_simulateForSnipers_Description"; + displayName = CSTRING(simulateForSnipers_DisplayName); + description = CSTRING(simulateForSnipers_Description); typeName = "BOOL"; defaultValue = 1; }; class simulateForGroupMembers { - displayName = "$STR_ACE_AdvancedBallistics_simulateForGroupMembers_DisplayName"; - description = "$STR_ACE_AdvancedBallistics_simulateForGroupMembers_Description"; + displayName = CSTRING(simulateForGroupMembers_DisplayName); + description = CSTRING(simulateForGroupMembers_Description); typeName = "BOOL"; defaultValue = 0; }; class simulateForEveryone { - displayName = "$STR_ACE_AdvancedBallistics_simulateForEveryone_DisplayName"; - description = "$STR_ACE_AdvancedBallistics_simulateForEveryone_Description"; + displayName = CSTRING(simulateForEveryone_DisplayName); + description = CSTRING(simulateForEveryone_Description); typeName = "BOOL"; defaultValue = 0; }; class disabledInFullAutoMode { - displayName = "$STR_ACE_AdvancedBallistics_disabledInFullAutoMod_DisplayName"; - description = "$STR_ACE_AdvancedBallistics_disabledInFullAutoMod_Description"; + displayName = CSTRING(disabledInFullAutoMod_DisplayName); + description = CSTRING(disabledInFullAutoMod_Description); typeName = "BOOL"; defaultValue = 0; }; @@ -50,38 +50,38 @@ class CfgVehicles { }; */ class ammoTemperatureEnabled { - displayName = "$STR_ACE_AdvancedBallistics_ammoTemperatureEnabled_DisplayName"; - description = "$STR_ACE_AdvancedBallistics_ammoTemperatureEnabled_Description"; + displayName = CSTRING(ammoTemperatureEnabled_DisplayName); + description = CSTRING(ammoTemperatureEnabled_Description); typeName = "BOOL"; defaultValue = 1; }; class barrelLengthInfluenceEnabled { - displayName = "$STR_ACE_AdvancedBallistics_barrelLengthInfluenceEnabled_DisplayName"; - description = "$STR_ACE_AdvancedBallistics_barrelLengthInfluenceEnabled_Description"; + displayName = CSTRING(barrelLengthInfluenceEnabled_DisplayName); + description = CSTRING(barrelLengthInfluenceEnabled_Description); typeName = "BOOL"; defaultValue = 1; }; class bulletTraceEnabled { - displayName = "$STR_ACE_AdvancedBallistics_bulletTraceEnabled_DisplayName"; - description = "$STR_ACE_AdvancedBallistics_bulletTraceEnabled_Description"; + displayName = CSTRING(bulletTraceEnabled_DisplayName); + description = CSTRING(bulletTraceEnabled_Description); typeName = "BOOL"; defaultValue = 1; }; class simulationInterval { - displayName = "$STR_ACE_AdvancedBallistics_simulationInterval_DisplayName"; - description = "$STR_ACE_AdvancedBallistics_simulationInterval_Description"; + displayName = CSTRING(simulationInterval_DisplayName); + description = CSTRING(simulationInterval_Description); typeName = "NUMBER"; defaultValue = 0.0; }; class simulationRadius { - displayName = "$STR_ACE_AdvancedBallistics_simulationRadius_DisplayName"; - description = "$STR_ACE_AdvancedBallistics_simulationRadius_Description"; + displayName = CSTRING(simulationRadius_DisplayName); + description = CSTRING(simulationRadius_Description); typeName = "NUMBER"; defaultValue = 3000; }; }; class ModuleDescription { - description = "$STR_ACE_AdvancedBallistics_Description"; + description = CSTRING(Description); }; }; }; \ No newline at end of file diff --git a/addons/advanced_ballistics/initKeybinds.sqf b/addons/advanced_ballistics/initKeybinds.sqf index cddf47877a..c75a1561ac 100644 --- a/addons/advanced_ballistics/initKeybinds.sqf +++ b/addons/advanced_ballistics/initKeybinds.sqf @@ -1,4 +1,4 @@ -["ACE3 Equipment", QGVAR(ProtractorKey), localize "STR_ACE_AdvancedBallistics_ProtractorKey", +["ACE3 Equipment", QGVAR(ProtractorKey), localize STRING(ProtractorKey), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/aircraft/CfgVehicles.hpp b/addons/aircraft/CfgVehicles.hpp index 559b8dc2e1..9839149b3d 100644 --- a/addons/aircraft/CfgVehicles.hpp +++ b/addons/aircraft/CfgVehicles.hpp @@ -176,8 +176,8 @@ class CfgVehicles { }; class CargoRamp_Open: DoorL1_Open { userActionID = 52; - displayName = "$STR_ACE_Aircraft_OpenCargoRamp"; - textToolTip = "$STR_ACE_Aircraft_OpenCargoRamp"; + displayName = CSTRING(OpenCargoRamp); + textToolTip = CSTRING(OpenCargoRamp); position = "action_cargoramp"; radius = 3.0; condition = "this animationPhase ""cargoramp_open"" < 0.5 AND Alive(this)"; @@ -185,8 +185,8 @@ class CfgVehicles { }; class CargoRamp_Close: DoorL1_Close { userActionID = 55; - displayName = "$STR_ACE_Aircraft_CloseCargoRamp"; - textToolTip = "$STR_ACE_Aircraft_CloseCargoRamp"; + displayName = CSTRING(CloseCargoRamp); + textToolTip = CSTRING(CloseCargoRamp); position = "action_cargoramp"; radius = 3.0; condition = "this animationPhase ""cargoramp_open"" > 0.5 AND Alive(this)"; diff --git a/addons/aircraft/CfgWeapons.hpp b/addons/aircraft/CfgWeapons.hpp index dc84c9f04a..ac8a759bd3 100644 --- a/addons/aircraft/CfgWeapons.hpp +++ b/addons/aircraft/CfgWeapons.hpp @@ -29,7 +29,7 @@ class CfgWeapons { reloadTime = 0.1; }; class Burst: Mode_Burst { - displayName = "$STR_ACE_Aircraft_CMFlareLauncher_Burst_Name"; + displayName = CSTRING(CMFlareLauncher_Burst_Name); }; }; @@ -50,12 +50,12 @@ class CfgWeapons { }; class ACE_gatling_20mm_Comanche: gatling_20mm { - displayName = "$STR_ACE_Aircraft_gatling_20mm_Name"; + displayName = CSTRING(gatling_20mm_Name); class manual: manual { reloadTime = 0.04; dispersion = 0.006; - displayName = "$STR_ACE_Aircraft_gatling_20mm_Name"; + displayName = CSTRING(gatling_20mm_Name); }; class close: close { reloadTime = 0.04; diff --git a/addons/atragmx/CfgVehicles.hpp b/addons/atragmx/CfgVehicles.hpp index f015f0e0b9..9e70047013 100644 --- a/addons/atragmx/CfgVehicles.hpp +++ b/addons/atragmx/CfgVehicles.hpp @@ -4,7 +4,7 @@ class CfgVehicles { class ACE_SelfActions { class ACE_Equipment { class GVAR(open) { - displayName = "$STR_ACE_ATragMX_OpenATragMXDialog"; + displayName = CSTRING(OpenATragMXDialog); condition = QUOTE(call FUNC(can_show)); statement = QUOTE(call FUNC(create_dialog)); showDisabled = 0; diff --git a/addons/atragmx/CfgWeapons.hpp b/addons/atragmx/CfgWeapons.hpp index 07d2fa4aee..42d1e56ae2 100644 --- a/addons/atragmx/CfgWeapons.hpp +++ b/addons/atragmx/CfgWeapons.hpp @@ -6,8 +6,8 @@ class CfgWeapons { class ACE_ATragMX: ACE_ItemCore { author = "Ruthberg"; scope = 2; - displayName = "$STR_ACE_ATragMX_Name"; - descriptionShort = "$STR_ACE_ATragMX_Description"; + displayName = CSTRING(Name); + descriptionShort = CSTRING(Description); model = PATHTOF(data\tdsrecon.p3d); picture = PATHTOF(UI\ATRAG_Icon.paa); icon = "iconObject_circle"; diff --git a/addons/atragmx/initKeybinds.sqf b/addons/atragmx/initKeybinds.sqf index 0638e5cea8..fa3b240849 100644 --- a/addons/atragmx/initKeybinds.sqf +++ b/addons/atragmx/initKeybinds.sqf @@ -1,4 +1,4 @@ -["ACE3 Equipment", QGVAR(ATragMXDialogKey), localize "STR_ACE_ATragMX_ATragMXDialogKey", +["ACE3 Equipment", QGVAR(ATragMXDialogKey), localize STRING(ATragMXDialogKey), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/attach/CfgVehicles.hpp b/addons/attach/CfgVehicles.hpp index ce9b1a7413..c0fb645fec 100644 --- a/addons/attach/CfgVehicles.hpp +++ b/addons/attach/CfgVehicles.hpp @@ -3,7 +3,7 @@ class ACE_Actions { \ class ACE_MainActions { \ class GVAR(AttachVehicle) { \ - displayName = "$STR_ACE_Attach_AttachDetach"; \ + displayName = CSTRING(AttachDetach); \ condition = QUOTE(_this call FUNC(canAttach)); \ insertChildren = QUOTE(_this call FUNC(getChildrenAttachActions)); \ exceptions[] = {}; \ @@ -13,7 +13,7 @@ distance = 4.5; \ }; \ class GVAR(DetachVehicle) { \ - displayName = "$STR_ACE_Attach_Detach"; \ + displayName = CSTRING(Detach); \ condition = QUOTE(_this call FUNC(canDetach)); \ statement = QUOTE(_this call FUNC(detach) ); \ exceptions[] = {}; \ @@ -54,7 +54,7 @@ class CfgVehicles { class ACE_SelfActions { class ACE_Equipment { class GVAR(Attach) { - displayName = "$STR_ACE_Attach_AttachDetach"; + displayName = CSTRING(AttachDetach); condition = QUOTE(_this call FUNC(canAttach)); insertChildren = QUOTE(_this call FUNC(getChildrenAttachActions)); exceptions[] = {"isNotDragging"}; @@ -64,7 +64,7 @@ class CfgVehicles { // hotkey = "T"; }; class GVAR(Detach) { - displayName = "$STR_ACE_Attach_Detach"; + displayName = CSTRING(Detach); condition = QUOTE(_this call FUNC(canDetach)); statement = QUOTE(_this call FUNC(detach)); exceptions[] = {"isNotDragging"}; diff --git a/addons/attach/CfgWeapons.hpp b/addons/attach/CfgWeapons.hpp index 9734ceb273..82276bdc66 100644 --- a/addons/attach/CfgWeapons.hpp +++ b/addons/attach/CfgWeapons.hpp @@ -7,8 +7,8 @@ class CfgWeapons { ACE_attachable = "ACE_IR_Strobe_Effect"; author = "$STR_ACE_Common_ACETeam"; scope = 2; - displayName = "$STR_ACE_IrStrobe_Name"; - descriptionShort = "$STR_ACE_IrStrobe_Description"; + displayName = CSTRING(IrStrobe_Name); + descriptionShort = CSTRING(IrStrobe_Description); model = "\A3\weapons_F\ammo\mag_univ.p3d"; picture = PATHTOF(UI\irstrobe_item.paa); diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index 45b1c0a336..83e35f8a16 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -37,7 +37,7 @@ if (_itemVehClass == "") then { if (_itemVehClass == "") exitWith {ERROR("no ACE_Attachable for Item");}; -_onAtachText = format [localize "STR_ACE_Attach_Item_Attached", _onAtachText]; +_onAtachText = format [localize STRING(Item_Attached), _onAtachText]; if (_unit == _attachToVehicle) then { //Self Attachment _unit removeItem _itemClassname; // Remove item @@ -54,12 +54,12 @@ if (_unit == _attachToVehicle) then { //Self Attachment [_unit, QGVAR(vehAttach), true] call EFUNC(common,setForceWalkStatus); - //MenuBack isn't working for now (localize "STR_ACE_Attach_CancelAction") - [{[localize "STR_ACE_Attach_PlaceAction", ""] call EFUNC(interaction,showMouseHint)}, [], 0, 0] call EFUNC(common,waitAndExecute); + //MenuBack isn't working for now (localize STRING(CancelAction)) + [{[localize STRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, [], 0, 0] call EFUNC(common,waitAndExecute); _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = 1;}] call EFUNC(common,AddActionEventHandler)]; // _unit setVariable [QGVAR(cancelActionEH), [_unit, "MenuBack", {true}, {GVAR(placeAction) = 0;}] call EFUNC(common,AddActionEventHandler)]; - _actionID = _unit addAction [format ["%1", localize "STR_ACE_Attach_CancelAction"], {GVAR(placeAction) = 0}]; + _actionID = _unit addAction [format ["%1", localize STRING(CancelAction)], {GVAR(placeAction) = 0}]; [{ private "_startingPosition"; diff --git a/addons/attach/functions/fnc_detach.sqf b/addons/attach/functions/fnc_detach.sqf index a56936301d..990f151474 100644 --- a/addons/attach/functions/fnc_detach.sqf +++ b/addons/attach/functions/fnc_detach.sqf @@ -49,7 +49,7 @@ if (isNull _attachedObject || {_itemName == ""}) exitWith {ERROR("Could not find // Exit if can't add the item if !(_unit canAdd _itemName) exitWith { - [localize "STR_ACE_Attach_Inventory_Full"] call EFUNC(common,displayTextStructured); + [localize STRING(Inventory_Full)] call EFUNC(common,displayTextStructured); }; // Add item to inventory @@ -78,4 +78,4 @@ if (_itemDisplayName == "") then { _itemDisplayName = getText (configFile >> "CfgMagazines" >> _itemName >> "displayName"); }; -[format [localize "STR_ACE_Attach_Item_Detached", _itemDisplayName]] call EFUNC(common,displayTextStructured); +[format [localize STRING(Item_Detached), _itemDisplayName]] call EFUNC(common,displayTextStructured); diff --git a/addons/attach/functions/fnc_placeApprove.sqf b/addons/attach/functions/fnc_placeApprove.sqf index 60c5e3a9bf..06282b31ae 100644 --- a/addons/attach/functions/fnc_placeApprove.sqf +++ b/addons/attach/functions/fnc_placeApprove.sqf @@ -74,7 +74,7 @@ _closeInDistance = (_closeInMax + _closeInMin) / 2; //Checks (too close to center or can't attach) if (((_startDistanceFromCenter - _closeInDistance) < 0.1) || {!([_attachToVehicle, _unit, _itemClassname] call FUNC(canAttach))}) exitWith { TRACE_2("no valid spot found",_closeInDistance,_startDistanceFromCenter); - [localize "STR_ACE_Attach_Failed"] call EFUNC(common,displayTextStructured); + [localize STRING(Failed)] call EFUNC(common,displayTextStructured); }; //Move it out slightly, for visability sake (better to look a little funny than be embedded//sunk in the hull and be useless) diff --git a/addons/ballistics/CfgMagazines.hpp b/addons/ballistics/CfgMagazines.hpp index 6d1a3c7b89..283ae07c26 100644 --- a/addons/ballistics/CfgMagazines.hpp +++ b/addons/ballistics/CfgMagazines.hpp @@ -14,9 +14,9 @@ class CfgMagazines { class ACE_100Rnd_65x39_caseless_mag_Tracer_Dim: 100Rnd_65x39_caseless_mag_Tracer { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_65x39_Caseless_Tracer_Dim"; - displayName = "$STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimName"; - displayNameShort = "$STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimNameShort"; - descriptionShort = "$STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimDescription"; + displayName = CSTRING(100Rnd_65x39_caseless_mag_Tracer_DimName); + displayNameShort = CSTRING(100Rnd_65x39_caseless_mag_Tracer_DimNameShort); + descriptionShort = CSTRING(100Rnd_65x39_caseless_mag_Tracer_DimDescription); picture = "\A3\weapons_f\data\ui\m_100rnd_65x39_yellow_ca.paa"; }; class 200Rnd_65x39_cased_Box: 100Rnd_65x39_caseless_mag { @@ -25,26 +25,26 @@ class CfgMagazines { class ACE_200Rnd_65x39_cased_Box_Tracer_Dim: 200Rnd_65x39_cased_Box { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_65x39_Caseless_Tracer_Dim"; - displayName = "$STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimName"; - displayNameShort = "$STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimNameShort"; - descriptionShort = "$STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimDescription"; + displayName = CSTRING(200Rnd_65x39_cased_Box_Tracer_DimName); + displayNameShort = CSTRING(200Rnd_65x39_cased_Box_Tracer_DimNameShort); + descriptionShort = CSTRING(200Rnd_65x39_cased_Box_Tracer_DimDescription); picture = "\A3\weapons_f\data\ui\m_200rnd_65x39_yellow_ca.paa"; }; class 30Rnd_65x39_caseless_mag_Tracer; class ACE_30Rnd_65x39_caseless_mag_Tracer_Dim: 30Rnd_65x39_caseless_mag_Tracer { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_65x39_Caseless_Tracer_Dim"; - displayName = "$STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimName"; - displayNameShort = "$STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimNameShort"; - descriptionShort = "$STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimDescription"; + displayName = CSTRING(30Rnd_65x39_caseless_mag_Tracer_DimName); + displayNameShort = CSTRING(30Rnd_65x39_caseless_mag_Tracer_DimNameShort); + descriptionShort = CSTRING(30Rnd_65x39_caseless_mag_Tracer_DimDescription); }; class 30Rnd_65x39_caseless_green_mag_Tracer; class ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim: 30Rnd_65x39_caseless_green_mag_Tracer { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_65x39_Caseless_green_Tracer_Dim"; - displayName = "$STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimName"; - displayNameShort = "$STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimNameShort"; - descriptionShort = "$STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimDescription"; + displayName = CSTRING(30Rnd_65x39_caseless_green_mag_Tracer_DimName); + displayNameShort = CSTRING(30Rnd_65x39_caseless_green_mag_Tracer_DimNameShort); + descriptionShort = CSTRING(30Rnd_65x39_caseless_green_mag_Tracer_DimDescription); }; class 30Rnd_556x45_Stanag: CA_Magazine { @@ -52,25 +52,25 @@ class CfgMagazines { class ACE_30Rnd_556x45_Stanag_M995_AP_mag: 30Rnd_556x45_Stanag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_556x45_Ball_M995_AP"; - displayName = "$STR_ACE_30Rnd_556x45_Stanag_M995_AP_mag_Name"; - displayNameShort = "$STR_ACE_30Rnd_556x45_Stanag_M995_AP_mag_NameShort"; - descriptionShort = "$STR_ACE_30Rnd_556x45_Stanag_M995_AP_mag_Description"; + displayName = CSTRING(30Rnd_556x45_Stanag_M995_AP_mag_Name); + displayNameShort = CSTRING(30Rnd_556x45_Stanag_M995_AP_mag_NameShort); + descriptionShort = CSTRING(30Rnd_556x45_Stanag_M995_AP_mag_Description); initSpeed = 865; }; class ACE_30Rnd_556x45_Stanag_Mk262_mag: 30Rnd_556x45_Stanag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_556x45_Ball_Mk262"; - displayName = "$STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Name"; - displayNameShort = "$STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_NameShort"; - descriptionShort = "$STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Description"; + displayName = CSTRING(30Rnd_556x45_Stanag_Mk262_mag_Name); + displayNameShort = CSTRING(30Rnd_556x45_Stanag_Mk262_mag_NameShort); + descriptionShort = CSTRING(30Rnd_556x45_Stanag_Mk262_mag_Description); initSpeed = 832; }; class ACE_30Rnd_556x45_Stanag_Mk318_mag: 30Rnd_556x45_Stanag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_556x45_Ball_Mk318"; - displayName = "$STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Name"; - displayNameShort = "$STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_NameShort"; - descriptionShort = "$STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Description"; + displayName = CSTRING(30Rnd_556x45_Stanag_Mk318_mag_Name); + displayNameShort = CSTRING(30Rnd_556x45_Stanag_Mk318_mag_NameShort); + descriptionShort = CSTRING(30Rnd_556x45_Stanag_Mk318_mag_Description); initSpeed = 922; }; class 30Rnd_556x45_Stanag_Tracer_Red: 30Rnd_556x45_Stanag { @@ -78,9 +78,9 @@ class CfgMagazines { class ACE_30Rnd_556x45_Stanag_Tracer_Dim: 30Rnd_556x45_Stanag_Tracer_Red { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_B_556x45_Ball_Tracer_Dim"; - displayName = "$STR_ACE_30Rnd_556x45_mag_Tracer_DimName"; - displayNameShort = "$STR_ACE_30Rnd_556x45_mag_Tracer_DimNameShort"; - descriptionShort = "$STR_ACE_30Rnd_556x45_mag_Tracer_DimDescription"; + displayName = CSTRING(30Rnd_556x45_mag_Tracer_DimName); + displayNameShort = CSTRING(30Rnd_556x45_mag_Tracer_DimNameShort); + descriptionShort = CSTRING(30Rnd_556x45_mag_Tracer_DimDescription); picture = "\A3\weapons_f\data\ui\m_20stanag_red_ca.paa"; }; @@ -99,26 +99,26 @@ class CfgMagazines { class ACE_20Rnd_762x51_Mag_Tracer: 20Rnd_762x51_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "B_762x51_Tracer_Red"; - displayName = "$STR_ACE_20Rnd_762x51_mag_TracerName"; - displayNameShort = "$STR_ACE_20Rnd_762x51_mag_TracerNameShort"; - descriptionShort = "$STR_ACE_20Rnd_762x51_mag_TracerDescription"; + displayName = CSTRING(20Rnd_762x51_mag_TracerName); + displayNameShort = CSTRING(20Rnd_762x51_mag_TracerNameShort); + descriptionShort = CSTRING(20Rnd_762x51_mag_TracerDescription); tracersEvery = 1; }; class ACE_20Rnd_762x51_Mag_Tracer_Dim: ACE_20Rnd_762x51_Mag_Tracer { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_B_762x51_Tracer_Dim"; - displayName = "$STR_ACE_20Rnd_762x51_mag_Tracer_DimName"; - displayNameShort = "$STR_ACE_20Rnd_762x51_mag_Tracer_DimNameShort"; - descriptionShort = "$STR_ACE_20Rnd_762x51_mag_Tracer_DimDescription"; + displayName = CSTRING(20Rnd_762x51_mag_Tracer_DimName); + displayNameShort = CSTRING(20Rnd_762x51_mag_Tracer_DimNameShort); + descriptionShort = CSTRING(20Rnd_762x51_mag_Tracer_DimDescription); }; class ACE_20Rnd_762x51_Mag_SD: 20Rnd_762x51_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x51_Ball_Subsonic"; - displayName = "$STR_ACE_20Rnd_762x51_mag_SDName"; - displayNameShort = "$STR_ACE_20Rnd_762x51_mag_SDNameShort"; - descriptionShort = "$STR_ACE_20Rnd_762x51_mag_SDDescription"; + displayName = CSTRING(20Rnd_762x51_mag_SDName); + displayNameShort = CSTRING(20Rnd_762x51_mag_SDNameShort); + descriptionShort = CSTRING(20Rnd_762x51_mag_SDDescription); initSpeed = 325; }; @@ -126,125 +126,125 @@ class CfgMagazines { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x51_Ball_M118LR"; count = 10; - displayName = "$STR_ACE_10Rnd_762x51_M118LR_Mag_Name"; - displayNameShort = "$STR_ACE_10Rnd_762x51_M118LR_Mag_NameShort"; - descriptionShort = "$STR_ACE_10Rnd_762x51_M118LR_Mag_Description"; + displayName = CSTRING(10Rnd_762x51_M118LR_Mag_Name); + displayNameShort = CSTRING(10Rnd_762x51_M118LR_Mag_NameShort); + descriptionShort = CSTRING(10Rnd_762x51_M118LR_Mag_Description); initSpeed = 780; }; class ACE_10Rnd_762x51_Mk316_Mod_0_Mag: 10Rnd_762x51_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x51_Ball_Mk316_Mod_0"; count = 10; - displayName = "$STR_ACE_10Rnd_762x51_Mk316_Mod_0_Mag_Name"; - displayNameShort = "$STR_ACE_10Rnd_762x51_Mk316_Mod_0_Mag_NameShort"; - descriptionShort = "$STR_ACE_10Rnd_762x51_Mk316_Mod_0_Mag_Description"; + displayName = CSTRING(10Rnd_762x51_Mk316_Mod_0_Mag_Name); + displayNameShort = CSTRING(10Rnd_762x51_Mk316_Mod_0_Mag_NameShort); + descriptionShort = CSTRING(10Rnd_762x51_Mk316_Mod_0_Mag_Description); initSpeed = 790; }; class ACE_10Rnd_762x51_Mk319_Mod_0_Mag: 10Rnd_762x51_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x51_Ball_Mk319_Mod_0"; count = 10; - displayName = "$STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Name"; - displayNameShort = "$STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_NameShort"; - descriptionShort = "$STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Description"; + displayName = CSTRING(10Rnd_762x51_Mk319_Mod_0_Mag_Name); + displayNameShort = CSTRING(10Rnd_762x51_Mk319_Mod_0_Mag_NameShort); + descriptionShort = CSTRING(10Rnd_762x51_Mk319_Mod_0_Mag_Description); initSpeed = 900; }; class ACE_10Rnd_762x51_M993_AP_Mag: 10Rnd_762x51_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x51_Ball_M993_AP"; count = 10; - displayName = "$STR_ACE_10Rnd_762x51_M993_AP_Mag_Name"; - displayNameShort = "$STR_ACE_10Rnd_762x51_M993_AP_Mag_NameShort"; - descriptionShort = "$STR_ACE_10Rnd_762x51_M993_AP_Mag_Description"; + displayName = CSTRING(10Rnd_762x51_M993_AP_Mag_Name); + displayNameShort = CSTRING(10Rnd_762x51_M993_AP_Mag_NameShort); + descriptionShort = CSTRING(10Rnd_762x51_M993_AP_Mag_Description); initSpeed = 920; }; class ACE_20Rnd_762x51_M118LR_Mag: 20Rnd_762x51_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x51_Ball_M118LR"; - displayName = "$STR_ACE_20Rnd_762x51_M118LR_Mag_Name"; - displayNameShort = "$STR_ACE_20Rnd_762x51_M118LR_Mag_NameShort"; - descriptionShort = "$STR_ACE_20Rnd_762x51_M118LR_Mag_Description"; + displayName = CSTRING(20Rnd_762x51_M118LR_Mag_Name); + displayNameShort = CSTRING(20Rnd_762x51_M118LR_Mag_NameShort); + descriptionShort = CSTRING(20Rnd_762x51_M118LR_Mag_Description); initSpeed = 780; }; class ACE_20Rnd_762x51_Mk316_Mod_0_Mag: 20Rnd_762x51_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x51_Ball_Mk316_Mod_0"; count = 20; - displayName = "$STR_ACE_20Rnd_762x51_Mk316_Mod_0_Mag_Name"; - displayNameShort = "$STR_ACE_20Rnd_762x51_Mk316_Mod_0_Mag_NameShort"; - descriptionShort = "$STR_ACE_20Rnd_762x51_Mk316_Mod_0_Mag_Description"; + displayName = CSTRING(20Rnd_762x51_Mk316_Mod_0_Mag_Name); + displayNameShort = CSTRING(20Rnd_762x51_Mk316_Mod_0_Mag_NameShort); + descriptionShort = CSTRING(20Rnd_762x51_Mk316_Mod_0_Mag_Description); initSpeed = 790; }; class ACE_20Rnd_762x51_Mk319_Mod_0_Mag: 20Rnd_762x51_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x51_Ball_Mk319_Mod_0"; - displayName = "$STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Name"; - displayNameShort = "$STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_NameShort"; - descriptionShort = "$STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Description"; + displayName = CSTRING(20Rnd_762x51_Mk319_Mod_0_Mag_Name); + displayNameShort = CSTRING(20Rnd_762x51_Mk319_Mod_0_Mag_NameShort); + descriptionShort = CSTRING(20Rnd_762x51_Mk319_Mod_0_Mag_Description); initSpeed = 900; }; class ACE_20Rnd_762x51_M993_AP_Mag: 20Rnd_762x51_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x51_Ball_M993_AP"; count = 20; - displayName = "$STR_ACE_20Rnd_762x51_M993_AP_Mag_Name"; - displayNameShort = "$STR_ACE_20Rnd_762x51_M993_AP_Mag_NameShort"; - descriptionShort = "$STR_ACE_20Rnd_762x51_M993_AP_Mag_Description"; + displayName = CSTRING(20Rnd_762x51_M993_AP_Mag_Name); + displayNameShort = CSTRING(20Rnd_762x51_M993_AP_Mag_NameShort); + descriptionShort = CSTRING(20Rnd_762x51_M993_AP_Mag_Description); initSpeed = 920; }; class ACE_20Rnd_762x67_Mk248_Mod_0_Mag: 20Rnd_762x51_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x67_Ball_Mk248_Mod_0"; - displayName = "$STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_Name"; - displayNameShort = "$STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_NameShort"; - descriptionShort = "$STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_Description"; + displayName = CSTRING(20Rnd_762x67_Mk248_Mod_0_Mag_Name); + displayNameShort = CSTRING(20Rnd_762x67_Mk248_Mod_0_Mag_NameShort); + descriptionShort = CSTRING(20Rnd_762x67_Mk248_Mod_0_Mag_Description); initSpeed = 900; }; class ACE_20Rnd_762x67_Mk248_Mod_1_Mag: 20Rnd_762x51_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x67_Ball_Mk248_Mod_1"; - displayName = "$STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_Name"; - displayNameShort = "$STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_NameShort"; - descriptionShort = "$STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_Description"; + displayName = CSTRING(20Rnd_762x67_Mk248_Mod_1_Mag_Name); + displayNameShort = CSTRING(20Rnd_762x67_Mk248_Mod_1_Mag_NameShort); + descriptionShort = CSTRING(20Rnd_762x67_Mk248_Mod_1_Mag_Description); initSpeed = 880; }; class ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag: 20Rnd_762x51_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x67_Ball_Berger_Hybrid_OTM"; - displayName = "$STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Name"; - displayNameShort = "$STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_NameShort"; - descriptionShort = "$STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Description"; + displayName = CSTRING(20Rnd_762x67_Berger_Hybrid_OTM_Mag_Name); + displayNameShort = CSTRING(20Rnd_762x67_Berger_Hybrid_OTM_Mag_NameShort); + descriptionShort = CSTRING(20Rnd_762x67_Berger_Hybrid_OTM_Mag_Description); initSpeed = 832; }; class ACE_30Rnd_65x47_Scenar_mag: 30Rnd_65x39_caseless_mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_65x47_Ball_Scenar"; - displayName = "$STR_ACE_30Rnd_65x47_Scenar_mag_Name"; - displayNameShort = "$STR_ACE_30Rnd_65x47_Scenar_mag_NameShort"; - descriptionShort = "$STR_ACE_30Rnd_65x47_Scenar_mag_Description"; + displayName = CSTRING(30Rnd_65x47_Scenar_mag_Name); + displayNameShort = CSTRING(30Rnd_65x47_Scenar_mag_NameShort); + descriptionShort = CSTRING(30Rnd_65x47_Scenar_mag_Description); }; class ACE_30Rnd_65_Creedmor_mag: 30Rnd_65x39_caseless_mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_65_Creedmor_Ball"; - displayName = "$STR_ACE_30Rnd_65_Creedmor_mag_Name"; - displayNameShort = "$STR_ACE_30Rnd_65_Creedmor_mag_NameShort"; - descriptionShort = "$STR_ACE_30Rnd_65_Creedmor_mag_Description"; + displayName = CSTRING(30Rnd_65_Creedmor_mag_Name); + displayNameShort = CSTRING(30Rnd_65_Creedmor_mag_NameShort); + descriptionShort = CSTRING(30Rnd_65_Creedmor_mag_Description); }; class 10Rnd_338_Mag; class ACE_10Rnd_338_300gr_HPBT_Mag: 10Rnd_338_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_338_Ball"; - displayName = "$STR_ACE_10Rnd_338_300gr_HPBT_Mag_Name"; - displayNameShort = "$STR_ACE_10Rnd_338_300gr_HPBT_Mag_NameShort"; - descriptionShort = "$STR_ACE_10Rnd_338_300gr_HPBT_Mag_Description"; + displayName = CSTRING(10Rnd_338_300gr_HPBT_Mag_Name); + displayNameShort = CSTRING(10Rnd_338_300gr_HPBT_Mag_NameShort); + descriptionShort = CSTRING(10Rnd_338_300gr_HPBT_Mag_Description); initSpeed = 800; }; class ACE_10Rnd_338_API526_Mag: 10Rnd_338_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_338_Ball_API526"; - displayName = "$STR_ACE_10Rnd_338_API526_Mag_Name"; - displayNameShort = "$STR_ACE_10Rnd_338_API526_Mag_NameShort"; - descriptionShort = "$STR_ACE_10Rnd_338_API526_Mag_Description"; + displayName = CSTRING(10Rnd_338_API526_Mag_Name); + displayNameShort = CSTRING(10Rnd_338_API526_Mag_NameShort); + descriptionShort = CSTRING(10Rnd_338_API526_Mag_Description); initSpeed = 880; }; @@ -252,25 +252,25 @@ class CfgMagazines { class ACE_5Rnd_127x99_Mag: 5Rnd_127x108_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "B_127x99_Ball"; - displayName = "$STR_ACE_5Rnd_127x99_Mag_Name"; - displayNameShort = "$STR_ACE_5Rnd_127x99_Mag_NameShort"; - descriptionShort = "$STR_ACE_5Rnd_127x99_Mag_Description"; + displayName = CSTRING(5Rnd_127x99_Mag_Name); + displayNameShort = CSTRING(5Rnd_127x99_Mag_NameShort); + descriptionShort = CSTRING(5Rnd_127x99_Mag_Description); initSpeed = 900; }; class ACE_5Rnd_127x99_API_Mag: 5Rnd_127x108_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_127x99_API"; - displayName = "$STR_ACE_5Rnd_127x99_API_Mag_Name"; - displayNameShort = "$STR_ACE_5Rnd_127x99_API_Mag_NameShort"; - descriptionShort = "$STR_ACE_5Rnd_127x99_API_Mag_Description"; + displayName = CSTRING(5Rnd_127x99_API_Mag_Name); + displayNameShort = CSTRING(5Rnd_127x99_API_Mag_NameShort); + descriptionShort = CSTRING(5Rnd_127x99_API_Mag_Description); initSpeed = 900; }; class ACE_5Rnd_127x99_AMAX_Mag: 5Rnd_127x108_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_127x99_Ball_AMAX"; - displayName = "$STR_ACE_5Rnd_127x99_AMAX_Mag_Name"; - displayNameShort = "$STR_ACE_5Rnd_127x99_AMAX_Mag_NameShort"; - descriptionShort = "$STR_ACE_5Rnd_127x99_AMAX_Mag_Description"; + displayName = CSTRING(5Rnd_127x99_AMAX_Mag_Name); + displayNameShort = CSTRING(5Rnd_127x99_AMAX_Mag_NameShort); + descriptionShort = CSTRING(5Rnd_127x99_AMAX_Mag_Description); initSpeed = 860; }; @@ -281,9 +281,9 @@ class CfgMagazines { class ACE_30Rnd_9x19_mag: 30Rnd_9x21_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_9x19_Ball"; - displayName = "$STR_ACE_30Rnd_9x19_mag_Name"; - displayNameShort = "$STR_ACE_30Rnd_9x19_mag_NameShort"; - descriptionShort = "$STR_ACE_30Rnd_9x19_mag_Description"; + displayName = CSTRING(30Rnd_9x19_mag_Name); + displayNameShort = CSTRING(30Rnd_9x19_mag_NameShort); + descriptionShort = CSTRING(30Rnd_9x19_mag_Description); initSpeed = 370; }; @@ -313,9 +313,9 @@ class CfgMagazines { class ACE_16Rnd_9x19_mag: 16Rnd_9x21_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_9x19_Ball"; - displayName = "$STR_ACE_16Rnd_9x19_mag_Name"; - displayNameShort = "$STR_ACE_16Rnd_9x19_mag_NameShort"; - descriptionShort = "$STR_ACE_16Rnd_9x19_mag_Description"; + displayName = CSTRING(16Rnd_9x19_mag_Name); + displayNameShort = CSTRING(16Rnd_9x19_mag_NameShort); + descriptionShort = CSTRING(16Rnd_9x19_mag_Description); initSpeed = 370; }; @@ -325,9 +325,9 @@ class CfgMagazines { class ACE_10Rnd_762x54_Tracer_mag: 10Rnd_762x54_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x54_Ball_7T2"; - displayName = "$STR_ACE_10Rnd_762x54_Tracer_mag_Name"; - displayNameShort = "$STR_ACE_10Rnd_762x54_Tracer_mag_NameShort"; - descriptionShort = "$STR_ACE_10Rnd_762x54_Tracer_mag_Description"; + displayName = CSTRING(10Rnd_762x54_Tracer_mag_Name); + displayNameShort = CSTRING(10Rnd_762x54_Tracer_mag_NameShort); + descriptionShort = CSTRING(10Rnd_762x54_Tracer_mag_Description); initSpeed = 800; tracersEvery = 1; }; diff --git a/addons/ballistics/CfgVehicles.hpp b/addons/ballistics/CfgVehicles.hpp index 0ad697d91e..c5bbb46a11 100644 --- a/addons/ballistics/CfgVehicles.hpp +++ b/addons/ballistics/CfgVehicles.hpp @@ -190,7 +190,7 @@ class CfgVehicles { class ACE_Box_Ammo: NATO_Box_Base { scope = 2; accuracy = 1000; - displayName = "$STR_ACE_AmmoSupplyCrate_DisplayName"; + displayName = CSTRING(AmmoSupplyCrate_DisplayName); model = "\A3\weapons_F\AmmoBoxes\AmmoBox_F"; author = "$STR_ACE_Common_ACETeam"; class TransportMagazines { diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index 91c47824fd..e0fff7c06c 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -4,7 +4,7 @@ class CfgVehicles { class ACE_Actions { class ACE_ApplyHandcuffs { - displayName = "$STR_ACE_Captives_SetCaptive"; + displayName = CSTRING(SetCaptive); selection = "righthand"; distance = 2; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs)); @@ -13,7 +13,7 @@ class CfgVehicles { icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); }; class ACE_RemoveHandcuffs { - displayName = "$STR_ACE_Captives_ReleaseCaptive"; + displayName = CSTRING(ReleaseCaptive); selection = "righthand"; distance = 2; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs)); @@ -24,7 +24,7 @@ class CfgVehicles { class ACE_MainActions { class ACE_EscortCaptive { - displayName = "$STR_ACE_Captives_EscortCaptive"; + displayName = CSTRING(EscortCaptive); distance = 4; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canEscortCaptive)); statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doEscortCaptive)); @@ -35,7 +35,7 @@ class CfgVehicles { hotkey = "E"; }; class ACE_StopEscorting { - displayName = "$STR_ACE_Captives_StopEscorting"; + displayName = CSTRING(StopEscorting); distance = 4; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canStopEscorting)); statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive)); @@ -46,7 +46,7 @@ class CfgVehicles { hotkey = "E"; }; class ACE_LoadCaptive { - displayName = "$STR_ACE_Captives_LoadCaptive"; + displayName = CSTRING(LoadCaptive); distance = 4; condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive)); statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(doLoadCaptive)); @@ -57,7 +57,7 @@ class CfgVehicles { hotkey = "L"; }; class ACE_FriskPerson { - displayName = "$STR_ACE_Captives_FriskPerson"; + displayName = CSTRING(FriskPerson); distance = 2; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canFriskPerson)); statement = QUOTE([ARR_2(_player, _target)] call FUNC(doFriskPerson)); @@ -71,7 +71,7 @@ class CfgVehicles { class ACE_SelfActions { class ACE_StopEscortingSelf { - displayName = "$STR_ACE_Captives_StopEscorting"; + displayName = CSTRING(StopEscorting); condition = QUOTE([ARR_2(_player, objNull)] call FUNC(canStopEscorting)); statement = QUOTE([ARR_3(_player,objNull, false)] call FUNC(doEscortCaptive)); exceptions[] = {"isNotEscorting"}; @@ -80,7 +80,7 @@ class CfgVehicles { hotkey = "C"; }; class ACE_StartSurrenderingSelf { - displayName = "$STR_ACE_Captives_StartSurrendering"; + displayName = CSTRING(StartSurrendering); condition = QUOTE([ARR_2(_player, true)] call FUNC(canSurrender)); statement = QUOTE([ARR_2(_player, true)] call FUNC(setSurrendered)); exceptions[] = {}; @@ -88,7 +88,7 @@ class CfgVehicles { priority = 0; }; class ACE_StopSurrenderingSelf { - displayName = "$STR_ACE_Captives_StopSurrendering"; + displayName = CSTRING(StopSurrendering); condition = QUOTE([ARR_2(_player, false)] call FUNC(canSurrender)); statement = QUOTE([ARR_2(_player, false)] call FUNC(setSurrendered)); exceptions[] = {"isNotSurrendering"}; @@ -102,7 +102,7 @@ class CfgVehicles { class ACE_Actions { \ class ACE_MainActions { \ class GVAR(LoadCaptive) { \ - displayName = "$STR_ACE_Captives_LoadCaptive"; \ + displayName = CSTRING(LoadCaptive); \ distance = 4; \ condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \ statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(doLoadCaptive)); \ @@ -110,7 +110,7 @@ class CfgVehicles { priority = 1.2; \ }; \ class GVAR(UnloadCaptive) { \ - displayName = "$STR_ACE_Captives_UnloadCaptive"; \ + displayName = CSTRING(UnloadCaptive); \ distance = 4; \ condition = QUOTE([ARR_2(_player, _target)] call FUNC(canUnloadCaptive)); \ statement = QUOTE([ARR_2(_player, _target)] call FUNC(doUnloadCaptive)); \ @@ -161,7 +161,7 @@ class CfgVehicles { class GVAR(ModuleSurrender): Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_Captives_ModuleSurrender_DisplayName"; //Make Unit Surrender + displayName = CSTRING(ModuleSurrender_DisplayName); //Make Unit Surrender function = QUOTE(DFUNC(moduleSurrender)); scope = 2; //show in editor scopeCurator = 2; //show in zeus @@ -172,7 +172,7 @@ class CfgVehicles { functionPriority = 0; class Arguments {}; class ModuleDescription: ModuleDescription { - description = "$STR_ACE_Captives_ModuleSurrender_Description"; //Sync a unit to make them surrender.
Source: ace_captives + description = CSTRING(ModuleSurrender_Description); //Sync a unit to make them surrender.
Source: ace_captives sync[] = {"AnyAI"}; }; }; diff --git a/addons/captives/CfgWeapons.hpp b/addons/captives/CfgWeapons.hpp index be2149ca88..7092962519 100644 --- a/addons/captives/CfgWeapons.hpp +++ b/addons/captives/CfgWeapons.hpp @@ -3,8 +3,8 @@ class CfgWeapons { class InventoryItem_Base_F; class ACE_CableTie: ACE_ItemCore { - displayName = "$STR_ACE_Captives_CableTie"; - descriptionShort = "$STR_ACE_Captives_CableTieDescription"; + displayName = CSTRING(CableTie); + descriptionShort = CSTRING(CableTieDescription); model = QUOTE(PATHTOF(models\ace_cabletie.p3d)); picture = QUOTE(PATHTOF(UI\ace_cabletie_ca.paa)); scope = 2; diff --git a/addons/captives/functions/fnc_doEscortCaptive.sqf b/addons/captives/functions/fnc_doEscortCaptive.sqf index b8758065d8..e7047c1cca 100644 --- a/addons/captives/functions/fnc_doEscortCaptive.sqf +++ b/addons/captives/functions/fnc_doEscortCaptive.sqf @@ -30,7 +30,7 @@ if (_state) then { _unit setVariable [QGVAR(escortedUnit), _target, true]; //Add Actionmenu to release captive - _actionID = _unit addAction [format ["%1", localize "STR_ACE_Captives_StopEscorting"], + _actionID = _unit addAction [format ["%1", localize STRING(StopEscorting)], {[(_this select 0), ((_this select 0) getVariable [QGVAR(escortedUnit), objNull]), false] call FUNC(doEscortCaptive);}, nil, 20, false, true, "", QUOTE(!isNull (GETVAR(_target,QGVAR(escortedUnit),objNull)))]; diff --git a/addons/captives/functions/fnc_doFriskPerson.sqf b/addons/captives/functions/fnc_doFriskPerson.sqf index dd7cc3c675..ac3f9e57db 100644 --- a/addons/captives/functions/fnc_doFriskPerson.sqf +++ b/addons/captives/functions/fnc_doFriskPerson.sqf @@ -27,7 +27,7 @@ if (_weapon == primaryWeapon _player && {_weapon != ""}) then { _listedItemClasses = []; -_actions = [localize "STR_ACE_Captives_FriskMenuHeader", ""] call ACE_Interaction_fnc_prepareSelectMenu; +_actions = [localize STRING(FriskMenuHeader), ""] call ACE_Interaction_fnc_prepareSelectMenu; _allGear = []; diff --git a/addons/captives/functions/fnc_moduleSurrender.sqf b/addons/captives/functions/fnc_moduleSurrender.sqf index bf0e04cd6a..94bcb7da45 100644 --- a/addons/captives/functions/fnc_moduleSurrender.sqf +++ b/addons/captives/functions/fnc_moduleSurrender.sqf @@ -36,13 +36,13 @@ if (local _logic) then { ["SetSurrendered", [_mouseOverObject], [_mouseOverObject, false]] call EFUNC(common,targetEvent); }; } else { - ["STR_ACE_Captives_Zeus_OnlyAlive"] call EFUNC(common,displayTextStructured); + [STRING(Zeus_OnlyAlive)] call EFUNC(common,displayTextStructured); }; } else { - ["STR_ACE_Captives_Zeus_OnlyInfantry"] call EFUNC(common,displayTextStructured); + [STRING(Zeus_OnlyInfantry)] call EFUNC(common,displayTextStructured); }; } else { - ["STR_ACE_Captives_Zeus_NothingSelected"] call EFUNC(common,displayTextStructured); + [STRING(Zeus_NothingSelected)] call EFUNC(common,displayTextStructured); }; } else { //an editor module diff --git a/addons/common/CfgUnitInsignia.hpp b/addons/common/CfgUnitInsignia.hpp index aba82823c9..c1cd541e9c 100644 --- a/addons/common/CfgUnitInsignia.hpp +++ b/addons/common/CfgUnitInsignia.hpp @@ -2,13 +2,13 @@ class CfgUnitInsignia { class ACE_insignia_logo { displayName = "ACE3"; - author = "$STR_ACE_Common_ACETeam"; + author = CSTRING(ACETeam); texture = PATHTOF(data\Insignia_ace3logo_ca.paa); textureVehicle = ""; }; class ACE_insignia_banana { displayName = "ABE3"; - author = "$STR_ACE_Common_ACETeam"; + author = CSTRING(ACETeam); texture = PATHTOF(data\insignia_banana_ca.paa); textureVehicle = ""; }; diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp index 1adf622494..5444566ad1 100644 --- a/addons/common/CfgVehicles.hpp +++ b/addons/common/CfgVehicles.hpp @@ -30,42 +30,42 @@ class CfgVehicles { class ModuleDescription {}; }; class ACE_ModuleCheckPBOs: Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = CSTRING(ACETeam); category = "ACE"; - displayName = "$STR_ACE_Common_CheckPBO_DisplayName"; + displayName = CSTRING(CheckPBO_DisplayName); function = QFUNC(moduleCheckPBOs); scope = 2; isGlobal = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_CheckPBO_ca.paa)); class Arguments { class Action { - displayName = "$STR_ACE_Common_CheckPBO_Action_DisplayName"; - description = "$STR_ACE_Common_CheckPBO_Action_Description"; + displayName = CSTRING(CheckPBO_Action_DisplayName); + description = CSTRING(CheckPBO_Action_Description); class values { class WarnOnce { default = 1; - name = "$STR_ACE_Common_CheckPBO_Action_WarnOnce"; + name = CSTRING(CheckPBO_Action_WarnOnce); value = 0; }; class Warn { - name = "$STR_ACE_Common_CheckPBO_Action_WarnPerm"; + name = CSTRING(CheckPBO_Action_WarnPerm); value = 1; }; class Kick { - name = "$STR_ACE_Common_CheckPBO_Action_Kick"; + name = CSTRING(CheckPBO_Action_Kick); value = 2; }; }; }; class CheckAll { - displayName = "$STR_ACE_Common_CheckPBO_CheckAll_DisplayName"; - description = "$STR_ACE_Common_CheckPBO_CheckAll_Description"; + displayName = CSTRING(CheckPBO_CheckAll_DisplayName); + description = CSTRING(CheckPBO_CheckAll_Description); typeName = "BOOL"; defaultValue = 0; }; class Whitelist { - displayName = "$STR_ACE_Common_CheckPBO_Whitelist_DisplayName"; - description = "$STR_ACE_Common_CheckPBO_Whitelist_Description"; + displayName = CSTRING(CheckPBO_Whitelist_DisplayName); + description = CSTRING(CheckPBO_Whitelist_Description); typeName = "STRING"; class values { default = "[]"; @@ -73,14 +73,14 @@ class CfgVehicles { }; }; class ModuleDescription: ModuleDescription { - description = "$STR_ACE_Common_CheckPBO_Description"; + description = CSTRING(CheckPBO_Description); }; }; class ACE_ModuleLSDVehicles: Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = CSTRING(ACETeam); category = "ACE"; - displayName = "$STR_ACE_Common_LSDVehicles_DisplayName"; + displayName = CSTRING(LSDVehicles_DisplayName); function = "ACE_Common_fnc_moduleLSDVehicles"; scope = 2; icon = QUOTE(PATHTOF(UI\Icon_Module_LSD_ca.paa)); @@ -88,15 +88,15 @@ class CfgVehicles { class Arguments { }; class ModuleDescription: ModuleDescription { - description = "$STR_ACE_Common_LSDVehicles_Description"; + description = CSTRING(LSDVehicles_Description); sync[] = {"AnyVehicle"}; }; }; class Box_NATO_Support_F; class ACE_Box_Misc: Box_NATO_Support_F { - author = "$STR_ACE_Common_ACETeam"; - displayName = "$STR_ACE_Common_MiscItems"; + author = CSTRING(ACETeam); + displayName = CSTRING(MiscItems); transportMaxWeapons = 9001; transportMaxMagazines = 9001; transportMaxItems = 9001; @@ -112,8 +112,8 @@ class CfgVehicles { class ACE_bananaItem: Item_Base_F { scope = 2; scopeCurator = 2; - displayName = "$STR_ACE_Common_bananaDisplayName"; - author = "$STR_ACE_Common_ACETeam"; + displayName = CSTRING(bananaDisplayName); + author = CSTRING(ACETeam); vehicleClass = "Items"; class TransportItems { diff --git a/addons/common/CfgVoice.hpp b/addons/common/CfgVoice.hpp index 1fb0f5d2b6..22e0bd7066 100644 --- a/addons/common/CfgVoice.hpp +++ b/addons/common/CfgVoice.hpp @@ -209,7 +209,7 @@ class ACE_RadioProtocolNoRadio: RadioProtocolBase { class CfgVoice { class ACE_NoVoice { - author = "$STR_ACE_Common_ACETeam"; + author = CSTRING(ACETeam); protocol = "ACE_RadioProtocolNoRadio"; variants[] = {1}; directories[] = {"",""}; @@ -217,13 +217,13 @@ class CfgVoice { scope = 2; voiceType = ""; icon = "\a3\Ui_f\data\Map\Markers\Flags\nato_ca.paa"; - displayName = "$STR_ACE_Common_NoVoice"; + displayName = CSTRING(NoVoice); }; }; class CfgVoiceTypes { class ACE_NoVoice { - name = "$STR_ACE_Common_NoVoice"; + name = CSTRING(NoVoice); voices[] = {"ACE_NoVoice","ACE_NoVoice","ACE_NoVoice"}; preview = "ACE_NoVoice"; alternative = ""; diff --git a/addons/common/CfgWeapons.hpp b/addons/common/CfgWeapons.hpp index 59bb8f6b9a..aa905bb3e6 100644 --- a/addons/common/CfgWeapons.hpp +++ b/addons/common/CfgWeapons.hpp @@ -30,10 +30,10 @@ class CfgWeapons { class InventoryItem_Base_F; class ACE_Banana: ACE_ItemCore { - author = "$STR_ACE_Common_ACETeam"; + author = CSTRING(ACETeam); scope = 2; - displayName = "$STR_ACE_Common_bananaDisplayName"; - descriptionShort = "$STR_ACE_Common_bananaDescr"; + displayName = CSTRING(bananaDisplayName); + descriptionShort = CSTRING(bananaDescr); model = PATHTOF(data\banana.p3d); picture = PATHTOF(data\icon_banana_ca.paa); icon = "iconObject_circle"; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 3f1e5a6308..7a53c787a6 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -74,10 +74,10 @@ class ACE_Settings { * * The following settings only apply when isClientSettable == 1 * Stringtable entry with the setting name - * displayName = "$STR_ACE_Common_SettingName"; + * displayName = CSTRING(SettingName); * * Stringtable entry with the setting description - * description = "$STR_ACE_Common_SettingDescription"; + * description = CSTRING(SettingDescription); * * Stringtable entries that describe the options * Only applies if typeName == "SCALAR"; @@ -92,15 +92,15 @@ class ACE_Settings { value = 1; typeName = "BOOL"; isClientSettable = 1; - displayName = "$STR_ACE_Common_EnableNumberHotkeys"; + displayName = CSTRING(EnableNumberHotkeys); };*/ class GVAR(settingFeedbackIcons) { value = 1; typeName = "SCALAR"; force = 0; isClientSettable = 1; - displayName = "$STR_ACE_Common_SettingFeedbackIconsName"; - description = "$STR_ACE_Common_SettingFeedbackIconsDesc"; + displayName = CSTRING(SettingFeedbackIconsName); + description = CSTRING(SettingFeedbackIconsDesc); values[] = {"$STR_ACE_Common_Hide", "$STR_ACE_Common_TopRightDown", "$STR_ACE_Common_TopRightLeft", "$STR_ACE_Common_TopLeftDown", "$STR_ACE_Common_TopLeftRight"}; }; class GVAR(SettingProgressBarLocation) { @@ -108,23 +108,23 @@ class ACE_Settings { typeName = "SCALAR"; force = 0; isClientSettable = 1; - displayName = "$STR_ACE_Common_SettingProgressbarLocationName"; - description = "$STR_ACE_Common_SettingProgressbarLocationDesc"; + displayName = CSTRING(SettingProgressbarLocationName); + description = CSTRING(SettingProgressbarLocationDesc); values[] = {"$STR_ACE_Common_Top", "$STR_ACE_Common_Bottom"}; }; class GVAR(displayTextColor) { value[] = {0,0,0,0.1}; typeName = "COLOR"; isClientSettable = 1; - displayName = "$STR_ACE_Common_SettingDisplayTextColorName"; - description = "$STR_ACE_Common_SettingDisplayTextColorDesc"; + displayName = CSTRING(SettingDisplayTextColorName); + description = CSTRING(SettingDisplayTextColorDesc); }; class GVAR(displayTextFontColor) { value[] = {1,1,1,1}; typeName = "COLOR"; isClientSettable = 1; - displayName = "$STR_ACE_Common_SettingDisplayTextFontColorName"; - description = "$STR_ACE_Common_SettingDisplayTextFontColorDesc"; + displayName = CSTRING(SettingDisplayTextFontColorName); + description = CSTRING(SettingDisplayTextFontColorDesc); }; }; diff --git a/addons/disarming/CfgVehicles.hpp b/addons/disarming/CfgVehicles.hpp index 381aaed93e..b4a1a4c7dd 100644 --- a/addons/disarming/CfgVehicles.hpp +++ b/addons/disarming/CfgVehicles.hpp @@ -4,7 +4,7 @@ class CfgVehicles { class ACE_Actions { class ACE_MainActions { class ACE_DisarmInventory { - displayName = "$STR_ACE_Disarming_OpenInventory"; + displayName = CSTRING(OpenInventory); distance = 3.5; condition = QUOTE([ARR_2(_player,_target)] call FUNC(canPlayerDisarmUnit)); statement = QUOTE([ARR_2(_player,_target)] call FUNC(openDisarmDialog)); diff --git a/addons/disposable/CfgMagazines.hpp b/addons/disposable/CfgMagazines.hpp index 6265c06f50..5e2c926514 100644 --- a/addons/disposable/CfgMagazines.hpp +++ b/addons/disposable/CfgMagazines.hpp @@ -4,7 +4,7 @@ class CfgMagazines { author = "$STR_ACE_Common_ACETeam"; scope = 1; scopeArsenal = 1; - displayName = "$STR_ACE_Disposable_PreloadedMissileDummy"; + displayName = CSTRING(PreloadedMissileDummy); picture = PATHTOEF(common,UI\blank_CO.paa); weaponPoolAvailable = 0; mass = 0; @@ -14,8 +14,8 @@ class CfgMagazines { }; class ACE_UsedTube_F: NLAW_F { author = "$STR_ACE_Common_ACETeam"; - displayName = "$STR_ACE_Disposable_UsedTube"; - descriptionShort = "$STR_ACE_Disposable_UsedTubeDescription"; + displayName = CSTRING(UsedTube); + descriptionShort = CSTRING(UsedTubeDescription); displayNameShort = "-"; count = 0; weaponPoolAvailable = 0; diff --git a/addons/disposable/CfgWeapons.hpp b/addons/disposable/CfgWeapons.hpp index 965d97521c..724658dcc0 100644 --- a/addons/disposable/CfgWeapons.hpp +++ b/addons/disposable/CfgWeapons.hpp @@ -8,8 +8,8 @@ class CfgWeapons { scope = 1; ACE_isUsedLauncher = 1; author = "$STR_ACE_Common_ACETeam"; - displayName = "$STR_ACE_Disposable_UsedTube"; - descriptionShort = "$STR_ACE_Disposable_UsedTubeDescription"; + displayName = CSTRING(UsedTube); + descriptionShort = CSTRING(UsedTubeDescription); magazines[] = {"ACE_FiredMissileDummy"}; // This will disable the used launcher class from being fired again. //picture = ""; @todo //model = ""; @todo diff --git a/addons/dragging/functions/fnc_carryObject.sqf b/addons/dragging/functions/fnc_carryObject.sqf index ee72dc9aa7..197e1cf274 100644 --- a/addons/dragging/functions/fnc_carryObject.sqf +++ b/addons/dragging/functions/fnc_carryObject.sqf @@ -58,7 +58,7 @@ if (_actionID != -1) then { }; _actionID = _unit addAction [ - format ["%1", localize "STR_ACE_Dragging_Drop"], + format ["%1", localize STRING(Drop)], QUOTE([ARR_2(_this select 0, (_this select 0) getVariable [ARR_2(QUOTE(QGVAR(carriedObject)),objNull)])] call FUNC(dropObject_carry)), nil, 20, diff --git a/addons/dragging/functions/fnc_dragObject.sqf b/addons/dragging/functions/fnc_dragObject.sqf index 35f8687ed0..a8b99ab874 100644 --- a/addons/dragging/functions/fnc_dragObject.sqf +++ b/addons/dragging/functions/fnc_dragObject.sqf @@ -49,7 +49,7 @@ if (_actionID != -1) then { }; _actionID = _unit addAction [ - format ["%1", localize "STR_ACE_Dragging_Drop"], + format ["%1", localize STRING(Drop)], QUOTE([ARR_2(_this select 0, (_this select 0) getVariable [ARR_2(QUOTE(QGVAR(draggedObject)),objNull)])] call FUNC(dropObject)), nil, 20, diff --git a/addons/dragging/functions/fnc_setCarryable.sqf b/addons/dragging/functions/fnc_setCarryable.sqf index 2a10ca4897..439dc1c10b 100644 --- a/addons/dragging/functions/fnc_setCarryable.sqf +++ b/addons/dragging/functions/fnc_setCarryable.sqf @@ -49,8 +49,8 @@ if (_type in _initializedClasses) exitWith {}; _initializedClasses pushBack _type; GVAR(initializedClasses_carry) = _initializedClasses; -_carryAction = [QGVAR(carry), localize "STR_ACE_Dragging_Carry", "", {[_player, _target] call FUNC(startCarry)}, {[_player, _target] call FUNC(canCarry)}] call EFUNC(interact_menu,createAction); -_dropAction = [QGVAR(drop_carry), localize "STR_ACE_Dragging_Drop", "", {[_player, _target] call FUNC(dropObject_carry)}, {[_player, _target] call FUNC(canDrop_carry)}] call EFUNC(interact_menu,createAction); +_carryAction = [QGVAR(carry), localize STRING(Carry), "", {[_player, _target] call FUNC(startCarry)}, {[_player, _target] call FUNC(canCarry)}] call EFUNC(interact_menu,createAction); +_dropAction = [QGVAR(drop_carry), localize STRING(Drop), "", {[_player, _target] call FUNC(dropObject_carry)}, {[_player, _target] call FUNC(canDrop_carry)}] call EFUNC(interact_menu,createAction); [_type, 0, ["ACE_MainActions"], _carryAction] call EFUNC(interact_menu,addActionToClass); [_type, 0, [], _dropAction] call EFUNC(interact_menu,addActionToClass); diff --git a/addons/dragging/functions/fnc_setDraggable.sqf b/addons/dragging/functions/fnc_setDraggable.sqf index 5a42f4e439..5e9ba7cf3f 100644 --- a/addons/dragging/functions/fnc_setDraggable.sqf +++ b/addons/dragging/functions/fnc_setDraggable.sqf @@ -49,8 +49,8 @@ if (_type in _initializedClasses) exitWith {}; _initializedClasses pushBack _type; GVAR(initializedClasses) = _initializedClasses; -_dragAction = [QGVAR(drag), localize "STR_ACE_Dragging_Drag", "", {[_player, _target] call FUNC(startDrag)}, {[_player, _target] call FUNC(canDrag)}] call EFUNC(interact_menu,createAction); -_dropAction = [QGVAR(drop), localize "STR_ACE_Dragging_Drop", "", {[_player, _target] call FUNC(dropObject)}, {[_player, _target] call FUNC(canDrop)}] call EFUNC(interact_menu,createAction); +_dragAction = [QGVAR(drag), localize STRING(Drag), "", {[_player, _target] call FUNC(startDrag)}, {[_player, _target] call FUNC(canDrag)}] call EFUNC(interact_menu,createAction); +_dropAction = [QGVAR(drop), localize STRING(Drop), "", {[_player, _target] call FUNC(dropObject)}, {[_player, _target] call FUNC(canDrop)}] call EFUNC(interact_menu,createAction); [_type, 0, ["ACE_MainActions"], _dragAction] call EFUNC(interact_menu,addActionToClass); [_type, 0, [], _dropAction] call EFUNC(interact_menu,addActionToClass); diff --git a/addons/dragging/functions/fnc_startCarry.sqf b/addons/dragging/functions/fnc_startCarry.sqf index f5d543c959..c259213a53 100644 --- a/addons/dragging/functions/fnc_startCarry.sqf +++ b/addons/dragging/functions/fnc_startCarry.sqf @@ -22,7 +22,7 @@ private "_weight"; _weight = [_target] call FUNC(getWeight); if (_weight > GETMVAR(ACE_maxWeightCarry,1E11)) exitWith { - [localize "STR_ACE_Dragging_UnableToDrag"] call EFUNC(common,displayTextStructured); + [localize STRING(UnableToDrag)] call EFUNC(common,displayTextStructured); }; private "_timer"; diff --git a/addons/dragging/functions/fnc_startDrag.sqf b/addons/dragging/functions/fnc_startDrag.sqf index 6ce3b73a5f..81ae9a34dc 100644 --- a/addons/dragging/functions/fnc_startDrag.sqf +++ b/addons/dragging/functions/fnc_startDrag.sqf @@ -22,7 +22,7 @@ private "_weight"; _weight = [_target] call FUNC(getWeight); if (_weight > GETMVAR(ACE_maxWeightDrag,1E11)) exitWith { - [localize "STR_ACE_Dragging_UnableToDrag"] call EFUNC(common,displayTextStructured); + [localize STRING(UnableToDrag)] call EFUNC(common,displayTextStructured); }; // add a primary weapon if the unit has none. diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index 52f70ea3af..1e1f9bd62e 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -5,26 +5,26 @@ class Module_F: Logic { class ACE_ModuleExplosive: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_Explosive_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); function = QUOTE(FUNC(module)); scope = 2; isGlobal = 1; icon = PATHTOF(UI\Icon_Module_Explosives_ca.paa); class Arguments { class RequireSpecialist { - displayName = "$STR_ACE_Explosive_RequireSpecialist_DisplayName"; - description = "$STR_ACE_Explosive_RequireSpecialist_Description"; + displayName = CSTRING(RequireSpecialist_DisplayName); + description = CSTRING(RequireSpecialist_Description); typeName = "BOOL"; defaultValue = 0; }; class PunishNonSpecialists { - displayName = "$STR_ACE_Explosive_PunishNonSpecialists_DisplayName"; - description = "$STR_ACE_Explosive_PunishNonSpecialists_Description"; + displayName = CSTRING(PunishNonSpecialists_DisplayName); + description = CSTRING(PunishNonSpecialists_Description); typeName = "BOOL"; defaultValue = 1; }; }; class ModuleDescription: ModuleDescription { - description = "$STR_ACE_Explosive_Module_Description"; + description = CSTRING(Module_Description); }; }; \ No newline at end of file diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index 30e1ff151d..3cc63fb36a 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -97,7 +97,7 @@ class CfgVehicles { condition = "true"; class ACE_SetTrigger { selection = ""; - displayName = "$STR_ACE_Explosives_TriggerMenu"; + displayName = CSTRING(TriggerMenu); distance = 4; condition = "true"; statement = ""; @@ -109,7 +109,7 @@ class CfgVehicles { }; class ACE_PickUp { selection = ""; - displayName = "$STR_ACE_Explosives_Pickup"; + displayName = CSTRING(Pickup); distance = 4; condition = "true"; statement = QUOTE([ARR_2(_player,_target getVariable QUOTE(QGVAR(class)))] call EFUNC(common,addToInventory);deleteVehicle _target;); diff --git a/addons/explosives/ExplosivesUI.hpp b/addons/explosives/ExplosivesUI.hpp index 6871f95f92..46fe2e9f85 100644 --- a/addons/explosives/ExplosivesUI.hpp +++ b/addons/explosives/ExplosivesUI.hpp @@ -215,7 +215,7 @@ class Rsc_ACE_PhoneInterface { y = 0.676 * safezoneH + safezoneY; w = 0.0309375 * safezoneW; h = 0.033 * safezoneH; - tooltip = "$STR_ACE_Explosives_Phone_AddToSpeedDial"; + tooltip = CSTRING(Phone_AddToSpeedDial); action = QUOTE([ARR_2(ctrlText 1401,ctrlText 1400)] call FUNC(addToSpeedDial);); }; class clear: Rsc_ACE_HiddenButton { @@ -224,7 +224,7 @@ class Rsc_ACE_PhoneInterface { y = 0.445 * safezoneH + safezoneY; w = 0.020625 * safezoneW; h = 0.033 * safezoneH; - tooltip = "$STR_ACE_Explosives_Clear"; + tooltip = CSTRING(Clear); action = QUOTE(ctrlSetText [ARR_2(1400,'')];[ctrlText 1401] call FUNC(removeFromSpeedDial);ctrlSetText [ARR_2(1401,'')];); }; class dial: Rsc_ACE_HiddenButton { @@ -233,7 +233,7 @@ class Rsc_ACE_PhoneInterface { y = 0.445 * safezoneH + safezoneY; w = 0.04125 * safezoneW; h = 0.033 * safezoneH; - tooltip = "$STR_ACE_Explosives_Phone_Dial"; + tooltip = CSTRING(Phone_Dial); action = QUOTE([ARR_2(ace_player,ctrlText 1400)] call FUNC(dialPhone);); }; class up: Rsc_ACE_HiddenButton { @@ -242,7 +242,7 @@ class Rsc_ACE_PhoneInterface { y = 0.445 * safezoneH + safezoneY; w = 0.020625 * safezoneW; h = 0.033 * safezoneH; - tooltip = "$STR_ACE_Explosives_Phone_Up"; + tooltip = CSTRING(Phone_Up); action = QUOTE([true] call FUNC(setSpeedDial)); }; class down: Rsc_ACE_HiddenButton { @@ -251,7 +251,7 @@ class Rsc_ACE_PhoneInterface { y = 0.485 * safezoneH + safezoneY; w = 0.020625 * safezoneW; h = 0.033 * safezoneH; - tooltip = "$STR_ACE_Explosives_Phone_Down"; + tooltip = CSTRING(Phone_Down); action = QUOTE([false] call FUNC(setSpeedDial)); }; class speedDial_Text: RscText { diff --git a/addons/explosives/functions/fnc_addClacker.sqf b/addons/explosives/functions/fnc_addClacker.sqf index b25c1e1bcd..14e8a41ba3 100644 --- a/addons/explosives/functions/fnc_addClacker.sqf +++ b/addons/explosives/functions/fnc_addClacker.sqf @@ -37,8 +37,8 @@ _config = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> co _clacker = _unit getVariable [QGVAR(Clackers), []]; GVAR(PlacedCount) = GVAR(PlacedCount) + 1; -_clacker pushBack [_explosive, getNumber(_config >> "FuseTime"), format [localize "STR_ACE_Explosives_DetonateCode", +_clacker pushBack [_explosive, getNumber(_config >> "FuseTime"), format [localize STRING(DetonateCode), GVAR(PlacedCount)], _magazineClass, configName ((_this select 3) select (count (_this select 3) - 1))]; _unit setVariable [QGVAR(Clackers), _clacker, true]; -_unit sideChat format [localize "STR_ACE_Explosives_DetonateCode", GVAR(PlacedCount)]; +_unit sideChat format [localize STRING(DetonateCode), GVAR(PlacedCount)]; diff --git a/addons/explosives/functions/fnc_openTimerSetUI.sqf b/addons/explosives/functions/fnc_openTimerSetUI.sqf index e37bef06e3..280dc55aaf 100644 --- a/addons/explosives/functions/fnc_openTimerSetUI.sqf +++ b/addons/explosives/functions/fnc_openTimerSetUI.sqf @@ -38,4 +38,4 @@ DFUNC(SetTimer) = { buttonSetAction [8860, QUOTE(call DFUNC(SetTimer);)]; buttonSetAction [8855, QUOTE(closeDialog 0;)]; -ctrlSetText [8870, format[localize "STR_ACE_Explosives_TimerMenu",0, 30]]; +ctrlSetText [8870, format[localize STRING(TimerMenu),0, 30]]; diff --git a/addons/explosives/functions/fnc_setupExplosive.sqf b/addons/explosives/functions/fnc_setupExplosive.sqf index a0aad3d1ab..d6840a28a1 100644 --- a/addons/explosives/functions/fnc_setupExplosive.sqf +++ b/addons/explosives/functions/fnc_setupExplosive.sqf @@ -41,8 +41,8 @@ GVAR(TweakedAngle) = 180; }; }] call CALLSTACK(BIS_fnc_addStackedEventHandler); -[localize "STR_ACE_Explosives_PlaceAction", localize "STR_ACE_Explosives_CancelAction", - localize "STR_ACE_Explosives_ScrollAction"] call EFUNC(interaction,showMouseHint); +[localize STRING(PlaceAction), localize STRING(CancelAction), + localize STRING(ScrollAction)] call EFUNC(interaction,showMouseHint); _unit setVariable [QGVAR(Place), [_unit, "DefaultAction", {GVAR(pfeh_running) AND !isNull (GVAR(Setup))}, {call FUNC(place_Approve);}] call EFUNC(common,AddActionEventHandler)]; _unit setVariable [QGVAR(Cancel), [_unit, "zoomtemp", diff --git a/addons/explosives/functions/fnc_startDefuse.sqf b/addons/explosives/functions/fnc_startDefuse.sqf index 11ca95f894..88fda230b1 100644 --- a/addons/explosives/functions/fnc_startDefuse.sqf +++ b/addons/explosives/functions/fnc_startDefuse.sqf @@ -59,6 +59,6 @@ if (ACE_player != _unit) then { _isEOD = [_unit] call EFUNC(Common,isEOD); _defuseTime = [_isEOD, _target] call _fnc_DefuseTime; if (_isEOD || {!GVAR(RequireSpecialist)}) then { - [_defuseTime, [_unit,_target], {(_this select 0) call FUNC(defuseExplosive)}, {}, (localize "STR_ACE_Explosives_DefusingExplosive")] call EFUNC(common,progressBar); + [_defuseTime, [_unit,_target], {(_this select 0) call FUNC(defuseExplosive)}, {}, (localize STRING(DefusingExplosive))] call EFUNC(common,progressBar); }; }; diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index 295137a6d3..601ea4afb5 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -208,5 +208,5 @@ if(_playSound) then { }; if(_showHint) then { - [format ["%1: %2", localize "STR_ACE_FCS_ZeroedTo", _distance]] call EFUNC(common,displayTextStructured); + [format ["%1: %2", localize STRING(ZeroedTo), _distance]] call EFUNC(common,displayTextStructured); }; \ No newline at end of file diff --git a/addons/fcs/functions/fnc_reset.sqf b/addons/fcs/functions/fnc_reset.sqf index a23a759fa3..1940228311 100644 --- a/addons/fcs/functions/fnc_reset.sqf +++ b/addons/fcs/functions/fnc_reset.sqf @@ -22,4 +22,4 @@ _turret = _this select 1; [_vehicle, format ["%1_%2", QGVAR(Elevation), _turret], 0] call EFUNC(common,setVariablePublic); [_vehicle, format ["%1_%2", QGVAR(Azimuth), _turret], 0] call EFUNC(common,setVariablePublic); -[localize "STR_ACE_FCS_HasBeenReset"] call EFUNC(common,displayTextStructured); +[localize STRING(HasBeenReset)] call EFUNC(common,displayTextStructured); diff --git a/addons/fcs/initKeybinds.sqf b/addons/fcs/initKeybinds.sqf index 96482ddd1c..ef9c2f5731 100644 --- a/addons/fcs/initKeybinds.sqf +++ b/addons/fcs/initKeybinds.sqf @@ -1,6 +1,6 @@ // by commy2 -["ACE3 Vehicles", QGVAR(lazeTarget), localize "STR_ACE_FCS_LaseTarget", +["ACE3 Vehicles", QGVAR(lazeTarget), localize STRING(LaseTarget), { // Conditions: canInteract if !([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -30,7 +30,7 @@ }, [15, [false, false, false]], false] call cba_fnc_addKeybind; //Tab Key -["ACE3 Vehicles", QGVAR(adjustRangeUp), localize "STR_ACE_FCS_AdjustRangeUp", +["ACE3 Vehicles", QGVAR(adjustRangeUp), localize STRING(AdjustRangeUp), { // Conditions: canInteract if !([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -44,7 +44,7 @@ {false}, [201, [false, false, false]], false] call cba_fnc_addKeybind; //PageUp Key -["ACE3 Vehicles", QGVAR(adjustRangDown), localize "STR_ACE_FCS_AdjustRangeDown", +["ACE3 Vehicles", QGVAR(adjustRangDown), localize STRING(AdjustRangeDown), { // Conditions: canInteract if !([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/flashsuppressors/CfgWeapons.hpp b/addons/flashsuppressors/CfgWeapons.hpp index c070ada18d..12ab5be2ab 100644 --- a/addons/flashsuppressors/CfgWeapons.hpp +++ b/addons/flashsuppressors/CfgWeapons.hpp @@ -239,7 +239,7 @@ class CfgWeapons { mFact = 1; tBody = 100; scope = 2; - displayName = "$STR_ACE_muzzle_mzls_H"; + displayName = CSTRING(muzzle_mzls_H); picture = "\A3\weapons_F\Data\UI\gear_acca_mzls_h_ca.paa"; model = "\A3\weapons_f\acc\acca_mzls_H_F"; @@ -285,7 +285,7 @@ class CfgWeapons { class ACE_muzzle_mzls_B: ACE_muzzle_mzls_H { author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_muzzle_mzls_B"; - displayName = "$STR_ACE_muzzle_mzls_B"; + displayName = CSTRING(muzzle_mzls_B); picture = "\A3\weapons_F\Data\UI\gear_acca_mzls_h_ca.paa"; model = "\A3\weapons_f\acc\acca_mzls_H_F"; @@ -331,7 +331,7 @@ class CfgWeapons { class ACE_muzzle_mzls_L: ACE_muzzle_mzls_H { author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_muzzle_mzls_L"; - displayName = "$STR_ACE_muzzle_mzls_L"; + displayName = CSTRING(muzzle_mzls_L); picture = "\A3\weapons_F\Data\UI\gear_acca_mzls_l_ca.paa"; model = "\A3\weapons_f\acc\acca_mzls_l_F"; @@ -377,7 +377,7 @@ class CfgWeapons { class ACE_muzzle_mzls_smg_01: ACE_muzzle_mzls_H { author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_muzzle_mzls_smg_01"; - displayName = "$STR_ACE_muzzle_mzls_smg_01"; + displayName = CSTRING(muzzle_mzls_smg_01); picture = "\A3\weapons_F\Data\UI\gear_acca_mzls_l_ca.paa"; model = "\A3\weapons_f\acc\acca_mzls_H_F"; //"\A3\weapons_f\acc\acca_mzls_smg_01_F"; @@ -423,7 +423,7 @@ class CfgWeapons { class ACE_muzzle_mzls_smg_02: ACE_muzzle_mzls_H { author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_muzzle_mzls_smg_02"; - displayName = "$STR_ACE_muzzle_mzls_smg_02"; + displayName = CSTRING(muzzle_mzls_smg_02); picture = "\A3\weapons_F\Data\UI\gear_acca_mzls_l_ca.paa"; model = "\A3\weapons_f\acc\acca_mzls_H_F"; //"\A3\weapons_f\acc\acca_mzls_smg_01_F"; @@ -469,7 +469,7 @@ class CfgWeapons { class ACE_muzzle_mzls_338: ACE_muzzle_mzls_H { author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_muzzle_mzls_338"; - displayName = "$STR_ACE_muzzle_mzls_338"; + displayName = CSTRING(muzzle_mzls_338); picture = "\A3\weapons_F\Data\UI\gear_acca_mzls_h_ca.paa"; model = "\A3\weapons_f\acc\acca_mzls_H_F"; @@ -515,7 +515,7 @@ class CfgWeapons { class ACE_muzzle_mzls_93mmg: ACE_muzzle_mzls_H { author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_muzzle_mzls_93mmg"; - displayName = "$STR_ACE_muzzle_mzls_93mmg"; + displayName = CSTRING(muzzle_mzls_93mmg); picture = "\A3\weapons_F\Data\UI\gear_acca_mzls_h_ca.paa"; model = "\A3\weapons_f\acc\acca_mzls_H_F"; diff --git a/addons/frag/ACE_Settings.hpp b/addons/frag/ACE_Settings.hpp index 5efba45057..84bba326f0 100644 --- a/addons/frag/ACE_Settings.hpp +++ b/addons/frag/ACE_Settings.hpp @@ -1,32 +1,32 @@ class ACE_Settings { class GVAR(Enabled) { - displayName = "$STR_ACE_frag_EnableFrag"; - description = "$STR_ACE_frag_EnableFrag_Desc"; + displayName = CSTRING(EnableFrag); + description = CSTRING(EnableFrag_Desc); typeName = "BOOL"; value = 1; }; class GVAR(SpallEnabled) { - displayName = "$STR_ACE_frag_EnableSpall"; - description = "$STR_ACE_frag_EnableSpall_Desc"; + displayName = CSTRING(EnableSpall); + description = CSTRING(EnableSpall_Desc); typeName = "BOOL"; value = 0; }; class GVAR(maxTrack) { - displayName = "$STR_ACE_frag_MaxTrack"; - description = "$STR_ACE_frag_MaxTrack_Desc"; + displayName = CSTRING(MaxTrack); + description = CSTRING(MaxTrack_Desc); typeName = "SCALAR"; value = 500; }; class GVAR(MaxTrackPerFrame) { - displayName = "$STR_ACE_frag_MaxTrackPerFrame"; - description = "$STR_ACE_frag_MaxTrackPerFrame_Desc"; + displayName = CSTRING(MaxTrackPerFrame); + description = CSTRING(MaxTrackPerFrame_Desc); typeName = "SCALAR"; value = 50; }; class GVAR(EnableDebugTrace) { - displayName = "$STR_ACE_frag_EnableDebugTrace"; - description = "$STR_ACE_frag_EnableDebugTrace_Desc"; + displayName = CSTRING(EnableDebugTrace); + description = CSTRING(EnableDebugTrace_Desc); typeName = "BOOL"; value = 0; }; diff --git a/addons/goggles/ACE_Settings.hpp b/addons/goggles/ACE_Settings.hpp index e25da3c274..6b3faa1823 100644 --- a/addons/goggles/ACE_Settings.hpp +++ b/addons/goggles/ACE_Settings.hpp @@ -3,6 +3,6 @@ class ACE_Settings { value = 0; typeName = "BOOL"; isClientSettable = 1; - displayName = "$STR_ACE_Goggles_ShowInThirdPerson"; + displayName = CSTRING(ShowInThirdPerson); }; }; diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf index a6fe7c415f..b9009fe8da 100644 --- a/addons/goggles/XEH_postInit.sqf +++ b/addons/goggles/XEH_postInit.sqf @@ -17,7 +17,7 @@ #include "script_component.hpp" if (!hasInterface) exitWith {}; -["ACE3 Common", QGVAR(wipeGlasses), localize "STR_ACE_Goggles_WipeGlasses", +["ACE3 Common", QGVAR(wipeGlasses), localize STRING(WipeGlasses), { if (!(GETVAR(ace_player,ACE_isUnconscious,false))) exitWith { call FUNC(clearGlasses); diff --git a/addons/grenades/CfgMagazines.hpp b/addons/grenades/CfgMagazines.hpp index 23eb4cb759..c90bba9d94 100644 --- a/addons/grenades/CfgMagazines.hpp +++ b/addons/grenades/CfgMagazines.hpp @@ -12,9 +12,9 @@ class CfgMagazines { author = "$STR_ACE_Common_ACETeam"; scope = 2; ammo = "ACE_F_Hand_White"; - displayname = "$STR_ACE_Grenades_M127A1_White_Name"; - descriptionshort = "$STR_ACE_Grenades_M127A1_White_Description"; - displayNameShort = "$STR_ACE_Grenades_M127A1_White_NameShort"; + displayname = CSTRING(M127A1_White_Name); + descriptionshort = CSTRING(M127A1_White_Description); + displayNameShort = CSTRING(M127A1_White_NameShort); model = "\A3\weapons_f\ammo\flare_white"; picture = "\A3\Weapons_F\Data\UI\gear_flare_white_ca.paa"; }; @@ -22,9 +22,9 @@ class CfgMagazines { author = "$STR_ACE_Common_ACETeam"; scope = 2; ammo = "ACE_F_Hand_Red"; - displayname = "$STR_ACE_Grenades_M127A1_Red_Name"; - descriptionshort = "$STR_ACE_Grenades_M127A1_Red_Description"; - displayNameShort = "$STR_ACE_Grenades_M127A1_Red_NameShort"; + displayname = CSTRING(M127A1_Red_Name); + descriptionshort = CSTRING(M127A1_Red_Description); + displayNameShort = CSTRING(M127A1_Red_NameShort); model = "\A3\weapons_f\ammo\flare_red"; picture = "\A3\Weapons_F\Data\UI\gear_flare_red_ca.paa"; }; @@ -32,9 +32,9 @@ class CfgMagazines { author = "$STR_ACE_Common_ACETeam"; scope = 2; ammo = "ACE_F_Hand_Green"; - displayname = "$STR_ACE_Grenades_M127A1_Green_Name"; - descriptionshort = "$STR_ACE_Grenades_M127A1_Green_Description"; - displayNameShort = "$STR_ACE_Grenades_M127A1_Green_NameShort"; + displayname = CSTRING(M127A1_Green_Name); + descriptionshort = CSTRING(M127A1_Green_Description); + displayNameShort = CSTRING(M127A1_Green_NameShort); model = "\A3\weapons_f\ammo\flare_green"; picture = "\A3\Weapons_F\Data\UI\gear_flare_green_ca.paa"; }; @@ -42,17 +42,17 @@ class CfgMagazines { author = "$STR_ACE_Common_ACETeam"; scope = 2; ammo = "ACE_F_Hand_Yellow"; - displayname = "$STR_ACE_Grenades_M127A1_Yellow_Name"; - descriptionshort = "$STR_ACE_Grenades_M127A1_Yellow_Description"; - displayNameShort = "$STR_ACE_Grenades_M127A1_Yellow_NameShort"; + displayname = CSTRING(M127A1_Yellow_Name); + descriptionshort = CSTRING(M127A1_Yellow_Description); + displayNameShort = CSTRING(M127A1_Yellow_NameShort); model = "\A3\weapons_f\ammo\flare_yellow"; picture = "\A3\Weapons_F\Data\UI\gear_flare_yellow_ca.paa"; }; class ACE_M84: HandGrenade { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_G_M84"; - displayname = "$STR_ACE_Grenades_M84_Name"; - descriptionshort = "$STR_ACE_Grenades_M84_Description"; + displayname = CSTRING(M84_Name); + descriptionshort = CSTRING(M84_Description); displayNameShort = "M84"; mass = 4; model = PATHTOF(models\ACE_m84.p3d); diff --git a/addons/grenades/XEH_postInit.sqf b/addons/grenades/XEH_postInit.sqf index 63516407f3..df4c7142f3 100644 --- a/addons/grenades/XEH_postInit.sqf +++ b/addons/grenades/XEH_postInit.sqf @@ -10,7 +10,7 @@ GVAR(flashbangPPEffectCC) = ppEffectCreate ["ColorCorrections", 4265]; GVAR(flashbangPPEffectCC) ppEffectForceInNVG true; // Add keybinds -["ACE3 Weapons", QGVAR(switchGrenadeMode), localize "STR_ACE_Grenades_SwitchGrenadeMode", +["ACE3 Weapons", QGVAR(switchGrenadeMode), localize STRING(SwitchGrenadeMode), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/grenades/functions/fnc_nextMode.sqf b/addons/grenades/functions/fnc_nextMode.sqf index 7663e790f6..cc895e7212 100644 --- a/addons/grenades/functions/fnc_nextMode.sqf +++ b/addons/grenades/functions/fnc_nextMode.sqf @@ -31,11 +31,11 @@ if (_mode == 3) then { }; _hint = [ -localize "STR_ACE_Grenades_NormalThrow", -localize "STR_ACE_Grenades_HighThrow", -localize "STR_ACE_Grenades_PreciseThrow", -localize "STR_ACE_Grenades_RollGrenade", -localize "STR_ACE_Grenades_DropGrenade" +localize STRING(NormalThrow), +localize STRING(HighThrow), +localize STRING(PreciseThrow), +localize STRING(RollGrenade), +localize STRING(DropGrenade) ] select _mode; [_hint] call EFUNC(common,displayTextStructured); diff --git a/addons/hearing/ACE_Settings.hpp b/addons/hearing/ACE_Settings.hpp index a196b4affc..c0f69dda65 100644 --- a/addons/hearing/ACE_Settings.hpp +++ b/addons/hearing/ACE_Settings.hpp @@ -15,6 +15,6 @@ class ACE_Settings { value = 0; typeName = "BOOL"; isClientSettable = 1; - displayName = "$STR_ACE_Hearing_DisableEarRinging"; + displayName = CSTRING(DisableEarRinging); }; }; diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index 16bb47014a..e5cf6968c7 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -4,7 +4,7 @@ class CfgVehicles { class ACE_SelfActions { class ACE_Equipment { class ACE_PutInEarplugs { - displayName = "$STR_ACE_Hearing_EarPlugs_On"; + displayName = CSTRING(EarPlugs_On); condition = QUOTE( !([_player] call FUNC(hasEarPlugsIn)) && {'ACE_EarPlugs' in items _player} ); exceptions[] = {"isNotInside"}; statement = QUOTE( [_player] call FUNC(putInEarPlugs) ); @@ -14,7 +14,7 @@ class CfgVehicles { hotkey = "E"; }; class ACE_RemoveEarplugs { - displayName = "$STR_ACE_Hearing_EarPlugs_Off"; + displayName = CSTRING(EarPlugs_Off); condition = QUOTE( [_player] call FUNC(hasEarPlugsIn) ); exceptions[] = {"isNotInside"}; statement = QUOTE( [_player] call FUNC(removeEarPlugs) ); @@ -98,21 +98,21 @@ class CfgVehicles { class ACE_ModuleHearing: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_Hearing_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); function = QFUNC(moduleHearing); scope = 2; isGlobal = 1; icon = PATHTOF(UI\Icon_Module_Hearing_ca.paa); class Arguments { class EnableCombatDeafness { - displayName = "$STR_ACE_Hearing_CombatDeafness_DisplayName"; - description = "$STR_ACE_Hearing_CombatDeafness_Description"; + displayName = CSTRING(CombatDeafness_DisplayName); + description = CSTRING(CombatDeafness_Description); typeName = "BOOL"; defaultValue = 1; }; }; class ModuleDescription { - description = "$STR_ACE_Hearing_Module_Description"; + description = CSTRING(Module_Description); }; }; }; diff --git a/addons/hearing/CfgWeapons.hpp b/addons/hearing/CfgWeapons.hpp index e70cc62c25..11ad91f658 100644 --- a/addons/hearing/CfgWeapons.hpp +++ b/addons/hearing/CfgWeapons.hpp @@ -3,8 +3,8 @@ class CfgWeapons { class InventoryItem_Base_F; class ACE_EarPlugs: ACE_ItemCore { - displayName = "$STR_ACE_Hearing_EarPlugs_Name"; - descriptionShort = "$STR_ACE_Hearing_EarPlugs_Description"; + displayName = CSTRING(EarPlugs_Name); + descriptionShort = CSTRING(EarPlugs_Description); model = PATHTOF(ACE_earplugs.p3d); picture = PATHTOF(UI\ACE_earplugs_x_ca.paa); scope = 2; diff --git a/addons/hearing/functions/fnc_putInEarplugs.sqf b/addons/hearing/functions/fnc_putInEarplugs.sqf index b02a19d5bc..7a6a7a06bc 100644 --- a/addons/hearing/functions/fnc_putInEarplugs.sqf +++ b/addons/hearing/functions/fnc_putInEarplugs.sqf @@ -22,7 +22,7 @@ _player removeItem "ACE_EarPlugs"; _player setVariable ["ACE_hasEarPlugsIn", true, true]; -[localize "STR_ACE_Hearing_EarPlugs_Are_On"] call EFUNC(common,displayTextStructured); +[localize STRING(EarPlugs_Are_On)] call EFUNC(common,displayTextStructured); /*// No Ear Plugs in inventory, telling user -[localize "STR_ACE_Hearing_NoPlugs"] call EFUNC(common,displayTextStructured);*/ +[localize STRING(NoPlugs)] call EFUNC(common,displayTextStructured);*/ diff --git a/addons/hearing/functions/fnc_removeEarplugs.sqf b/addons/hearing/functions/fnc_removeEarplugs.sqf index e2d0b68d51..d30f5565c4 100644 --- a/addons/hearing/functions/fnc_removeEarplugs.sqf +++ b/addons/hearing/functions/fnc_removeEarplugs.sqf @@ -18,7 +18,7 @@ PARAMS_1(_player); if !(_player canAdd "ACE_EarPlugs") exitWith { // inventory full - [localize "STR_ACE_Hearing_Inventory_Full"] call EFUNC(common,displayTextStructured); + [localize STRING(Inventory_Full)] call EFUNC(common,displayTextStructured); }; // Plugs already in and removing them. @@ -26,4 +26,4 @@ _player addItem "ACE_EarPlugs"; _player setVariable ["ACE_hasEarPlugsIn", false, true]; -[localize "STR_ACE_Hearing_EarPlugs_Are_Off"] call EFUNC(common,displayTextStructured); +[localize STRING(EarPlugs_Are_Off)] call EFUNC(common,displayTextStructured); diff --git a/addons/interact_menu/ACE_Settings.hpp b/addons/interact_menu/ACE_Settings.hpp index 19347b0d6d..84aee6a60d 100644 --- a/addons/interact_menu/ACE_Settings.hpp +++ b/addons/interact_menu/ACE_Settings.hpp @@ -3,70 +3,70 @@ class ACE_Settings { value = 0; typeName = "BOOL"; isClientSettable = 1; - displayName = "$STR_ACE_Interact_Menu_AlwaysUseCursorSelfInteraction"; + displayName = CSTRING(AlwaysUseCursorSelfInteraction); }; class GVAR(cursorKeepCentered) { value = 0; typeName = "BOOL"; isClientSettable = 1; - displayName = "$STR_ACE_Interact_cursorKeepCentered"; - description = "$STR_ACE_Interact_cursorKeepCenteredDescription"; + displayName = CSTRING(cursorKeepCentered); + description = CSTRING(cursorKeepCenteredDescription); }; class GVAR(AlwaysUseCursorInteraction) { value = 0; typeName = "BOOL"; isClientSettable = 1; - displayName = "$STR_ACE_Interact_Menu_AlwaysUseCursorInteraction"; + displayName = CSTRING(AlwaysUseCursorInteraction); }; class GVAR(UseListMenu) { value = 0; typeName = "BOOL"; isClientSettable = 1; - displayName = "$STR_ACE_Interact_Menu_UseListMenu"; + displayName = CSTRING(UseListMenu); }; class GVAR(colorTextMax) { value[] = {1, 1, 1, 1}; typeName = "COLOR"; isClientSettable = 1; - displayName = "$STR_ACE_Interact_Menu_ColorTextMax"; + displayName = CSTRING(ColorTextMax); }; class GVAR(colorTextMin) { value[] = {1, 1, 1, 0.25}; typeName = "COLOR"; isClientSettable = 1; - displayName = "$STR_ACE_Interact_Menu_ColorTextMin"; + displayName = CSTRING(ColorTextMin); }; class GVAR(colorShadowMax) { value[] = {0, 0, 0, 1}; typeName = "COLOR"; isClientSettable = 1; - displayName = "$STR_ACE_Interact_Menu_ColorShadowMax"; + displayName = CSTRING(ColorShadowMax); }; class GVAR(colorShadowMin) { value[] = {0, 0, 0, 0.25}; typeName = "COLOR"; isClientSettable = 1; - displayName = "$STR_ACE_Interact_Menu_ColorShadowMin"; + displayName = CSTRING(ColorShadowMin); }; class GVAR(textSize) { value = 2; typeName = "SCALAR"; isClientSettable = 1; - displayName = "$STR_ACE_Interact_textSize"; + displayName = CSTRING(textSize); values[] = {"$str_very_small", "$str_small", "$str_medium", "$str_large", "$str_very_large"}; }; class GVAR(shadowSetting) { value = 2; typeName = "SCALAR"; isClientSettable = 1; - displayName = "$STR_ACE_Interact_shadowSetting"; - description = "$STR_ACE_Interact_shadowSettingDescription"; - values[] = {"$STR_A3_OPTIONS_DISABLED", "$STR_A3_OPTIONS_ENABLED", "$STR_ACE_Interact_shadowOutline"}; + displayName = CSTRING(shadowSetting); + description = CSTRING(shadowSettingDescription); + values[] = {"$STR_A3_OPTIONS_DISABLED", "$STR_A3_OPTIONS_ENABLED", STRING(shadowOutline)}; }; class GVAR(actionOnKeyRelease) { value = 1; typeName = "BOOL"; isClientSettable = 1; - displayName = "$STR_ACE_Interact_Menu_ActionOnKeyRelease"; + displayName = CSTRING(ActionOnKeyRelease); }; }; diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index bbd2b74263..ea83c44d1c 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -28,7 +28,7 @@ addMissionEventHandler ["Draw3D", DFUNC(render)]; }; -["ACE3 Common", QGVAR(InteractKey), (localize "STR_ACE_Interact_Menu_InteractKey"), +["ACE3 Common", QGVAR(InteractKey), (localize STRING(InteractKey)), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -37,7 +37,7 @@ addMissionEventHandler ["Draw3D", DFUNC(render)]; },{[0,false] call FUNC(keyUp)}, [219, [false, false, false]], false] call cba_fnc_addKeybind; //Left Windows Key -["ACE3 Common", QGVAR(SelfInteractKey), (localize "STR_ACE_Interact_Menu_SelfInteractKey"), +["ACE3 Common", QGVAR(SelfInteractKey), (localize STRING(SelfInteractKey)), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf index 7e53588325..cc254f1caf 100644 --- a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf @@ -87,12 +87,12 @@ private ["_baseDisplayName", "_baseIcon"]; _baseDisplayName = ""; _baseIcon = ""; if (_objectType isKindOf "CAManBase") then { - _baseDisplayName = localize "STR_ACE_Interact_Menu_SelfActionsRoot"; + _baseDisplayName = localize STRING(SelfActionsRoot); _baseIcon = "\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa"; } else { _baseDisplayName = getText (configFile >> "CfgVehicles" >> _objectType >> "displayName"); //Alt would be to just use a static text, if veh names end up being too long: - // _baseDisplayName = localize "STR_ACE_Interact_Menu_VehicleActionsRoot"; + // _baseDisplayName = localize STRING(VehicleActionsRoot); //Pull the icon from the vehicle's config: _baseIcon = getText (configFile >> "CfgVehicles" >> _objectType >> "Icon"); diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 804aba1100..f1572d6367 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -4,21 +4,21 @@ class CfgVehicles { class ACE_ModuleInteraction: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_InteractionSystem_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); function = "ACE_Interaction_fnc_moduleInteraction"; scope = 2; isGlobal = 1; icon = PATHTOF(UI\Icon_Module_Interaction_ca.paa); class Arguments { class EnableTeamManagement { - displayName = "$STR_ACE_InteractionSystem_EnableTeamManagement_DisplayName"; - description = "$STR_ACE_InteractionSystem_EnableTeamManagement_Description"; + displayName = CSTRING(EnableTeamManagement_DisplayName); + description = CSTRING(EnableTeamManagement_Description); typeName = "BOOL"; defaultValue = 1; }; }; class ModuleDescription { - description = "$STR_ACE_InteractionSystem_Module_Description"; + description = CSTRING(Module_Description); }; }; @@ -26,7 +26,7 @@ class CfgVehicles { class CAManBase: Man { class ACE_Actions { class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; + displayName = CSTRING(MainAction); distance = 4; condition = QUOTE(true); statement = ""; @@ -34,7 +34,7 @@ class CfgVehicles { selection = "pelvis"; class ACE_TeamManagement { - displayName = "$STR_ACE_Interaction_TeamManagement"; + displayName = CSTRING(TeamManagement); condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam) && {GVAR(EnableTeamManagement)}); statement = ""; showDisabled = 0; @@ -43,7 +43,7 @@ class CfgVehicles { hotkey = "M"; class ACE_AssignTeamRed { - displayName = "$STR_ACE_Interaction_AssignTeamRed"; + displayName = CSTRING(AssignTeamRed); condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); statement = QUOTE([ARR_2(_target,'RED')] call DFUNC(joinTeam)); showDisabled = 1; @@ -52,7 +52,7 @@ class CfgVehicles { hotkey = "R"; }; class ACE_AssignTeamGreen { - displayName = "$STR_ACE_Interaction_AssignTeamGreen"; + displayName = CSTRING(AssignTeamGreen); condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); statement = QUOTE([ARR_2(_target,'GREEN')] call DFUNC(joinTeam)); showDisabled = 1; @@ -61,7 +61,7 @@ class CfgVehicles { hotkey = "G"; }; class ACE_AssignTeamBlue { - displayName = "$STR_ACE_Interaction_AssignTeamBlue"; + displayName = CSTRING(AssignTeamBlue); condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); statement = QUOTE([ARR_2(_target,'BLUE')] call DFUNC(joinTeam)); showDisabled = 1; @@ -70,7 +70,7 @@ class CfgVehicles { hotkey = "B"; }; class ACE_AssignTeamYellow { - displayName = "$STR_ACE_Interaction_AssignTeamYellow"; + displayName = CSTRING(AssignTeamYellow); condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); statement = QUOTE([ARR_2(_target,'YELLOW')] call DFUNC(joinTeam)); showDisabled = 1; @@ -80,7 +80,7 @@ class CfgVehicles { }; class ACE_UnassignTeam { - displayName = "$STR_ACE_Interaction_LeaveTeam"; + displayName = CSTRING(LeaveTeam); condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam) && {assignedTeam _target != 'MAIN'}); statement = QUOTE([ARR_2(_target,'MAIN')] call DFUNC(joinTeam)); showDisabled = 1; @@ -91,7 +91,7 @@ class CfgVehicles { }; class ACE_JoinGroup { - displayName = "$STR_ACE_Interaction_JoinGroup"; + displayName = CSTRING(JoinGroup); condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinGroup)); statement = QUOTE([_player] joinSilent group _target); showDisabled = 0; @@ -101,21 +101,21 @@ class CfgVehicles { }; class ACE_GetDown { - displayName = "$STR_ACE_Interaction_GetDown"; + displayName = CSTRING(GetDown); condition = QUOTE([_target] call DFUNC(canInteractWithCivilian)); statement = QUOTE([_target] call DFUNC(getDown)); showDisabled = 0; priority = 2.2; }; class ACE_SendAway { - displayName = "$STR_ACE_Interaction_SendAway"; + displayName = CSTRING(SendAway); condition = QUOTE([_target] call DFUNC(canInteractWithCivilian)); statement = QUOTE([_target] call DFUNC(sendAway)); showDisabled = 0; priority = 2.0; }; class ACE_Pardon { - displayName = "$STR_ACE_Interaction_Pardon"; + displayName = CSTRING(Pardon); condition = QUOTE(rating _target < -2000 && {alive _target} && {side group _player == side group _target}); statement = QUOTE([ARR_3(_target,'{_this addRating -rating _this}',_target)] call DEFUNC(common,execRemoteFnc)); showDisabled = 0; @@ -123,49 +123,49 @@ class CfgVehicles { }; }; class ACE_Torso { - displayName = "$STR_ACE_Interaction_Torso"; + displayName = CSTRING(Torso); selection = "spine3"; distance = 1.50; condition = ""; statement = ""; }; class ACE_Head { - displayName = "$STR_ACE_Interaction_Head"; + displayName = CSTRING(Head); selection = "pilot"; distance = 1.50; condition = ""; statement = ""; }; class ACE_ArmLeft { - displayName = "$STR_ACE_Interaction_ArmLeft"; + displayName = CSTRING(ArmLeft); selection = "LeftForeArm"; distance = 1.50; condition = ""; statement = ""; }; class ACE_ArmRight { - displayName = "$STR_ACE_Interaction_ArmRight"; + displayName = CSTRING(ArmRight); selection = "RightForeArm"; distance = 1.50; condition = ""; statement = ""; }; class ACE_LegLeft { - displayName = "$STR_ACE_Interaction_LegLeft"; + displayName = CSTRING(LegLeft); selection = "LKnee"; distance = 1.50; condition = ""; statement = ""; }; class ACE_LegRight { - displayName = "$STR_ACE_Interaction_LegRight"; + displayName = CSTRING(LegRight); selection = "RKnee"; distance = 1.50; condition = ""; statement = ""; }; class ACE_Weapon { - displayName = "$STR_ACE_Interaction_Weapon"; + displayName = CSTRING(Weapon); position = QUOTE(call FUNC(getWeaponPos)); distance = 1.50; condition = ""; @@ -173,14 +173,14 @@ class CfgVehicles { }; class ACE_TapShoulderRight { - displayName = "$STR_ACE_Interaction_TapShoulder"; + displayName = CSTRING(TapShoulder); selection = "rightshoulder"; distance = 2.0; condition = QUOTE([ARR_2(_player, _target)] call DFUNC(canTapShoulder)); statement = QUOTE([ARR_3(_player, _target, 0)] call DFUNC(tapShoulder)); }; class ACE_TapShoulderLeft { - displayName = "$STR_ACE_Interaction_TapShoulder"; + displayName = CSTRING(TapShoulder); selection = "leftshoulder"; distance = 2.0; condition = QUOTE([ARR_2(_player, _target)] call DFUNC(canTapShoulder)); @@ -190,7 +190,7 @@ class CfgVehicles { class ACE_SelfActions { class ACE_TeamManagement { - displayName = "$STR_ACE_Interaction_TeamManagement"; + displayName = CSTRING(TeamManagement); condition = QUOTE(GVAR(EnableTeamManagement)); exceptions[] = {"isNotInside"}; statement = ""; @@ -200,7 +200,7 @@ class CfgVehicles { hotkey = "M"; class ACE_JoinTeamRed { - displayName = "$STR_ACE_Interaction_JoinTeamRed"; + displayName = CSTRING(JoinTeamRed); condition = QUOTE(true); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_2(_player,'RED')] call DFUNC(joinTeam)); @@ -210,7 +210,7 @@ class CfgVehicles { hotkey = "R"; }; class ACE_JoinTeamGreen { - displayName = "$STR_ACE_Interaction_JoinTeamGreen"; + displayName = CSTRING(JoinTeamGreen); condition = QUOTE(true); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_2(_player,'GREEN')] call DFUNC(joinTeam)); @@ -220,7 +220,7 @@ class CfgVehicles { hotkey = "G"; }; class ACE_JoinTeamBlue { - displayName = "$STR_ACE_Interaction_JoinTeamBlue"; + displayName = CSTRING(JoinTeamBlue); condition = QUOTE(true); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_2(_player,'BLUE')] call DFUNC(joinTeam)); @@ -230,7 +230,7 @@ class CfgVehicles { hotkey = "B"; }; class ACE_JoinTeamYellow { - displayName = "$STR_ACE_Interaction_JoinTeamYellow"; + displayName = CSTRING(JoinTeamYellow); condition = QUOTE(true); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_2(_player,'YELLOW')] call DFUNC(joinTeam)); @@ -241,7 +241,7 @@ class CfgVehicles { }; class ACE_LeaveTeam { - displayName = "$STR_ACE_Interaction_LeaveTeam"; + displayName = CSTRING(LeaveTeam); condition = QUOTE(assignedTeam _player != 'MAIN'); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_2(_player,'MAIN')] call DFUNC(joinTeam)); @@ -251,7 +251,7 @@ class CfgVehicles { hotkey = "N"; }; class ACE_BecomeLeader { - displayName = "$STR_ACE_Interaction_BecomeLeader"; + displayName = CSTRING(BecomeLeader); condition = QUOTE(_this call DFUNC(canBecomeLeader)); exceptions[] = {"isNotInside"}; statement = QUOTE(_this call DFUNC(doBecomeLeader)); @@ -261,7 +261,7 @@ class CfgVehicles { hotkey = "L"; }; class ACE_LeaveGroup { - displayName = "$STR_ACE_Interaction_LeaveGroup"; + displayName = CSTRING(LeaveGroup); condition = QUOTE(count (units group _player) > 1); exceptions[] = {"isNotInside"}; statement = QUOTE(_oldGroup = units group _player; _newGroup = createGroup side _player; [_player] joinSilent _newGroup; {_player reveal _x} forEach _oldGroup;); @@ -273,7 +273,7 @@ class CfgVehicles { }; class ACE_Gestures { - displayName = "$STR_ACE_Interaction_Gestures"; + displayName = CSTRING(Gestures); condition = "canStand _target"; statement = ""; showDisabled = 1; @@ -282,14 +282,14 @@ class CfgVehicles { hotkey = "G"; /*class ACE_Gesture_Advance { - displayName = "$STR_ACE_Interaction_Gestures_Attack"; + displayName = CSTRING(Gestures_Attack); condition = "canStand _target"; statement = "_target playActionNow 'gestureAttack';"; showDisabled = 1; priority = 2.0; };*/ class ACE_Gesture_Advance { - displayName = "$STR_ACE_Interaction_Gestures_Advance"; + displayName = CSTRING(Gestures_Advance); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow 'gestureAdvance';); showDisabled = 1; @@ -297,7 +297,7 @@ class CfgVehicles { hotkey = "1"; }; class ACE_Gesture_Go { - displayName = "$STR_ACE_Interaction_Gestures_Go"; + displayName = CSTRING(Gestures_Go); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow ([ARR_2('gestureGo','gestureGoB')] select floor random 2);); showDisabled = 1; @@ -305,7 +305,7 @@ class CfgVehicles { hotkey = "2"; }; class ACE_Gesture_Follow { - displayName = "$STR_ACE_Interaction_Gestures_Follow"; + displayName = CSTRING(Gestures_Follow); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow 'gestureFollow';); showDisabled = 1; @@ -313,14 +313,14 @@ class CfgVehicles { hotkey = "3"; }; /*class ACE_Gesture_Point { - displayName = "$STR_ACE_Interaction_Gestures_Point"; + displayName = CSTRING(Gestures_Point); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow 'gesturePoint';); showDisabled = 1; priority = 1.6; };*/ class ACE_Gesture_Up { - displayName = "$STR_ACE_Interaction_Gestures_Up"; + displayName = CSTRING(Gestures_Up); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow 'gestureUp';); showDisabled = 1; @@ -328,7 +328,7 @@ class CfgVehicles { hotkey = "4"; }; class ACE_Gesture_Cover { - displayName = "$STR_ACE_Interaction_Gestures_Cover"; + displayName = CSTRING(Gestures_Cover); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow 'gestureCover';); showDisabled = 1; @@ -336,7 +336,7 @@ class CfgVehicles { hotkey = "5"; }; class ACE_Gesture_CeaseFire { - displayName = "$STR_ACE_Interaction_Gestures_Cease_Fire"; + displayName = CSTRING(Gestures_Cease_Fire); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow 'gestureCeaseFire';); showDisabled = 1; @@ -344,7 +344,7 @@ class CfgVehicles { hotkey = "6"; }; class ACE_Gesture_Freeze { - displayName = "$STR_ACE_Interaction_Gestures_Freeze"; + displayName = CSTRING(Gestures_Freeze); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow 'gestureFreeze';); showDisabled = 1; @@ -352,7 +352,7 @@ class CfgVehicles { hotkey = "7"; }; class ACE_Gesture_Yes { - displayName = "$STR_ACE_Interaction_Gestures_Yes"; + displayName = CSTRING(Gestures_Yes); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow ([ARR_2('gestureYes','gestureNod')] select floor random 2);); showDisabled = 1; @@ -360,7 +360,7 @@ class CfgVehicles { hotkey = "8"; }; class ACE_Gesture_No { - displayName = "$STR_ACE_Interaction_Gestures_No"; + displayName = CSTRING(Gestures_No); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow 'gestureNo';); showDisabled = 1; @@ -368,7 +368,7 @@ class CfgVehicles { hotkey = "9"; }; class ACE_Gesture_Hi { - displayName = "$STR_ACE_Interaction_Gestures_Hi"; + displayName = CSTRING(Gestures_Hi); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow ([ARR_3('gestureHi','gestureHiB','gestureHiC')] select floor random 3);); showDisabled = 1; @@ -378,7 +378,7 @@ class CfgVehicles { }; class ACE_Equipment { - displayName = "$STR_ACE_Interaction_Equipment"; + displayName = CSTRING(Equipment); condition = QUOTE(true); exceptions[] = {"isNotInside","notOnMap"}; statement = ""; @@ -394,12 +394,12 @@ class CfgVehicles { class Car: LandVehicle { class ACE_Actions { class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; + displayName = CSTRING(MainAction); selection = ""; distance = 10; condition = "true"; class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; + displayName = CSTRING(Passengers); condition = "true"; statement = ""; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -408,7 +408,7 @@ class CfgVehicles { }; class ACE_SelfActions { class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; + displayName = CSTRING(Passengers); condition = "true"; statement = ""; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -418,12 +418,12 @@ class CfgVehicles { class Tank: LandVehicle { class ACE_Actions { class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; + displayName = CSTRING(MainAction); selection = ""; distance = 10; condition = "true"; class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; + displayName = CSTRING(Passengers); condition = "true"; statement = ""; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -432,7 +432,7 @@ class CfgVehicles { }; class ACE_SelfActions { class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; + displayName = CSTRING(Passengers); condition = "true"; statement = ""; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -444,12 +444,12 @@ class CfgVehicles { class Helicopter: Air { class ACE_Actions { class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; + displayName = CSTRING(MainAction); selection = ""; distance = 10; condition = "true"; class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; + displayName = CSTRING(Passengers); condition = "true"; statement = ""; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -458,7 +458,7 @@ class CfgVehicles { }; class ACE_SelfActions { class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; + displayName = CSTRING(Passengers); condition = "true"; statement = ""; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -468,12 +468,12 @@ class CfgVehicles { class Plane: Air { class ACE_Actions { class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; + displayName = CSTRING(MainAction); selection = ""; distance = 10; condition = "true"; class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; + displayName = CSTRING(Passengers); condition = "true"; statement = ""; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -482,7 +482,7 @@ class CfgVehicles { }; class ACE_SelfActions { class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; + displayName = CSTRING(Passengers); condition = "true"; statement = ""; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -494,13 +494,13 @@ class CfgVehicles { class Ship_F: Ship { class ACE_Actions { class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; + displayName = CSTRING(MainAction); selection = ""; distance = 10; condition = "true"; class ACE_Push { - displayName = "$STR_ACE_Interaction_Push"; + displayName = CSTRING(Push); distance = 6; condition = QUOTE(getMass _target < 1000 && {alive _target}); statement = QUOTE([ARR_2(_target, [ARR_3(2 * (vectorDir _player select 0), 2 * (vectorDir _player select 1), 0.5)])] call DFUNC(push);); @@ -508,7 +508,7 @@ class CfgVehicles { priority = -1; }; class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; + displayName = CSTRING(Passengers); condition = "true"; statement = ""; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -517,7 +517,7 @@ class CfgVehicles { }; class ACE_SelfActions { class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; + displayName = CSTRING(Passengers); condition = "true"; statement = ""; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -528,12 +528,12 @@ class CfgVehicles { class StaticWeapon: LandVehicle { class ACE_Actions { class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; + displayName = CSTRING(MainAction); selection = "gunnerview"; distance = 2; condition = "true"; class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; + displayName = CSTRING(Passengers); condition = "true"; statement = ""; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -542,7 +542,7 @@ class CfgVehicles { }; class ACE_SelfActions { class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; + displayName = CSTRING(Passengers); condition = "true"; statement = ""; insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); @@ -554,7 +554,7 @@ class CfgVehicles { class ReammoBox_F: thingX { class ACE_Actions { class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; + displayName = CSTRING(MainAction); selection = ""; distance = 2; condition = "true"; diff --git a/addons/interaction/XEH_postInit.sqf b/addons/interaction/XEH_postInit.sqf index e5b2e99291..3a4ddf1336 100644 --- a/addons/interaction/XEH_postInit.sqf +++ b/addons/interaction/XEH_postInit.sqf @@ -23,7 +23,7 @@ private ["_team"]; // Add keybinds -["ACE3 Common", QGVAR(openDoor), localize "STR_ACE_Interaction_OpenDoor", +["ACE3 Common", QGVAR(openDoor), localize STRING(OpenDoor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -43,7 +43,7 @@ private ["_team"]; [57, [false, true, false]], false] call cba_fnc_addKeybind; //Key CTRL+Space -["ACE3 Common", QGVAR(tapShoulder), localize "STR_ACE_Interaction_TapShoulder", +["ACE3 Common", QGVAR(tapShoulder), localize STRING(TapShoulder), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -57,7 +57,7 @@ private ["_team"]; {false}, [20, [true, false, false]], false] call cba_fnc_addKeybind; -["ACE3 Common", QGVAR(modifierKey), localize "STR_ACE_Interaction_ModifierKey", +["ACE3 Common", QGVAR(modifierKey), localize STRING(ModifierKey), { // Conditions: canInteract //if !([ACE_player, objNull, ["isNotDragging"]] call EFUNC(common,canInteractWith)) exitWith {false}; // not needed diff --git a/addons/interaction/functions/fnc_joinTeam.sqf b/addons/interaction/functions/fnc_joinTeam.sqf index cd2ea8c880..628ed3b936 100644 --- a/addons/interaction/functions/fnc_joinTeam.sqf +++ b/addons/interaction/functions/fnc_joinTeam.sqf @@ -25,10 +25,10 @@ _unit setVariable [QGVAR(assignedFireTeam), _team, true]; if (_unit == ACE_player) then { _message = if (_team == "MAIN") then { - localize "STR_ACE_Interaction_LeftTeam"; + localize STRING(LeftTeam); } else { - _team = localize format ["STR_ACE_Interaction_Team%1", _team]; - format [localize "STR_ACE_Interaction_JoinedTeam", _team]; + _team = localize format [STRING(Team%1), _team]; + format [localize STRING(JoinedTeam), _team]; }; [_message] call EFUNC(common,displayTextStructured); diff --git a/addons/interaction/functions/fnc_openMenuSelectUI.sqf b/addons/interaction/functions/fnc_openMenuSelectUI.sqf index e1b6a30df1..cdcf632208 100644 --- a/addons/interaction/functions/fnc_openMenuSelectUI.sqf +++ b/addons/interaction/functions/fnc_openMenuSelectUI.sqf @@ -29,7 +29,7 @@ if !(_unit in _cargo) exitWith {}; GVAR(InteractionMenu_Crew) = _cargo; // Prepare: add header and "OK" button to select menu -_actions = [localize "STR_ACE_Interaction_InteractionMenu", localize "STR_ACE_Interaction_Interact"] call FUNC(prepareSelectMenu); +_actions = [localize STRING(InteractionMenu), localize STRING(Interact)] call FUNC(prepareSelectMenu); // Prepare: add all cargo units as options to select menu { diff --git a/addons/interaction/functions/fnc_prepareSelectMenu.sqf b/addons/interaction/functions/fnc_prepareSelectMenu.sqf index 07bef07b37..2353488e31 100644 --- a/addons/interaction/functions/fnc_prepareSelectMenu.sqf +++ b/addons/interaction/functions/fnc_prepareSelectMenu.sqf @@ -21,7 +21,7 @@ PARAMS_2(_header,_buttonText); closeDialog 0; if (isNil "_buttonText" or {_buttonText == ""}) then { - _buttonText = localize "STR_ACE_Interaction_MakeSelection"; + _buttonText = localize STRING(MakeSelection); }; createDialog "RscACE_SelectAnItem"; diff --git a/addons/interaction/functions/fnc_tapShoulder.sqf b/addons/interaction/functions/fnc_tapShoulder.sqf index 23391651cc..747afddf7e 100644 --- a/addons/interaction/functions/fnc_tapShoulder.sqf +++ b/addons/interaction/functions/fnc_tapShoulder.sqf @@ -32,9 +32,9 @@ addCamShake [4, 0.5, 5]; private ["_message"]; //localize is converting the escaped <> symbols, so just add them here instead of in the stringtable if (_shoulderNum == 0) then { - _message = format ["%1 >", (localize "STR_ACE_Interaction_YouWereTappedRight")]; + _message = format ["%1 >", (localize STRING(YouWereTappedRight))]; } else { - _message = format ["< %1", (localize "STR_ACE_Interaction_YouWereTappedLeft")]; + _message = format ["< %1", (localize STRING(YouWereTappedLeft))]; }; [parseText _message] call EFUNC(common,displayTextStructured); diff --git a/addons/inventory/ACE_Settings.hpp b/addons/inventory/ACE_Settings.hpp index 9e1b7fc15a..87f2b59550 100644 --- a/addons/inventory/ACE_Settings.hpp +++ b/addons/inventory/ACE_Settings.hpp @@ -3,8 +3,8 @@ class ACE_Settings { value = 0; typeName = "SCALAR"; isClientSettable = 1; - displayName = "$STR_ACE_Inventory_SettingName"; - description = "$STR_ACE_Inventory_SettingDescription"; + displayName = CSTRING(SettingName); + description = CSTRING(SettingDescription); values[] = {"$str_medium", "$str_large", "$str_very_large"}; }; }; \ No newline at end of file diff --git a/addons/javelin/initKeybinds.sqf b/addons/javelin/initKeybinds.sqf index 2c095b93fc..c164073b30 100644 --- a/addons/javelin/initKeybinds.sqf +++ b/addons/javelin/initKeybinds.sqf @@ -1,6 +1,6 @@ // by commy2 -["ACE3 Weapons", QGVAR(lockTarget), localize "STR_ACE_JAVELIN_LockTarget", +["ACE3 Weapons", QGVAR(lockTarget), localize STRING(LockTarget), { if (GETGVAR(isLockKeyDown,false)) exitWith {false}; @@ -21,7 +21,7 @@ }, [15, [false, false, false]], false] call cba_fnc_addKeybind; //Tab Key -["ACE3 Weapons", QGVAR(cycleFireMode), localize "STR_ACE_JAVELIN_CycleFireMode", +["ACE3 Weapons", QGVAR(cycleFireMode), localize STRING(CycleFireMode), { false }, { [ACE_player] call FUNC(cycleFireMode); diff --git a/addons/kestrel4500/CfgVehicles.hpp b/addons/kestrel4500/CfgVehicles.hpp index 20d8bf5b62..6e2fc1cba5 100644 --- a/addons/kestrel4500/CfgVehicles.hpp +++ b/addons/kestrel4500/CfgVehicles.hpp @@ -4,7 +4,7 @@ class CfgVehicles { class ACE_SelfActions { class ACE_Equipment { class GVAR(open) { - displayName = "$STR_ACE_Kestrel4500_OpenKestrel"; + displayName = CSTRING(OpenKestrel); condition = QUOTE(call FUNC(canShow) && !GVAR(Kestrel4500)); statement = QUOTE(call FUNC(createKestrelDialog)); showDisabled = 0; @@ -13,7 +13,7 @@ class CfgVehicles { exceptions[] = {"notOnMap"}; }; class GVAR(show) { - displayName = "$STR_ACE_Kestrel4500_ShowKestrel"; + displayName = CSTRING(ShowKestrel); condition = QUOTE(call FUNC(canShow) && !GVAR(Overlay)); statement = QUOTE(call FUNC(displayKestrel)); showDisabled = 0; @@ -22,7 +22,7 @@ class CfgVehicles { exceptions[] = {"notOnMap", "isNotInside"}; }; class GVAR(hide) { - displayName = "$STR_ACE_Kestrel4500_HideKestrel"; + displayName = CSTRING(HideKestrel); condition = QUOTE(GVAR(Overlay)); statement = QUOTE(call FUNC(displayKestrel)); showDisabled = 0; diff --git a/addons/kestrel4500/CfgWeapons.hpp b/addons/kestrel4500/CfgWeapons.hpp index 881edca202..c12fbcba28 100644 --- a/addons/kestrel4500/CfgWeapons.hpp +++ b/addons/kestrel4500/CfgWeapons.hpp @@ -6,8 +6,8 @@ class CfgWeapons { class ACE_Kestrel4500: ACE_ItemCore { author[] = {$STR_ACE_Common_ACETeam, "Ruthberg"}; scope = 2; - displayName = "$STR_ACE_Kestrel_Name"; - descriptionShort = "$STR_ACE_Kestrel_Description"; + displayName = CSTRING(Name); + descriptionShort = CSTRING(Description); model = PATHTOF(kestrel4500.p3d); picture = PATHTOF(UI\Kestrel4500.paa); icon = "iconObject_circle"; diff --git a/addons/kestrel4500/initKeybinds.sqf b/addons/kestrel4500/initKeybinds.sqf index 2105d906d8..4a4cb74220 100644 --- a/addons/kestrel4500/initKeybinds.sqf +++ b/addons/kestrel4500/initKeybinds.sqf @@ -1,4 +1,4 @@ -["ACE3 Equipment", QGVAR(KestrelDialogKey), localize "STR_ACE_Kestrel4500_KestrelDialogKey", +["ACE3 Equipment", QGVAR(KestrelDialogKey), localize STRING(KestrelDialogKey), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -13,7 +13,7 @@ {false}, [0, [false, false, false]], false, 0] call CBA_fnc_addKeybind; // (empty default key) -["ACE3 Equipment", QGVAR(DisplayKestrelKey), localize "STR_ACE_Kestrel4500_DisplayKestrelKey", +["ACE3 Equipment", QGVAR(DisplayKestrelKey), localize STRING(DisplayKestrelKey), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/laser/functions/fnc_keyLaserCodeDown.sqf b/addons/laser/functions/fnc_keyLaserCodeDown.sqf index a27b376d59..96f50b92d1 100644 --- a/addons/laser/functions/fnc_keyLaserCodeDown.sqf +++ b/addons/laser/functions/fnc_keyLaserCodeDown.sqf @@ -8,5 +8,5 @@ if(_oldLaserCode > ACE_DEFAULT_LASER_CODE) then { ACE_player setVariable [QGVAR(code), _laserCode, false]; }; if(_laserCode != _oldLaserCode) then { - [format ["%1: %2", localize "STR_ACE_laser_laserCode", _laserCode]] call EFUNC(common,displayTextStructured); + [format ["%1: %2", localize STRING(laserCode), _laserCode]] call EFUNC(common,displayTextStructured); }; \ No newline at end of file diff --git a/addons/laser/functions/fnc_keyLaserCodeUp.sqf b/addons/laser/functions/fnc_keyLaserCodeUp.sqf index 4e8750164c..e11e32389f 100644 --- a/addons/laser/functions/fnc_keyLaserCodeUp.sqf +++ b/addons/laser/functions/fnc_keyLaserCodeUp.sqf @@ -6,5 +6,5 @@ _oldLaserCode = ACE_player getVariable [QGVAR(code), ACE_DEFAULT_LASER_CODE]; _laserCode = _oldLaserCode + 1; ACE_player setVariable [QGVAR(code), _laserCode, false]; if(_laserCode != _oldLaserCode) then { -[format ["%1: %2", localize "STR_ACE_laser_laserCode", _laserCode]] call EFUNC(common,displayTextStructured); +[format ["%1: %2", localize STRING(laserCode), _laserCode]] call EFUNC(common,displayTextStructured); }; \ No newline at end of file diff --git a/addons/laser/initKeybinds.sqf b/addons/laser/initKeybinds.sqf index d367b3553c..9d86bcb034 100644 --- a/addons/laser/initKeybinds.sqf +++ b/addons/laser/initKeybinds.sqf @@ -1,4 +1,4 @@ -["ACE3 Equipment", QGVAR(LaserCodeUp), localize "STR_ACE_laser_laserCodeUp", +["ACE3 Equipment", QGVAR(LaserCodeUp), localize STRING(laserCodeUp), { if( EGVAR(laser_selfdesignate,active) || @@ -12,7 +12,7 @@ {false}, [16, [false, true, true]], false, 0] call CBA_fnc_addKeybind; // (ALT+CTRL+Q) -["ACE3 Equipment", QGVAR(LaserCodeDown), localize "STR_ACE_laser_laserCodeDown", +["ACE3 Equipment", QGVAR(LaserCodeDown), localize STRING(laserCodeDown), { if( EGVAR(laser_selfdesignate,active) || diff --git a/addons/laser_selfdesignate/functions/fnc_initDesignatorActions.sqf b/addons/laser_selfdesignate/functions/fnc_initDesignatorActions.sqf index 6514c889a1..1167e0e5a6 100644 --- a/addons/laser_selfdesignate/functions/fnc_initDesignatorActions.sqf +++ b/addons/laser_selfdesignate/functions/fnc_initDesignatorActions.sqf @@ -31,7 +31,7 @@ GVAR(initializedClasses) = _initializedClasses; // e.g.: _vehicle setVariable [format ["%1_%2", QGVAR(active), _x], false]; // Add actions - _onAction = [QGVAR(LaserOn), localize "STR_ACE_Laser_SelfDesignate_DesignatorOn", "", + _onAction = [QGVAR(LaserOn), localize STRING(DesignatorOn), "", { // Statement _this call FUNC(laserHudDesignateOn) @@ -41,7 +41,7 @@ GVAR(initializedClasses) = _initializedClasses; !GVAR(active) && {[ACE_player] call FUNC(unitTurretHasDesignator)} }] call EFUNC(interact_menu,createAction); - _offAction = [QGVAR(LaserOff), localize "STR_ACE_Laser_SelfDesignate_DesignatorOff", "", + _offAction = [QGVAR(LaserOff), localize STRING(DesignatorOff), "", { // Statement _this call FUNC(laserHudDesignateOff) diff --git a/addons/laserpointer/CfgWeapons.hpp b/addons/laserpointer/CfgWeapons.hpp index 6223c3a988..57f36c80d2 100644 --- a/addons/laserpointer/CfgWeapons.hpp +++ b/addons/laserpointer/CfgWeapons.hpp @@ -10,26 +10,26 @@ class CfgWeapons { class acc_pointer_IR: ItemCore { ACE_nextModeClass = "ACE_acc_pointer_red"; - ACE_modeDescription = "$STR_ACE_Laserpointer_IRLaser"; + ACE_modeDescription = CSTRING(IRLaser); - displayName = "$STR_ACE_Laserpointer_red"; - descriptionUse = "$STR_ACE_Laserpointer_useLaser"; + displayName = CSTRING(red); + descriptionUse = CSTRING(useLaser); }; class ACE_acc_pointer_red: ItemCore { ACE_nextModeClass = "acc_pointer_IR"; - ACE_modeDescription = "$STR_ACE_Laserpointer_Laser"; + ACE_modeDescription = CSTRING(Laser); ACE_laserpointer = 1; author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_acc_pointer_red"; scope = 1; - displayName = "$STR_ACE_Laserpointer_red"; - descriptionUse = "$STR_ACE_Laserpointer_useLaser"; + displayName = CSTRING(red); + descriptionUse = CSTRING(useLaser); picture = "\A3\weapons_F\Data\UI\gear_accv_pointer_CA.paa"; model = "\A3\weapons_f\acc\accv_pointer_F"; - descriptionShort = "$STR_ACE_Laserpointer_Description"; + descriptionShort = CSTRING(Description); class ItemInfo: InventoryFlashLightItem_Base_F { mass = 6; @@ -69,23 +69,23 @@ class CfgWeapons { class ACE_acc_pointer_green_IR: acc_pointer_IR { ACE_nextModeClass = "ACE_acc_pointer_green"; - ACE_modeDescription = "$STR_ACE_Laserpointer_IRLaser"; + ACE_modeDescription = CSTRING(IRLaser); author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_acc_pointer_green"; scope = 1; - displayName = "$STR_ACE_Laserpointer_green"; + displayName = CSTRING(green); }; class ACE_acc_pointer_green: ACE_acc_pointer_red { ACE_nextModeClass = "ACE_acc_pointer_green_IR"; - ACE_modeDescription = "$STR_ACE_Laserpointer_Laser"; + ACE_modeDescription = CSTRING(Laser); ACE_laserpointer = 2; author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_acc_pointer_green"; scope = 2; - displayName = "$STR_ACE_Laserpointer_green"; + displayName = CSTRING(green); }; }; diff --git a/addons/laserpointer/initKeybinds.sqf b/addons/laserpointer/initKeybinds.sqf index e01f3be5fa..b33247e03d 100644 --- a/addons/laserpointer/initKeybinds.sqf +++ b/addons/laserpointer/initKeybinds.sqf @@ -1,6 +1,6 @@ // by commy2 -["ACE3 Weapons", QGVAR(switchLaserLightMode), localize "STR_ACE_Laserpointer_switchLaserLight", +["ACE3 Weapons", QGVAR(switchLaserLightMode), localize STRING(switchLaserLight), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/logistics_uavbattery/CfgVehicles.hpp b/addons/logistics_uavbattery/CfgVehicles.hpp index 5feba4c9a8..075e35b3c8 100644 --- a/addons/logistics_uavbattery/CfgVehicles.hpp +++ b/addons/logistics_uavbattery/CfgVehicles.hpp @@ -4,7 +4,7 @@ class CfgVehicles { class ACE_Actions { class ACE_MainActions { class GVAR(RefuelUAV) { - displayName = "$STR_ACE_logistics_uavbattery_Recharge"; + displayName = CSTRING(Recharge); distance = 4; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRefuelUAV)); statement = QUOTE([ARR_2(_player, _target)] call FUNC(refuelUAV)); diff --git a/addons/logistics_uavbattery/CfgWeapons.hpp b/addons/logistics_uavbattery/CfgWeapons.hpp index 1986b4f80f..923d2dd934 100644 --- a/addons/logistics_uavbattery/CfgWeapons.hpp +++ b/addons/logistics_uavbattery/CfgWeapons.hpp @@ -4,8 +4,8 @@ class CfgWeapons { class ACE_UAVBattery: ACE_ItemCore { scope = 2; - displayName = "$STR_ACE_logistics_uavbattery_Battery_Name"; - descriptionShort = "$STR_ACE_logistics_uavbattery_Battery_Description"; + displayName = CSTRING(Battery_Name); + descriptionShort = CSTRING(Battery_Description); model = QUOTE(PATHTOF(models\ace_battery.p3d)); picture = QUOTE(PATHTOF(ui\UAV_battery_ca.paa)); class ItemInfo: InventoryItem_Base_F { diff --git a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf index 6fda0fed10..350f9097bb 100644 --- a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf +++ b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf @@ -36,4 +36,4 @@ _onFailure = { [_caller, "AinvPknlMstpSnonWnonDr_medic5", 0] call EFUNC(common,doAnimation); -[10, [_caller, _target], _onFinish, _onFailure, (localize "STR_ACE_logistics_uavbattery_Battery_Recharge"), {(_this select 0) call FUNC(canRefuelUAV)}] call EFUNC(common,progressBar); +[10, [_caller, _target], _onFinish, _onFailure, (localize STRING(Battery_Recharge)), {(_this select 0) call FUNC(canRefuelUAV)}] call EFUNC(common,progressBar); diff --git a/addons/logistics_wirecutter/CfgWeapons.hpp b/addons/logistics_wirecutter/CfgWeapons.hpp index 648bc3a3f8..e4cd605b8c 100644 --- a/addons/logistics_wirecutter/CfgWeapons.hpp +++ b/addons/logistics_wirecutter/CfgWeapons.hpp @@ -4,8 +4,8 @@ class CfgWeapons { class ACE_wirecutter: ACE_ItemCore { author = "$STR_ACE_Common_ACETeam"; - displayName = "$STR_ACE_logistics_wirecutter_wirecutterName"; - descriptionShort = "$STR_ACE_logistics_wirecutter_wirecutterDescription"; + displayName = CSTRING(wirecutterName); + descriptionShort = CSTRING(wirecutterDescription); model = "\A3\weapons_F\ammo\mag_univ.p3d"; picture = QUOTE(PATHTOF(ui\item_wirecutter_ca.paa)); scope = 2; diff --git a/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf index 0cab7ab461..4cd6eba85f 100644 --- a/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf +++ b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf @@ -38,4 +38,4 @@ _progressCheck = { ((!isNull _fenceObject) && {(damage _fenceObject) < 1} && {("ACE_wirecutter" in (items ACE_player))}) }; -[_timeToCut, [_fenceObject,0], {(_this select 0) call FUNC(cutDownFenceCallback)}, {(_this select 0) call FUNC(cutDownFenceAbort)}, localize "STR_ACE_logistics_wirecutter_CuttingFence", _progressCheck] call EFUNC(common,progressBar); +[_timeToCut, [_fenceObject,0], {(_this select 0) call FUNC(cutDownFenceCallback)}, {(_this select 0) call FUNC(cutDownFenceAbort)}, localize STRING(CuttingFence), _progressCheck] call EFUNC(common,progressBar); diff --git a/addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf b/addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf index 77bc4f2ba6..245b65bde8 100644 --- a/addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf +++ b/addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf @@ -18,5 +18,5 @@ PARAMS_1(_fenceObject); _fenceObject setdamage 1; -// [localize "STR_ACE_logistics_wirecutter_FenceCut"] call EFUNC(common,displayTextStructured); +// [localize STRING(FenceCut)] call EFUNC(common,displayTextStructured); [ACE_player, "AmovPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation); diff --git a/addons/logistics_wirecutter/functions/fnc_interactEH.sqf b/addons/logistics_wirecutter/functions/fnc_interactEH.sqf index efb8f292c9..2bcb488d42 100644 --- a/addons/logistics_wirecutter/functions/fnc_interactEH.sqf +++ b/addons/logistics_wirecutter/functions/fnc_interactEH.sqf @@ -53,7 +53,7 @@ if (!("ACE_wirecutter" in (items ace_player))) exitWith {}; if ([_x] call FUNC(isFence)) then { _fencesHelped pushBack _x; _helper = "Sign_Sphere25cm_F" createVehicleLocal (getpos _x); - _action = [QGVAR(helperCutFence), (localize "STR_ACE_logistics_wirecutter_CutFence"), QUOTE(PATHTOF(ui\wirecutter_ca.paa)), _fncStatement, _fncCondition, {}, _x, [0,0,0], 5] call EFUNC(interact_menu,createAction); + _action = [QGVAR(helperCutFence), (localize STRING(CutFence)), QUOTE(PATHTOF(ui\wirecutter_ca.paa)), _fncStatement, _fncCondition, {}, _x, [0,0,0], 5] call EFUNC(interact_menu,createAction); [_helper, 0, [],_action] call EFUNC(interact_menu,addActionToObject); _helper setPosASL ((getPosASL _x) vectorAdd [0,0,1.25]); _helper hideObject true; diff --git a/addons/magazinerepack/CfgVehicles.hpp b/addons/magazinerepack/CfgVehicles.hpp index a5312369d5..f94d8f2b06 100644 --- a/addons/magazinerepack/CfgVehicles.hpp +++ b/addons/magazinerepack/CfgVehicles.hpp @@ -3,7 +3,7 @@ class CfgVehicles { class CAManBase: Man { class ACE_SelfActions { class ACE_RepackMagazines { - displayName = "$STR_ACE_MagazineRepack_RepackMagazines"; + displayName = CSTRING(RepackMagazines); condition = QUOTE(true); exceptions[] = {"isNotInside"}; insertChildren = QUOTE(_this call FUNC(getMagazineChildren)); diff --git a/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf b/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf index c4ddb2d93d..d47878086d 100644 --- a/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf +++ b/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf @@ -29,9 +29,9 @@ _fullMagazineCount = getNumber (configfile >> "CfgMagazines" >> _magazineClassna if (!([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith))) exitWith {}; _structuredOutputText = if (_errorCode == 0) then { - format ["%1
", (localize "STR_ACE_MagazineRepack_RepackComplete")]; + format ["%1
", (localize STRING(RepackComplete))]; } else { - format ["%1
", (localize "STR_ACE_MagazineRepack_RepackInterrupted")]; + format ["%1
", (localize STRING(RepackInterrupted))]; }; _picture = getText (configFile >> "CfgMagazines" >> _magazineClassname >> "picture"); @@ -51,6 +51,6 @@ _structuredOutputText = _structuredOutputText + format ["" + (localize "STR_ACE_MagazineRepack_RepackedMagazinesCount") + "
"), _fullMags, _partialMags]; +// _structuredOutputText = _structuredOutputText + format [("" + (localize STRING(RepackedMagazinesCount)) + ""), _fullMags, _partialMags]; [parseText _structuredOutputText, 2] call EFUNC(common,displayTextStructured); diff --git a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf index bb98461316..48c357eece 100644 --- a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf +++ b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf @@ -67,7 +67,7 @@ _totalTime, [_magazineClassname, _startingAmmoCounts, _simEvents], {_this call FUNC(magazineRepackFinish)}, {_this call FUNC(magazineRepackFinish)}, -(localize "STR_ACE_MagazineRepack_RepackingMagazine"), +(localize STRING(RepackingMagazine)), {_this call FUNC(magazineRepackProgress)}, ["isNotInside"] ] call EFUNC(common,progressBar); diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp index a5194e015e..a6ce8b29dc 100644 --- a/addons/map/CfgVehicles.hpp +++ b/addons/map/CfgVehicles.hpp @@ -3,66 +3,66 @@ class CfgVehicles { class ACE_ModuleMap: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_Map_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); function = QFUNC(moduleMap); scope = 2; isGlobal = 1; icon = PATHTOF(UI\Icon_Module_Map_ca.paa); class Arguments { class MapIllumination { - displayName = "$STR_ACE_Map_MapIllumination_DisplayName"; - description = "$STR_ACE_Map_MapIllumination_Description"; + displayName = CSTRING(MapIllumination_DisplayName); + description = CSTRING(MapIllumination_Description); typeName = "BOOL"; defaultValue = 1; }; class MapShake { - displayName = "$STR_ACE_Map_MapShake_DisplayName"; - description = "$STR_ACE_Map_MapShake_Description"; + displayName = CSTRING(MapShake_DisplayName); + description = CSTRING(MapShake_Description); typeName = "BOOL"; defaultValue = 1; }; class MapLimitZoom { - displayName = "$STR_ACE_Map_MapLimitZoom_DisplayName"; - description = "$STR_ACE_Map_MapLimitZoom_Description"; + displayName = CSTRING(MapLimitZoom_DisplayName); + description = CSTRING(MapLimitZoom_Description); typeName = "BOOL"; defaultValue = 0; }; class MapShowCursorCoordinates { - displayName = "$STR_ACE_Map_MapShowCursorCoordinates_DisplayName"; - description = "$STR_ACE_Map_MapShowCursorCoordinates_Description"; + displayName = CSTRING(MapShowCursorCoordinates_DisplayName); + description = CSTRING(MapShowCursorCoordinates_Description); typeName = "BOOL"; defaultValue = 0; }; }; class ModuleDescription { - description = "$STR_ACE_Map_Module_Description"; + description = CSTRING(Module_Description); }; }; class ACE_ModuleBlueForceTracking: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_Map_BFT_Module_DisplayName"; + displayName = CSTRING(BFT_Module_DisplayName); function = QFUNC(blueForceTrackingModule); scope = 2; isGlobal = 1; icon = PATHTOF(UI\Icon_Module_BFTracking_ca.paa); class Arguments { class Interval { - displayName = "$STR_ACE_Map_BFT_Interval_DisplayName"; - description = "$STR_ACE_Map_BFT_Interval_Description"; + displayName = CSTRING(BFT_Interval_DisplayName); + description = CSTRING(BFT_Interval_Description); typeName = "NUMBER"; defaultValue = 1; }; class HideAiGroups { - displayName = "$STR_ACE_Map_BFT_HideAiGroups_DisplayName"; - description = "$STR_ACE_Map_BFT_HideAiGroups_Description"; + displayName = CSTRING(BFT_HideAiGroups_DisplayName); + description = CSTRING(BFT_HideAiGroups_Description); typeName = "BOOL"; defaultValue = 0; }; }; class ModuleDescription { - description = "$STR_ACE_Map_BFT_Module_Description"; + description = CSTRING(BFT_Module_Description); }; }; }; \ No newline at end of file diff --git a/addons/maptools/CfgVehicles.hpp b/addons/maptools/CfgVehicles.hpp index d9eb295871..3046ec0ec1 100644 --- a/addons/maptools/CfgVehicles.hpp +++ b/addons/maptools/CfgVehicles.hpp @@ -4,7 +4,7 @@ class CfgVehicles { class ACE_SelfActions { class ACE_MapTools { - displayName = "$STR_ACE_MapTools_MapTools_Menu"; + displayName = CSTRING(MapTools_Menu); condition = QUOTE((call FUNC(canUseMapTools) || {call FUNC(canUseMapGPS)})); statement = ""; exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; @@ -12,7 +12,7 @@ class CfgVehicles { priority = 100; class ACE_MapToolsHide { - displayName = "$STR_ACE_MapTools_MapToolsHide"; + displayName = CSTRING(MapToolsHide); condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0})); statement = QUOTE(GVAR(mapTool_Shown) = 0; [] call FUNC(updateMapToolMarkers)); exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; @@ -20,7 +20,7 @@ class CfgVehicles { priority = 5; }; class ACE_MapToolsShowNormal { - displayName = "$STR_ACE_MapTools_MapToolsShowNormal"; + displayName = CSTRING(MapToolsShowNormal); condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 1})); statement = QUOTE(GVAR(mapTool_Shown) = 1; [] call FUNC(updateMapToolMarkers)); exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; @@ -28,7 +28,7 @@ class CfgVehicles { priority = 4; }; class ACE_MapToolsShowSmall { - displayName = "$STR_ACE_MapTools_MapToolsShowSmall"; + displayName = CSTRING(MapToolsShowSmall); condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 2})); statement = QUOTE(GVAR(mapTool_Shown) = 2; [] call FUNC(updateMapToolMarkers)); exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; @@ -36,7 +36,7 @@ class CfgVehicles { priority = 3; }; class ACE_MapToolsAlignNorth { - displayName = "$STR_ACE_MapTools_MapToolsAlignNorth"; + displayName = CSTRING(MapToolsAlignNorth); condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0})); statement = QUOTE(GVAR(mapTool_angle) = 0; [] call FUNC(updateMapToolMarkers)); exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; @@ -44,7 +44,7 @@ class CfgVehicles { priority = 2; }; class ACE_MapToolsAlignCompass { - displayName = "$STR_ACE_MapTools_MapToolsAlignCompass"; + displayName = CSTRING(MapToolsAlignCompass); condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0} && {('ItemCompass' in assigneditems ACE_player) || {'ItemCompass' in assigneditems ACE_player}})); statement = QUOTE(GVAR(mapTool_angle) = getDir ACE_player; [] call FUNC(updateMapToolMarkers)); exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; @@ -52,7 +52,7 @@ class CfgVehicles { priority = 1; }; class ACE_MapGpsShow { - displayName = "$STR_ACE_MapTools_MapGpsShow"; + displayName = CSTRING(MapGpsShow); condition = QUOTE((call FUNC(canUseMapGPS) && {!GVAR(mapGpsShow)})); statement = QUOTE(GVAR(mapGpsShow) = true; [GVAR(mapGpsShow)] call FUNC(openMapGps)); exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; @@ -60,7 +60,7 @@ class CfgVehicles { priority = 0; }; class ACE_MapGpsHide { - displayName = "$STR_ACE_MapTools_MapGpsHide"; + displayName = CSTRING(MapGpsHide); condition = QUOTE((call FUNC(canUseMapGPS) && {GVAR(mapGpsShow)})); statement = QUOTE(GVAR(mapGpsShow) = false; [GVAR(mapGpsShow)] call FUNC(openMapGps)); exceptions[] = {"isNotDragging", "notOnMap", "isNotInside"}; @@ -73,7 +73,7 @@ class CfgVehicles { class ACE_Actions { class ACE_MainActions { class ACE_CopyMap { - displayName = "$STR_ACE_MapTools_CopyMap"; + displayName = CSTRING(CopyMap); condition = QUOTE(([_target] call EFUNC(common,isPlayer) && {'ItemMap' in assigneditems _player} && {'ACE_MapTools' in items _player} && {'ItemMap' in assignedItems _target})); statement = QUOTE([ARR_2(_player,_target)] call FUNC(copyMapStart)); showDisabled = 0; diff --git a/addons/maptools/CfgWeapons.hpp b/addons/maptools/CfgWeapons.hpp index 9d4d313c43..2e2271509b 100644 --- a/addons/maptools/CfgWeapons.hpp +++ b/addons/maptools/CfgWeapons.hpp @@ -3,8 +3,8 @@ class CfgWeapons { class InventoryItem_Base_F; class ACE_MapTools: ACE_ItemCore { - displayName = "$STR_ACE_MapTools_Name"; - descriptionShort = "$STR_ACE_MapTools_Description"; + displayName = CSTRING(Name); + descriptionShort = CSTRING(Description); model = "\A3\weapons_F\ammo\mag_univ.p3d"; picture = PATHTOF(UI\maptool_item.paa); scope = 2; diff --git a/addons/markers/functions/fnc_onSliderPosChangedAngle.sqf b/addons/markers/functions/fnc_onSliderPosChangedAngle.sqf index 747c0d4bbb..940b84fe42 100644 --- a/addons/markers/functions/fnc_onSliderPosChangedAngle.sqf +++ b/addons/markers/functions/fnc_onSliderPosChangedAngle.sqf @@ -25,6 +25,6 @@ if (_direction < 0) then { _direction = _direction + 360; }; -((ctrlParent _ctrl) displayCtrl 1221) ctrlSetText format [localize "STR_ACE_Markers_MarkerDirection", _direction]; +((ctrlParent _ctrl) displayCtrl 1221) ctrlSetText format [localize STRING(MarkerDirection), _direction]; GVAR(currentMarkerAngle) = _data; diff --git a/addons/medical/ACE_Medical_Actions.hpp b/addons/medical/ACE_Medical_Actions.hpp index 9052df81da..6c643e53a2 100644 --- a/addons/medical/ACE_Medical_Actions.hpp +++ b/addons/medical/ACE_Medical_Actions.hpp @@ -1,6 +1,6 @@ class ACE_Head { - displayName = "$STR_ACE_Interaction_Head"; + displayName = CSTRING(Head); runOnHover = 1; statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation)); ACTION_CONDITION @@ -9,7 +9,7 @@ class ACE_Head { icon = PATHTOF(UI\icons\medical_cross.paa); distance = MEDICAL_ACTION_DISTANCE; class Bandage { - displayName = "$STR_ACE_Medical_Bandage"; + displayName = CSTRING(Bandage); distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(treatment)); @@ -21,7 +21,7 @@ class ACE_Head { }; // Advanced medical class FieldDressing { - displayName = "$STR_ACE_Medical_Actions_FieldDressing"; + displayName = CSTRING(Actions_FieldDressing); distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(treatment)); @@ -32,54 +32,54 @@ class ACE_Head { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_PackingBandage"; + displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_ElasticBandage"; + displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_QuikClot"; + displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\bandage.paa); }; class CheckPulse: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_CheckPulse"; + displayName = CSTRING(Actions_CheckPulse); condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(treatment)); EXCEPTIONS icon = ""; }; class CheckBloodPressure: CheckPulse { - displayName = "$STR_ACE_Medical_Actions_CheckBloodPressure"; + displayName = CSTRING(Actions_CheckBloodPressure); condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(treatment)); EXCEPTIONS }; class CheckResponse: CheckPulse { - displayName = "$STR_ACE_Medical_Check_Response"; + displayName = CSTRING(Check_Response); condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckResponse')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckResponse')] call DFUNC(treatment)); EXCEPTIONS }; class Diagnose: CheckPulse { - displayName = "$STR_ACE_Medical_Actions_Diagnose"; + displayName = CSTRING(Actions_Diagnose); condition = QUOTE([ARR_4(_player, _target, 'head', 'Diagnose')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'Diagnose')] call DFUNC(treatment)); EXCEPTIONS }; }; class ACE_Torso { - displayName = "$STR_ACE_Interaction_Torso"; + displayName = CSTRING(Torso); runOnHover = 1; statement = QUOTE([ARR_3(_target, true, 1)] call DFUNC(displayPatientInformation)); ACTION_CONDITION @@ -88,7 +88,7 @@ class ACE_Torso { icon = PATHTOF(UI\icons\medical_cross.paa); distance = MEDICAL_ACTION_DISTANCE; class Bandage { - displayName = "$STR_ACE_Medical_Bandage"; + displayName = CSTRING(Bandage); distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(treatment)); @@ -100,7 +100,7 @@ class ACE_Torso { icon = PATHTOF(UI\icons\bandage.paa); }; class PlaceInBodyBag { - displayName = "$STR_ACE_Medical_PlaceInBodyBag"; + displayName = CSTRING(PlaceInBodyBag); distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'body', 'BodyBag')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'BodyBag')] call DFUNC(treatment)); @@ -111,7 +111,7 @@ class ACE_Torso { enableInside = 1; }; class TriageCard { - displayName = "$STR_ACE_Medical_Actions_TriageCard"; + displayName = CSTRING(Actions_TriageCard); distance = 2.0; condition = "true"; statement = QUOTE([ARR_2(_target, true)] call DFUNC(displayTriageCard)); @@ -125,7 +125,7 @@ class ACE_Torso { // Advanced medical class FieldDressing { - displayName = "$STR_ACE_Medical_Actions_FieldDressing"; + displayName = CSTRING(Actions_FieldDressing); distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(treatment)); @@ -137,42 +137,42 @@ class ACE_Torso { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_PackingBandage"; + displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_ElasticBandage"; + displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_QuikClot"; + displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\bandage.paa); }; class SurgicalKit: fieldDressing { - displayName = "$STR_ACE_Medical_Use_SurgicalKit"; + displayName = CSTRING(Use_SurgicalKit); condition = QUOTE([ARR_4(_player, _target, 'body', 'SurgicalKit')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'SurgicalKit')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\surgicalKit.paa); }; class PersonalAidKit: fieldDressing { - displayName = "$STR_ACE_Medical_Use_Aid_Kit"; + displayName = CSTRING(Use_Aid_Kit); condition = QUOTE([ARR_4(_player, _target, 'body', 'PersonalAidKit')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'PersonalAidKit')] call DFUNC(treatment)); EXCEPTIONS icon = ""; }; class CPR: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_CPR"; + displayName = CSTRING(Actions_CPR); condition = QUOTE([ARR_4(_player, _target, 'body', 'CPR')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'CPR')] call DFUNC(treatment)); EXCEPTIONS @@ -180,7 +180,7 @@ class ACE_Torso { }; }; class ACE_ArmLeft { - displayName = "$STR_ACE_Interaction_ArmLeft"; + displayName = CSTRING(ArmLeft); runOnHover = 1; statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation)); ACTION_CONDITION @@ -190,7 +190,7 @@ class ACE_ArmLeft { distance = MEDICAL_ACTION_DISTANCE; class Bandage { - displayName = "$STR_ACE_Medical_Bandage"; + displayName = CSTRING(Bandage); distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(treatment)); @@ -203,7 +203,7 @@ class ACE_ArmLeft { // Advanced medical class FieldDressing { - displayName = "$STR_ACE_Medical_Actions_FieldDressing"; + displayName = CSTRING(Actions_FieldDressing); distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(treatment)); @@ -214,131 +214,131 @@ class ACE_ArmLeft { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_PackingBandage"; + displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_ElasticBandage"; + displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_QuikClot"; + displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\bandage.paa); }; class Tourniquet: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_Tourniquet"; + displayName = CSTRING(Actions_Tourniquet); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { - displayName = "$STR_ACE_Medical_Inject_Morphine"; + displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Atropine"; + displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\autoInjector.paa); }; class Epinephrine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Epinephrine"; + displayName = CSTRING(Inject_Epinephrine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\autoInjector.paa); }; class BloodIV: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_Blood4_1000"; + displayName = CSTRING(Actions_Blood4_1000); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\iv.paa); }; class BloodIV_500: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Blood4_500"; + displayName = CSTRING(Actions_Blood4_500); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_500')] call DFUNC(treatment)); EXCEPTIONS }; class BloodIV_250: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Blood4_250"; + displayName = CSTRING(Actions_Blood4_250); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_250')] call DFUNC(treatment)); EXCEPTIONS }; class PlasmaIV: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Plasma4_1000"; + displayName = CSTRING(Actions_Plasma4_1000); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV')] call DFUNC(treatment)); EXCEPTIONS }; class PlasmaIV_500: PlasmaIV { - displayName = "$STR_ACE_Medical_Actions_Plasma4_500"; + displayName = CSTRING(Actions_Plasma4_500); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_500')] call DFUNC(treatment)); EXCEPTIONS }; class PlasmaIV_250: PlasmaIV { - displayName = "$STR_ACE_Medical_Actions_Plasma4_250"; + displayName = CSTRING(Actions_Plasma4_250); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_250')] call DFUNC(treatment)); EXCEPTIONS }; class SalineIV: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Saline4_1000"; + displayName = CSTRING(Actions_Saline4_1000); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV')] call DFUNC(treatment)); EXCEPTIONS }; class SalineIV_500: SalineIV { - displayName = "$STR_ACE_Medical_Actions_Saline4_500"; + displayName = CSTRING(Actions_Saline4_500); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_500')] call DFUNC(treatment)); EXCEPTIONS }; class SalineIV_250: SalineIV { - displayName = "$STR_ACE_Medical_Actions_Saline4_250"; + displayName = CSTRING(Actions_Saline4_250); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_250')] call DFUNC(treatment)); EXCEPTIONS }; class CheckPulse: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_CheckPulse"; + displayName = CSTRING(Actions_CheckPulse); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(treatment)); EXCEPTIONS icon = ""; }; class CheckBloodPressure: CheckPulse { - displayName = "$STR_ACE_Medical_Actions_CheckBloodPressure"; + displayName = CSTRING(Actions_CheckBloodPressure); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(treatment)); EXCEPTIONS }; class RemoveTourniquet: Tourniquet { - displayName = "$STR_ACE_Medical_Actions_RemoveTourniquet"; + displayName = CSTRING(Actions_RemoveTourniquet); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(treatment)); EXCEPTIONS }; }; class ACE_ArmRight { - displayName = "$STR_ACE_Interaction_ArmRight"; + displayName = CSTRING(ArmRight); runOnHover = 1; statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation)); ACTION_CONDITION @@ -348,7 +348,7 @@ class ACE_ArmRight { distance = MEDICAL_ACTION_DISTANCE; class Bandage { - displayName = "$STR_ACE_Medical_Bandage"; + displayName = CSTRING(Bandage); distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(treatment)); @@ -361,7 +361,7 @@ class ACE_ArmRight { // Advanced medical class FieldDressing { - displayName = "$STR_ACE_Medical_Actions_FieldDressing"; + displayName = CSTRING(Actions_FieldDressing); distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(treatment)); @@ -372,120 +372,120 @@ class ACE_ArmRight { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_PackingBandage"; + displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_ElasticBandage"; + displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(treatment)); EXCEPTIONS }; class QuikClot: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_QuikClot"; + displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(treatment)); EXCEPTIONS }; class Tourniquet: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_Tourniquet"; + displayName = CSTRING(Actions_Tourniquet); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { - displayName = "$STR_ACE_Medical_Inject_Morphine"; + displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Atropine"; + displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(treatment)); EXCEPTIONS }; class Epinephrine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Epinephrine"; + displayName = CSTRING(Inject_Epinephrine); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(treatment)); EXCEPTIONS }; class BloodIV: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_Blood4_1000"; + displayName = CSTRING(Actions_Blood4_1000); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\iv.paa); }; class BloodIV_500: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Blood4_500"; + displayName = CSTRING(Actions_Blood4_500); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_500')] call DFUNC(treatment)); EXCEPTIONS }; class BloodIV_250: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Blood4_250"; + displayName = CSTRING(Actions_Blood4_250); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_250')] call DFUNC(treatment)); EXCEPTIONS }; class PlasmaIV: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Plasma4_1000"; + displayName = CSTRING(Actions_Plasma4_1000); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV')] call DFUNC(treatment)); EXCEPTIONS }; class PlasmaIV_500: PlasmaIV { - displayName = "$STR_ACE_Medical_Actions_Plasma4_500"; + displayName = CSTRING(Actions_Plasma4_500); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_500')] call DFUNC(treatment)); EXCEPTIONS }; class PlasmaIV_250: PlasmaIV { - displayName = "$STR_ACE_Medical_Actions_Plasma4_250"; + displayName = CSTRING(Actions_Plasma4_250); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_250')] call DFUNC(treatment)); EXCEPTIONS }; class SalineIV: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Saline4_1000"; + displayName = CSTRING(Actions_Saline4_1000); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV')] call DFUNC(treatment)); EXCEPTIONS }; class SalineIV_500: SalineIV { - displayName = "$STR_ACE_Medical_Actions_Saline4_500"; + displayName = CSTRING(Actions_Saline4_500); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_500')] call DFUNC(treatment)); EXCEPTIONS }; class SalineIV_250: SalineIV { - displayName = "$STR_ACE_Medical_Actions_Saline4_250"; + displayName = CSTRING(Actions_Saline4_250); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_250')] call DFUNC(treatment)); EXCEPTIONS }; class CheckPulse: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_CheckPulse"; + displayName = CSTRING(Actions_CheckPulse); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(treatment)); EXCEPTIONS icon = ""; }; class CheckBloodPressure: CheckPulse { - displayName = "$STR_ACE_Medical_Actions_CheckBloodPressure"; + displayName = CSTRING(Actions_CheckBloodPressure); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(treatment)); EXCEPTIONS }; class RemoveTourniquet: Tourniquet { - displayName = "$STR_ACE_Medical_Actions_RemoveTourniquet"; + displayName = CSTRING(Actions_RemoveTourniquet); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(treatment)); EXCEPTIONS @@ -493,7 +493,7 @@ class ACE_ArmRight { }; class ACE_LegLeft { - displayName = "$STR_ACE_Interaction_LegLeft"; + displayName = CSTRING(LegLeft); runOnHover = 1; statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation)); ACTION_CONDITION @@ -503,7 +503,7 @@ class ACE_LegLeft { distance = MEDICAL_ACTION_DISTANCE; class Bandage { - displayName = "$STR_ACE_Medical_Bandage"; + displayName = CSTRING(Bandage); distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(treatment)); @@ -517,7 +517,7 @@ class ACE_LegLeft { // Advanced medical class FieldDressing { - displayName = "$STR_ACE_Medical_Actions_FieldDressing"; + displayName = CSTRING(Actions_FieldDressing); distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(treatment)); @@ -528,115 +528,115 @@ class ACE_LegLeft { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_PackingBandage"; + displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_ElasticBandage"; + displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(treatment)); EXCEPTIONS }; class QuikClot: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_QuikClot"; + displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(treatment)); EXCEPTIONS }; class Tourniquet: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_Tourniquet"; + displayName = CSTRING(Actions_Tourniquet); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { - displayName = "$STR_ACE_Medical_Inject_Morphine"; + displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Atropine"; + displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\autoInjector.paa); }; class Epinephrine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Epinephrine"; + displayName = CSTRING(Inject_Epinephrine); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(treatment)); EXCEPTIONS }; class BloodIV: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_Blood4_1000"; + displayName = CSTRING(Actions_Blood4_1000); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\iv.paa); }; class BloodIV_500: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Blood4_500"; + displayName = CSTRING(Actions_Blood4_500); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_500')] call DFUNC(treatment)); EXCEPTIONS }; class BloodIV_250: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Blood4_250"; + displayName = CSTRING(Actions_Blood4_250); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_250')] call DFUNC(treatment)); EXCEPTIONS }; class PlasmaIV: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Plasma4_1000"; + displayName = CSTRING(Actions_Plasma4_1000); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV')] call DFUNC(treatment)); EXCEPTIONS }; class PlasmaIV_500: PlasmaIV { - displayName = "$STR_ACE_Medical_Actions_Plasma4_500"; + displayName = CSTRING(Actions_Plasma4_500); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_500')] call DFUNC(treatment)); EXCEPTIONS }; class PlasmaIV_250: PlasmaIV { - displayName = "$STR_ACE_Medical_Actions_Plasma4_250"; + displayName = CSTRING(Actions_Plasma4_250); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_250')] call DFUNC(treatment)); EXCEPTIONS }; class SalineIV: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Saline4_1000"; + displayName = CSTRING(Actions_Saline4_1000); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV')] call DFUNC(treatment)); EXCEPTIONS }; class SalineIV_500: SalineIV { - displayName = "$STR_ACE_Medical_Actions_Saline4_500"; + displayName = CSTRING(Actions_Saline4_500); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_500')] call DFUNC(treatment)); EXCEPTIONS }; class SalineIV_250: SalineIV { - displayName = "$STR_ACE_Medical_Actions_Saline4_250"; + displayName = CSTRING(Actions_Saline4_250); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_250')] call DFUNC(treatment)); EXCEPTIONS }; class RemoveTourniquet: Tourniquet { - displayName = "$STR_ACE_Medical_Actions_RemoveTourniquet"; + displayName = CSTRING(Actions_RemoveTourniquet); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(treatment)); EXCEPTIONS }; }; class ACE_LegRight { - displayName = "$STR_ACE_Interaction_LegRight"; + displayName = CSTRING(LegRight); runOnHover = 1; statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation)); ACTION_CONDITION @@ -646,7 +646,7 @@ class ACE_LegRight { distance = MEDICAL_ACTION_DISTANCE; class Bandage { - displayName = "$STR_ACE_Medical_Bandage"; + displayName = CSTRING(Bandage); distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(treatment)); @@ -660,7 +660,7 @@ class ACE_LegRight { // Advanced medical class FieldDressing { - displayName = "$STR_ACE_Medical_Actions_FieldDressing"; + displayName = CSTRING(Actions_FieldDressing); distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(treatment)); @@ -671,107 +671,107 @@ class ACE_LegRight { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_PackingBandage"; + displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_ElasticBandage"; + displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(treatment)); EXCEPTIONS }; class QuikClot: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_QuikClot"; + displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(treatment)); EXCEPTIONS }; class Tourniquet: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_Tourniquet"; + displayName = CSTRING(Actions_Tourniquet); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { - displayName = "$STR_ACE_Medical_Inject_Morphine"; + displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Atropine"; + displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(treatment)); EXCEPTIONS }; class Epinephrine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Epinephrine"; + displayName = CSTRING(Inject_Epinephrine); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(treatment)); EXCEPTIONS }; class BloodIV: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_Blood4_1000"; + displayName = CSTRING(Actions_Blood4_1000); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(treatment)); EXCEPTIONS icon = PATHTOF(UI\icons\iv.paa); }; class BloodIV_500: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Blood4_500"; + displayName = CSTRING(Actions_Blood4_500); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_500')] call DFUNC(treatment)); EXCEPTIONS }; class BloodIV_250: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Blood4_250"; + displayName = CSTRING(Actions_Blood4_250); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_250')] call DFUNC(treatment)); EXCEPTIONS }; class PlasmaIV: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Plasma4_1000"; + displayName = CSTRING(Actions_Plasma4_1000); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV')] call DFUNC(treatment)); EXCEPTIONS }; class PlasmaIV_500: PlasmaIV { - displayName = "$STR_ACE_Medical_Actions_Plasma4_500"; + displayName = CSTRING(Actions_Plasma4_500); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_500')] call DFUNC(treatment)); EXCEPTIONS }; class PlasmaIV_250: PlasmaIV { - displayName = "$STR_ACE_Medical_Actions_Plasma4_250"; + displayName = CSTRING(Actions_Plasma4_250); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_250')] call DFUNC(treatment)); EXCEPTIONS }; class SalineIV: BloodIV { - displayName = "$STR_ACE_Medical_Actions_Saline4_1000"; + displayName = CSTRING(Actions_Saline4_1000); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV')] call DFUNC(treatment)); EXCEPTIONS }; class SalineIV_500: SalineIV { - displayName = "$STR_ACE_Medical_Actions_Saline4_500"; + displayName = CSTRING(Actions_Saline4_500); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_500')] call DFUNC(treatment)); EXCEPTIONS }; class SalineIV_250: SalineIV { - displayName = "$STR_ACE_Medical_Actions_Saline4_250"; + displayName = CSTRING(Actions_Saline4_250); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_250')] call DFUNC(treatment)); EXCEPTIONS }; class RemoveTourniquet: Tourniquet { - displayName = "$STR_ACE_Medical_Actions_RemoveTourniquet"; + displayName = CSTRING(Actions_RemoveTourniquet); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(treatment)); EXCEPTIONS diff --git a/addons/medical/ACE_Medical_SelfActions.hpp b/addons/medical/ACE_Medical_SelfActions.hpp index 5b98448664..a19db92073 100644 --- a/addons/medical/ACE_Medical_SelfActions.hpp +++ b/addons/medical/ACE_Medical_SelfActions.hpp @@ -1,5 +1,5 @@ class Medical { - displayName = "$STR_ACE_Medical_Actions_Medical"; + displayName = CSTRING(Actions_Medical); runOnHover = 1; hotkey = "M"; exceptions[] = {"isNotInside"}; @@ -8,7 +8,7 @@ class Medical { icon = PATHTOF(UI\icons\medical_cross.paa); class ACE_Head { - displayName = "$STR_ACE_Interaction_Head"; + displayName = CSTRING(Head); icon = PATHTOF(UI\icons\medical_cross.paa); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation)); @@ -17,7 +17,7 @@ class Medical { runOnHover = 1; class Bandage { - displayName = "$STR_ACE_Medical_Bandage"; + displayName = CSTRING(Bandage); distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; @@ -29,7 +29,7 @@ class Medical { }; // Advanced medical class FieldDressing { - displayName = "$STR_ACE_Medical_Actions_FieldDressing"; + displayName = CSTRING(Actions_FieldDressing); distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; @@ -40,42 +40,42 @@ class Medical { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_PackingBandage"; + displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_ElasticBandage"; + displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_QuikClot"; + displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); }; class CheckPulse: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_CheckPulse"; + displayName = CSTRING(Actions_CheckPulse); condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(treatment)); icon = ""; }; class CheckBloodPressure: CheckPulse { - displayName = "$STR_ACE_Medical_Actions_CheckBloodPressure"; + displayName = CSTRING(Actions_CheckBloodPressure); condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(treatment)); }; }; class ACE_Torso { - displayName = "$STR_ACE_Interaction_Torso"; + displayName = CSTRING(Torso); distance = 5.0; condition = "true"; runOnHover = 1; @@ -88,7 +88,7 @@ class Medical { icon = PATHTOF(UI\icons\medical_cross.paa); class Bandage { - displayName = "$STR_ACE_Medical_Bandage"; + displayName = CSTRING(Bandage); distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; @@ -100,7 +100,7 @@ class Medical { }; class TriageCard { - displayName = "$STR_ACE_Medical_Actions_TriageCard"; + displayName = CSTRING(Actions_TriageCard); distance = 2.0; condition = "true"; exceptions[] = {"isNotInside"}; @@ -113,7 +113,7 @@ class Medical { // Advanced medical class FieldDressing { - displayName = "$STR_ACE_Medical_Actions_FieldDressing"; + displayName = CSTRING(Actions_FieldDressing); distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; @@ -124,21 +124,21 @@ class Medical { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_PackingBandage"; + displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_ElasticBandage"; + displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_QuikClot"; + displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(treatment)); @@ -146,7 +146,7 @@ class Medical { }; }; class ACE_ArmLeft { - displayName = "$STR_ACE_Interaction_ArmLeft"; + displayName = CSTRING(ArmLeft); runOnHover = 1; exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation)); @@ -155,7 +155,7 @@ class Medical { icon = PATHTOF(UI\icons\medical_cross.paa); class Bandage { - displayName = "$STR_ACE_Medical_Bandage"; + displayName = CSTRING(Bandage); distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; @@ -168,7 +168,7 @@ class Medical { // Advanced medical class FieldDressing { - displayName = "$STR_ACE_Medical_Actions_FieldDressing"; + displayName = CSTRING(Actions_FieldDressing); distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; @@ -179,76 +179,76 @@ class Medical { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_PackingBandage"; + displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_ElasticBandage"; + displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_QuikClot"; + displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); }; class Tourniquet: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_Tourniquet"; + displayName = CSTRING(Actions_Tourniquet); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { - displayName = "$STR_ACE_Medical_Inject_Morphine"; + displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Atropine"; + displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\autoInjector.paa); }; class Epinephrine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Epinephrine"; + displayName = CSTRING(Inject_Epinephrine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\autoInjector.paa); }; class CheckPulse: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_CheckPulse"; + displayName = CSTRING(Actions_CheckPulse); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(treatment)); icon = ""; }; class CheckBloodPressure: CheckPulse { - displayName = "$STR_ACE_Medical_Actions_CheckBloodPressure"; + displayName = CSTRING(Actions_CheckBloodPressure); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(treatment)); }; class RemoveTourniquet: Tourniquet { - displayName = "$STR_ACE_Medical_Actions_RemoveTourniquet"; + displayName = CSTRING(Actions_RemoveTourniquet); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(treatment)); }; }; class ACE_ArmRight { - displayName = "$STR_ACE_Interaction_ArmRight"; + displayName = CSTRING(ArmRight); runOnHover = 1; exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation)); @@ -257,7 +257,7 @@ class Medical { icon = PATHTOF(UI\icons\medical_cross.paa); class Bandage { - displayName = "$STR_ACE_Medical_Bandage"; + displayName = CSTRING(Bandage); distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; @@ -270,7 +270,7 @@ class Medical { // Advanced medical class FieldDressing { - displayName = "$STR_ACE_Medical_Actions_FieldDressing"; + displayName = CSTRING(Actions_FieldDressing); distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; @@ -281,72 +281,72 @@ class Medical { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_PackingBandage"; + displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_ElasticBandage"; + displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(treatment)); }; class QuikClot: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_QuikClot"; + displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(treatment)); }; class Tourniquet: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_Tourniquet"; + displayName = CSTRING(Actions_Tourniquet); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { - displayName = "$STR_ACE_Medical_Inject_Morphine"; + displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Atropine"; + displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(treatment)); }; class Epinephrine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Epinephrine"; + displayName = CSTRING(Inject_Epinephrine); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(treatment)); }; class CheckPulse: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_CheckPulse"; + displayName = CSTRING(Actions_CheckPulse); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(treatment)); icon = ""; }; class CheckBloodPressure: CheckPulse { - displayName = "$STR_ACE_Medical_Actions_CheckBloodPressure"; + displayName = CSTRING(Actions_CheckBloodPressure); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(treatment)); }; class RemoveTourniquet: Tourniquet { - displayName = "$STR_ACE_Medical_Actions_RemoveTourniquet"; + displayName = CSTRING(Actions_RemoveTourniquet); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(treatment)); }; }; class ACE_LegLeft { - displayName = "$STR_ACE_Interaction_LegLeft"; + displayName = CSTRING(LegLeft); runOnHover = 1; exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation)); @@ -355,7 +355,7 @@ class Medical { icon = PATHTOF(UI\icons\medical_cross.paa); class Bandage { - displayName = "$STR_ACE_Medical_Bandage"; + displayName = CSTRING(Bandage); distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; @@ -369,7 +369,7 @@ class Medical { // Advanced medical class FieldDressing { - displayName = "$STR_ACE_Medical_Actions_FieldDressing"; + displayName = CSTRING(Actions_FieldDressing); distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; @@ -380,60 +380,60 @@ class Medical { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_PackingBandage"; + displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_ElasticBandage"; + displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(treatment)); }; class QuikClot: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_QuikClot"; + displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(treatment)); }; class Tourniquet: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_Tourniquet"; + displayName = CSTRING(Actions_Tourniquet); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { - displayName = "$STR_ACE_Medical_Inject_Morphine"; + displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Atropine"; + displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\autoInjector.paa); }; class Epinephrine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Epinephrine"; + displayName = CSTRING(Inject_Epinephrine); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(treatment)); }; class RemoveTourniquet: Tourniquet { - displayName = "$STR_ACE_Medical_Actions_RemoveTourniquet"; + displayName = CSTRING(Actions_RemoveTourniquet); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(treatment)); }; }; class ACE_LegRight { - displayName = "$STR_ACE_Interaction_LegRight"; + displayName = CSTRING(LegRight); runOnHover = 1; exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation)); @@ -442,7 +442,7 @@ class Medical { icon = PATHTOF(UI\icons\medical_cross.paa); class Bandage { - displayName = "$STR_ACE_Medical_Bandage"; + displayName = CSTRING(Bandage); distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; @@ -456,7 +456,7 @@ class Medical { // Advanced medical class FieldDressing { - displayName = "$STR_ACE_Medical_Actions_FieldDressing"; + displayName = CSTRING(Actions_FieldDressing); distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; @@ -467,52 +467,52 @@ class Medical { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_PackingBandage"; + displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_ElasticBandage"; + displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(treatment)); }; class QuikClot: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_QuikClot"; + displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(treatment)); }; class Tourniquet: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_Tourniquet"; + displayName = CSTRING(Actions_Tourniquet); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { - displayName = "$STR_ACE_Medical_Inject_Morphine"; + displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Atropine"; + displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(treatment)); }; class Epinephrine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Epinephrine"; + displayName = CSTRING(Inject_Epinephrine); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(treatment)); }; class RemoveTourniquet: Tourniquet { - displayName = "$STR_ACE_Medical_Actions_RemoveTourniquet"; + displayName = CSTRING(Actions_RemoveTourniquet); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(treatment)); diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index 064f29c8f9..5c44ebf7ea 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -2,8 +2,8 @@ class ACE_Medical_Actions { class Basic { class Bandage { - displayName = "$STR_ACE_Medical_Bandage"; - displayNameProgress = "$STR_ACE_Medical_Bandaging"; + displayName = CSTRING(Bandage); + displayNameProgress = CSTRING(Bandaging); treatmentLocations[] = {"All"}; requiredMedic = 0; @@ -27,8 +27,8 @@ class ACE_Medical_Actions { litter[] = { {"All", "", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}} }; }; class Morphine: Bandage { - displayName = "$STR_ACE_Medical_Inject_Morphine"; - displayNameProgress = "$STR_ACE_Medical_Injecting_Morphine"; + displayName = CSTRING(Inject_Morphine); + displayNameProgress = CSTRING(Injecting_Morphine); treatmentTime = 2; items[] = {"ACE_morphine"}; callbackSuccess = QUOTE(DFUNC(treatmentBasic_morphine)); @@ -36,8 +36,8 @@ class ACE_Medical_Actions { litter[] = { {"All", "", {"ACE_MedicalLitter_morphine"}} }; }; class Epinephrine: Bandage { - displayName = "$STR_ACE_Medical_Inject_Epinephrine"; - displayNameProgress = "$STR_ACE_Medical_Injecting_Epinephrine"; + displayName = CSTRING(Inject_Epinephrine); + displayNameProgress = CSTRING(Injecting_Epinephrine); requiredMedic = 1; treatmentTime = 3; items[] = {"ACE_epinephrine"}; @@ -46,8 +46,8 @@ class ACE_Medical_Actions { litter[] = { {"All", "", {"ACE_MedicalLitter_epinephrine"}} }; }; class BloodIV: Bandage { - displayName = "$STR_ACE_Medical_Transfuse_Blood"; - displayNameProgress = "$STR_ACE_Medical_Transfusing_Blood"; + displayName = CSTRING(Transfuse_Blood); + displayNameProgress = CSTRING(Transfusing_Blood); requiredMedic = 1; treatmentTime = 20; items[] = {"ACE_bloodIV"}; @@ -62,8 +62,8 @@ class ACE_Medical_Actions { items[] = {"ACE_bloodIV_250"}; }; class BodyBag: Bandage { - displayName = "$STR_ACE_Medical_PlaceInBodyBag"; - displayNameProgress = "$STR_ACE_Medical_PlacingInBodyBag"; + displayName = CSTRING(PlaceInBodyBag); + displayNameProgress = CSTRING(PlacingInBodyBag); treatmentLocations[] = {"All"}; requiredMedic = 0; treatmentTime = 2; @@ -78,8 +78,8 @@ class ACE_Medical_Actions { litter[] = {}; }; class Diagnose: Bandage { - displayName = "$STR_ACE_Medical_Actions_Diagnose"; - displayNameProgress = "$STR_ACE_Medical_Actions_Diagnosing"; + displayName = CSTRING(Actions_Diagnose); + displayNameProgress = CSTRING(Actions_Diagnosing); treatmentLocations[] = {"All"}; requiredMedic = 0; treatmentTime = 1; @@ -96,8 +96,8 @@ class ACE_Medical_Actions { class Advanced { class FieldDressing { - displayName = "$STR_ACE_Medical_Bandage"; - displayNameProgress = "$STR_ACE_Medical_Bandaging"; + displayName = CSTRING(Bandage); + displayNameProgress = CSTRING(Bandaging); // Which locations can this treatment action be used? Available: Field, MedicalFacility, MedicalVehicle, All. treatmentLocations[] = {"All"}; // What is the level of medical skill required for this treatment action? 0 = all soldiers, 1 = medic, 2 = doctor @@ -131,8 +131,8 @@ class ACE_Medical_Actions { items[] = {"ACE_quikclot"}; }; class Tourniquet: fieldDressing { - displayName = "$STR_ACE_Medical_Apply_Tourniquet"; - displayNameProgress = "$STR_ACE_Medical_Applying_Tourniquet"; + displayName = CSTRING(Apply_Tourniquet); + displayNameProgress = CSTRING(Applying_Tourniquet); items[] = {"ACE_tourniquet"}; treatmentTime = 6; callbackSuccess = QUOTE(DFUNC(treatmentTourniquet)); @@ -140,8 +140,8 @@ class ACE_Medical_Actions { litter[] = {}; }; class Morphine: fieldDressing { - displayName = "$STR_ACE_Medical_Inject_Morphine"; - displayNameProgress = "$STR_ACE_Medical_Injecting_Morphine"; + displayName = CSTRING(Inject_Morphine); + displayNameProgress = CSTRING(Injecting_Morphine); items[] = {"ACE_morphine"}; treatmentTime = 3; callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_medication)); @@ -149,20 +149,20 @@ class ACE_Medical_Actions { litter[] = { {"All", "", {"ACE_MedicalLitter_morphine"}} }; }; class Atropine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Atropine"; - displayNameProgress = "$STR_ACE_Medical_Injecting_Atropine"; + displayName = CSTRING(Inject_Atropine); + displayNameProgress = CSTRING(Injecting_Atropine); items[] = {"ACE_atropine"}; litter[] = { {"All", "", {"ACE_MedicalLitter_atropine"}} }; }; class Epinephrine: Morphine { - displayName = "$STR_ACE_Medical_Inject_Epinephrine"; - displayNameProgress = "$STR_ACE_Medical_Injecting_Epinephrine"; + displayName = CSTRING(Inject_Epinephrine); + displayNameProgress = CSTRING(Injecting_Epinephrine); items[] = {"ACE_epinephrine"}; litter[] = { {"All", "", {"ACE_MedicalLitter_epinephrine"}} }; }; class BloodIV: fieldDressing { - displayName = "$STR_ACE_Medical_Transfuse_Blood"; - displayNameProgress = "$STR_ACE_Medical_Transfusing_Blood"; + displayName = CSTRING(Transfuse_Blood); + displayNameProgress = CSTRING(Transfusing_Blood); items[] = {"ACE_bloodIV"}; requiredMedic = 1; treatmentTime = 7; @@ -177,8 +177,8 @@ class ACE_Medical_Actions { items[] = {"ACE_bloodIV_250"}; }; class PlasmaIV: BloodIV { - displayName = "$STR_ACE_Medical_Transfuse_Plasma"; - displayNameProgress = "$STR_ACE_Medical_Transfusing_Plasma"; + displayName = CSTRING(Transfuse_Plasma); + displayNameProgress = CSTRING(Transfusing_Plasma); items[] = {"ACE_plasmaIV"}; animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; }; @@ -189,8 +189,8 @@ class ACE_Medical_Actions { items[] = {"ACE_plasmaIV_250"}; }; class SalineIV: BloodIV { - displayName = "$STR_ACE_Medical_Transfuse_Saline"; - displayNameProgress = "$STR_ACE_Medical_Transfusing_Saline"; + displayName = CSTRING(Transfuse_Saline); + displayNameProgress = CSTRING(Transfusing_Saline); items[] = {"ACE_salineIV"}; animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; }; @@ -202,7 +202,7 @@ class ACE_Medical_Actions { }; class SurgicalKit: fieldDressing { displayName = ""; - displayNameProgress = "$STR_ACE_Medical_TreatmentAction"; + displayNameProgress = CSTRING(TreatmentAction); items[] = {"ACE_surgicalKit"}; treatmentLocations[] = {QGVAR(useLocation_SurgicalKit)}; requiredMedic = QGVAR(medicSetting_SurgicalKit); @@ -214,7 +214,7 @@ class ACE_Medical_Actions { }; class PersonalAidKit: fieldDressing { displayName = ""; - displayNameProgress = "$STR_ACE_Medical_TreatmentAction"; + displayNameProgress = CSTRING(TreatmentAction); items[] = {"ACE_personalAidKit"}; treatmentLocations[] = {QGVAR(useLocation_PAK)}; requiredMedic = QGVAR(medicSetting_PAK); @@ -231,7 +231,7 @@ class ACE_Medical_Actions { }; class CheckPulse: fieldDressing { displayName = ""; - displayNameProgress = "$STR_ACE_Medical_Check_Pulse_Content"; + displayNameProgress = CSTRING(Check_Pulse_Content); treatmentLocations[] = {"All"}; requiredMedic = 0; treatmentTime = 2; @@ -246,21 +246,21 @@ class ACE_Medical_Actions { }; class CheckBloodPressure: CheckPulse { callbackSuccess = QUOTE(DFUNC(actionCheckBloodPressure)); - displayNameProgress = "$STR_ACE_Medical_Check_Bloodpressure_Content"; + displayNameProgress = CSTRING(Check_Bloodpressure_Content); }; class CheckResponse: CheckPulse { callbackSuccess = QUOTE(DFUNC(actionCheckResponse)); - displayNameProgress = "$STR_ACE_Medical_Check_Response_Content"; + displayNameProgress = CSTRING(Check_Response_Content); }; class RemoveTourniquet: CheckPulse { treatmentTime = 2.5; callbackSuccess = QUOTE(DFUNC(actionRemoveTourniquet)); condition = QUOTE([ARR_2(_this select 1, _this select 2)] call FUNC(hasTourniquetAppliedTo)); - displayNameProgress = "$STR_ACE_Medical_RemovingTourniquet"; + displayNameProgress = CSTRING(RemovingTourniquet); }; class CPR: fieldDressing { - displayName = "$STR_ACE_Medical_Actions_CPR"; - displayNameProgress = "$STR_ACE_Medical_Actions_PerformingCPR"; + displayName = CSTRING(Actions_CPR); + displayNameProgress = CSTRING(Actions_PerformingCPR); treatmentLocations[] = {"All"}; requiredMedic = 0; treatmentTime = 15; @@ -279,8 +279,8 @@ class ACE_Medical_Actions { litter[] = {}; }; class BodyBag: fieldDressing { - displayName = "$STR_ACE_Medical_PlaceInBodyBag"; - displayNameProgress = "$STR_ACE_Medical_PlacingInBodyBag"; + displayName = CSTRING(PlaceInBodyBag); + displayNameProgress = CSTRING(PlacingInBodyBag); treatmentLocations[] = {"All"}; requiredMedic = 0; treatmentTime = 2; @@ -306,26 +306,26 @@ class ACE_Medical_Advanced { // Source: Scarle // Also called scrapes, they occur when the skin is rubbed away by friction against another rough surface (e.g. rope burns and skinned knees). class Abrasion { - name = "$STR_ACE_Medical_Wounds_Abrasion"; + name = CSTRING(Wounds_Abrasion); selections[] = {"All"}; bleedingRate = 0.0001; pain = 0.01; causes[] = {"falling", "ropeburn", "vehiclecrash", "unknown"}; minDamage = 0.01; class Minor { - name = "$STR_ACE_Medical_Wounds_Abrasion_Minor"; + name = CSTRING(Wounds_Abrasion_Minor); minDamage = 0.01; maxDamage = 0.2; bleedingRate = 0.0001; }; class Medium { - name = "$STR_ACE_Medical_Wounds_Abrasion_Medium"; + name = CSTRING(Wounds_Abrasion_Medium); minDamage = 0.2; maxDamage = 0.3; bleedingRate = 0.00015; }; class Large { - name = "$STR_ACE_Medical_Wounds_Abrasion_Large"; + name = CSTRING(Wounds_Abrasion_Large); minDamage = 0.3; bleedingRate = 0.0002; }; @@ -333,26 +333,26 @@ class ACE_Medical_Advanced { // Occur when an entire structure or part of it is forcibly pulled away, such as the loss of a permanent tooth or an ear lobe. Explosions, gunshots, and animal bites may cause avulsions. class Avulsions { - name = "$STR_ACE_Medical_Wounds_Avulsion"; + name = CSTRING(Wounds_Avulsion); selections[] = {"All"}; bleedingRate = 0.01; pain = 0.3; causes[] = {"explosive", "vehiclecrash", "grenade", "shell", "bullet", "backblast", "bite"}; minDamage = 0.2; class Minor { - name = "$STR_ACE_Medical_Wounds_Avulsion_Minor"; + name = CSTRING(Wounds_Avulsion_Minor); minDamage = 0.2; maxDamage = 0.3; bleedingRate = 0.01; }; class Medium { - name = "$STR_ACE_Medical_Wounds_Avulsion_Medium"; + name = CSTRING(Wounds_Avulsion_Medium); minDamage = 0.3; maxDamage = 0.6; bleedingRate = 0.02; }; class Large { - name = "$STR_ACE_Medical_Wounds_Avulsion_Large"; + name = CSTRING(Wounds_Avulsion_Large); minDamage = 0.5; bleedingRate = 0.05; }; @@ -360,7 +360,7 @@ class ACE_Medical_Advanced { // Also called bruises, these are the result of a forceful trauma that injures an internal structure without breaking the skin. Blows to the chest, abdomen, or head with a blunt instrument (e.g. a football or a fist) can cause contusions. class Contusion { - name = "$STR_ACE_Medical_Wounds_Contusion"; + name = CSTRING(Wounds_Contusion); selections[] = {"All"}; bleedingRate = 0.0; pain = 0.05; @@ -368,17 +368,17 @@ class ACE_Medical_Advanced { minDamage = 0.01; maxDamage = 0.1; class Minor { - name = "$STR_ACE_Medical_Wounds_Contusion_Minor"; + name = CSTRING(Wounds_Contusion_Minor); minDamage = 0.01; maxDamage = 0.1; }; class Medium { - name = "$STR_ACE_Medical_Wounds_Contusion_Medium"; + name = CSTRING(Wounds_Contusion_Medium); minDamage = 0.1; maxDamage = 0.15; }; class Large { - name = "$STR_ACE_Medical_Wounds_Contusion_Large"; + name = CSTRING(Wounds_Contusion_Large); minDamage = 0.15; maxDamage = 0.2; }; @@ -386,26 +386,26 @@ class ACE_Medical_Advanced { // Occur when a heavy object falls onto a person, splitting the skin and shattering or tearing underlying structures. class CrushWound { - name = "$STR_ACE_Medical_Wounds_Crush"; + name = CSTRING(Wounds_Crush); selections[] = {"All"}; bleedingRate = 0.01; pain = 0.1; causes[] = {"falling", "vehiclecrash", "punch", "unknown"}; minDamage = 0.1; class Minor { - name = "$STR_ACE_Medical_Wounds_Crush_Minor"; + name = CSTRING(Wounds_Crush_Minor); minDamage = 0.1; maxDamage = 0.45; bleedingRate = 0.005; }; class Medium { - name = "$STR_ACE_Medical_Wounds_Crush_Medium"; + name = CSTRING(Wounds_Crush_Medium); minDamage = 0.4; maxDamage = 0.7; bleedingRate = 0.007; }; class Large { - name = "$STR_ACE_Medical_Wounds_Crush_Large"; + name = CSTRING(Wounds_Crush_Large); minDamage = 0.6; bleedingRate = 0.0095; }; @@ -413,26 +413,26 @@ class ACE_Medical_Advanced { // Slicing wounds made with a sharp instrument, leaving even edges. They may be as minimal as a paper cut or as significant as a surgical incision. class Cut { - name = "$STR_ACE_Medical_Wounds_Cut"; + name = CSTRING(Wounds_Cut); selections[] = {"All"}; bleedingRate = 0.01; pain = 0.075; causes[] = {"vehiclecrash", "grenade", "explosive", "shell", "backblast", "stab", "unknown"}; minDamage = 0.1; class Minor { - name = "$STR_ACE_Medical_Wounds_Cut_Minor"; + name = CSTRING(Wounds_Cut_Minor); minDamage = 0.1; maxDamage = 0.3; bleedingRate = 0.005; }; class Medium { - name = "$STR_ACE_Medical_Wounds_Cut_Medium"; + name = CSTRING(Wounds_Cut_Medium); minDamage = 0.3; maxDamage = 0.65; bleedingRate = 0.02; }; class Large { - name = "$STR_ACE_Medical_Wounds_Cut_Large"; + name = CSTRING(Wounds_Cut_Large); minDamage = 0.65; bleedingRate = 0.05; }; @@ -440,26 +440,26 @@ class ACE_Medical_Advanced { // Also called tears, these are separating wounds that produce ragged edges. They are produced by a tremendous force against the body, either from an internal source as in childbirth, or from an external source like a punch. class Laceration { - name = "$STR_ACE_Medical_Wounds_Laceration"; + name = CSTRING(Wounds_Laceration); selections[] = {"All"}; bleedingRate = 0.01; pain = 0.075; causes[] = {"vehiclecrash", "punch"}; minDamage = 0.01; class Minor { - name = "$STR_ACE_Medical_Wounds_Laceration_Minor"; + name = CSTRING(Wounds_Laceration_Minor); minDamage = 0.1; maxDamage = 0.5; bleedingRate = 0.005; }; class Medium { - name = "$STR_ACE_Medical_Wounds_Laceration_Medium"; + name = CSTRING(Wounds_Laceration_Medium); minDamage = 0.5; maxDamage = 0.7; bleedingRate = 0.01; }; class Large { - name = "$STR_ACE_Medical_Wounds_Laceration_Large"; + name = CSTRING(Wounds_Laceration_Large); minDamage = 0.7; bleedingRate = 0.03; }; @@ -467,25 +467,25 @@ class ACE_Medical_Advanced { // Also called velocity wounds, they are caused by an object entering the body at a high speed, typically a bullet or small peices of shrapnel. class velocityWound { - name = "$STR_ACE_Medical_Wounds_VelocityWound"; + name = CSTRING(Wounds_VelocityWound); selections[] = {"All"}; bleedingRate = 0.01; pain = 0.2; causes[] = {"bullet", "grenade","explosive", "shell", "unknown"}; minDamage = 0.15; class Minor { - name = "$STR_ACE_Medical_Wounds_VelocityWound_Minor"; + name = CSTRING(Wounds_VelocityWound_Minor); minDamage = 0.15; maxDamage = 0.3; bleedingRate = 0.025; }; class Medium { - name = "$STR_ACE_Medical_Wounds_VelocityWound_Medium"; + name = CSTRING(Wounds_VelocityWound_Medium); minDamage = 0.3; bleedingRate = 0.05; }; class Large { - name = "$STR_ACE_Medical_Wounds_VelocityWound_Large"; + name = CSTRING(Wounds_VelocityWound_Large); minDamage = 0.75; bleedingRate = 0.1; }; @@ -493,26 +493,26 @@ class ACE_Medical_Advanced { // Deep, narrow wounds produced by sharp objects such as nails, knives, and broken glass. class punctureWound { - name = "$STR_ACE_Medical_Wounds_PunctureWound"; + name = CSTRING(Wounds_PunctureWound); selections[] = {"All"}; bleedingRate = 0.01; pain = 0.075; causes[] = {"stab", "grenade"}; minDamage = 0.01; class Minor { - name = "$STR_ACE_Medical_Wounds_PunctureWound_Minor"; + name = CSTRING(Wounds_PunctureWound_Minor); minDamage = 0.01; maxDamage = 0.5; bleedingRate = 0.01; }; class Medium { - name = "$STR_ACE_Medical_Wounds_PunctureWound_Medium"; + name = CSTRING(Wounds_PunctureWound_Medium); minDamage = 0.5; maxDamage = 0.75; bleedingRate = 0.03; }; class Large { - name = "$STR_ACE_Medical_Wounds_PunctureWound_Large"; + name = CSTRING(Wounds_PunctureWound_Large); minDamage = 0.65; bleedingRate = 0.08; }; @@ -520,7 +520,7 @@ class ACE_Medical_Advanced { }; class fractures { class Femur { - name = "$STR_ACE_Medical_Wounds_Femur"; + name = CSTRING(Wounds_Femur); selections[] = {"Head", "Torso"}; pain = 0.2; causes[] = {"Bullet", "VehicleCrash", "Backblast", "Explosive", "Shell", "Grenade"}; diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp index b3c2152df1..606b63dec8 100644 --- a/addons/medical/ACE_Settings.hpp +++ b/addons/medical/ACE_Settings.hpp @@ -85,8 +85,8 @@ class ACE_Settings { value = 1; }; class GVAR(litterSimulationDetail) { - displayName = "$STR_ACE_Medical_litterSimulationDetail"; - description = "$STR_ACE_Medical_litterSimulationDetail_Desc"; + displayName = CSTRING(litterSimulationDetail); + description = CSTRING(litterSimulationDetail_Desc); typeName = "SCALAR"; value = 3; @@ -138,7 +138,7 @@ class ACE_Settings { value = 1; }; class GVAR(painEffectType) { - displayName = "$STR_ACE_Medical_painEffectType"; + displayName = CSTRING(painEffectType); typeName = "SCALAR"; value = 0; values[] = {"$STR_ACE_Medical_painEffect_Flash", "$STR_ACE_Medical_painEffect_Chroma"}; @@ -154,8 +154,8 @@ class ACE_Settings { }; class GVAR(menuTypeStyle) { - displayName = "$STR_ACE_Medical_menuTypeDisplay"; - description = "$STR_ACE_Medical_menuTypeDescription"; + displayName = CSTRING(menuTypeDisplay); + description = CSTRING(menuTypeDescription); typeName = "SCALAR"; value = 0; values[] = {"$STR_ACE_Medical_useSelection"/*, "$STR_ACE_Medical_useRadial"*/}; diff --git a/addons/medical/CfgFactionClasses.hpp b/addons/medical/CfgFactionClasses.hpp index 67e3404e91..0ca922c8a6 100644 --- a/addons/medical/CfgFactionClasses.hpp +++ b/addons/medical/CfgFactionClasses.hpp @@ -1,6 +1,6 @@ class CfgFactionClasses { class NO_CATEGORY; class ADDON: NO_CATEGORY { - displayName = "$STR_ACE_Medical_Category_DisplayName"; + displayName = CSTRING(Category_DisplayName); }; }; diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index e0a6fbcfa0..53767abf19 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -11,7 +11,7 @@ class CfgVehicles { class ACE_Module; class ACE_moduleMedicalSettings: ACE_Module { scope = 2; - displayName = "$STR_ACE_MedicalSettings_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(DFUNC(moduleMedicalSettings)); @@ -21,78 +21,78 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class level { - displayName = "$STR_ACE_MedicalSettings_level_DisplayName"; - description = "$STR_ACE_MedicalSettings_level_Description"; + displayName = CSTRING(level_DisplayName); + description = CSTRING(level_Description); typeName = "NUMBER"; class values { class normal { - name = "$STR_ACE_MedicalSettings_basic"; + name = CSTRING(basic); value = 1; default = 1; }; class full { - name = "$STR_ACE_MedicalSettings_advanced"; + name = CSTRING(advanced); value = 2; }; }; }; class medicSetting { - displayName = "$STR_ACE_MedicalSettings_medicSetting_DisplayName"; - description = "$STR_ACE_MedicalSettings_medicSetting_Description"; + displayName = CSTRING(medicSetting_DisplayName); + description = CSTRING(medicSetting_Description); typeName = "NUMBER"; class values { class disable { - name = "$STR_ACE_MedicalSettings_medicSetting_disable"; + name = CSTRING(medicSetting_disable); value = 0; }; class normal { - name = "$STR_ACE_MedicalSettings_basic"; + name = CSTRING(basic); value = 1; default = 1; }; class full { - name = "$STR_ACE_MedicalSettings_advanced"; + name = CSTRING(advanced); value = 2; }; }; }; class allowLitterCreation { - displayName = "$STR_ACE_MedicalSettings_allowLitterCreation_DisplayName"; - description = "$STR_ACE_MedicalSettings_allowLitterCreation_Description"; + displayName = CSTRING(allowLitterCreation_DisplayName); + description = CSTRING(allowLitterCreation_Description); typeName = "BOOL"; defaultValue = 1; }; class litterCleanUpDelay { - displayName = "$STR_ACE_MedicalSettings_litterCleanUpDelay_DisplayName"; - description = "$STR_ACE_MedicalSettings_litterCleanUpDelay_Description"; + displayName = CSTRING(litterCleanUpDelay_DisplayName); + description = CSTRING(litterCleanUpDelay_Description); typeName = "NUMBER"; defaultValue = 1800; }; class enableScreams { - displayName = "$STR_ACE_MedicalSettings_enableScreams_DisplayName"; - description = "$STR_ACE_MedicalSettings_enableScreams_Description"; + displayName = CSTRING(enableScreams_DisplayName); + description = CSTRING(enableScreams_Description); typeName = "BOOL"; defaultValue = 1; }; class playerDamageThreshold { - displayName = "$STR_ACE_MedicalSettings_playerDamageThreshold_DisplayName"; - description = "$STR_ACE_MedicalSettings_playerDamageThreshold_Description"; + displayName = CSTRING(playerDamageThreshold_DisplayName); + description = CSTRING(playerDamageThreshold_Description); typeName = "NUMBER"; defaultValue = 1; }; class AIDamageThreshold { - displayName = "$STR_ACE_MedicalSettings_AIDamageThreshold_DisplayName"; - description = "$STR_ACE_MedicalSettings_AIDamageThreshold_Description"; + displayName = CSTRING(AIDamageThreshold_DisplayName); + description = CSTRING(AIDamageThreshold_Description); typeName = "NUMBER"; defaultValue = 1; }; class enableUnconsciousnessAI { - displayName = "$STR_ACE_MedicalSettings_enableUnconsciousnessAI_DisplayName"; - description = "$STR_ACE_MedicalSettings_enableUnconsciousnessAI_Description"; + displayName = CSTRING(enableUnconsciousnessAI_DisplayName); + description = CSTRING(enableUnconsciousnessAI_Description); typeName = "NUMBER"; class values { class disable { - name = "$STR_ACE_Medical_disabled"; + name = CSTRING(disabled); value = 0; }; class normal { @@ -101,45 +101,45 @@ class CfgVehicles { default = 1; }; class full { - name = "$STR_ACE_Medical_enabled"; + name = CSTRING(enabled); value = 2; }; }; }; class preventInstaDeath { - displayName = "$STR_ACE_MedicalSettings_preventInstaDeath_DisplayName"; - description = "$STR_ACE_MedicalSettings_preventInstaDeath_Description"; + displayName = CSTRING(preventInstaDeath_DisplayName); + description = CSTRING(preventInstaDeath_Description); typeName = "BOOL"; defaultValue = 0; }; class bleedingCoefficient { - displayName = "$STR_ACE_MedicalSettings_bleedingCoefficient_DisplayName"; - description = "$STR_ACE_MedicalSettings_bleedingCoefficient_Description"; + displayName = CSTRING(bleedingCoefficient_DisplayName); + description = CSTRING(bleedingCoefficient_Description); typeName = "NUMBER"; defaultValue = 1; }; class painCoefficient { - displayName = "$STR_ACE_MedicalSettings_painCoefficient_DisplayName"; - description = "$STR_ACE_MedicalSettings_painCoefficient_Description"; + displayName = CSTRING(painCoefficient_DisplayName); + description = CSTRING(painCoefficient_Description); typeName = "NUMBER"; defaultValue = 1; }; class keepLocalSettingsSynced { - displayName = "$STR_ACE_MedicalSettings_keepLocalSettingsSynced_DisplayName"; - description = "$STR_ACE_MedicalSettings_keepLocalSettingsSynced_Description"; + displayName = CSTRING(keepLocalSettingsSynced_DisplayName); + description = CSTRING(keepLocalSettingsSynced_Description); typeName = "BOOL"; defaultValue = 1; }; }; class ModuleDescription { - description = "$STR_ACE_MedicalSettings_Module_Description"; + description = CSTRING(Module_Description); sync[] = {}; }; }; class ACE_moduleAdvancedMedicalSettings: ACE_Module { scope = 2; - displayName = "$STR_ACE_AdvancedMedicalSettings_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(FUNC(moduleAdvancedMedicalSettings)); @@ -150,81 +150,81 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class enableFor { - displayName = "$STR_ACE_AdvancedMedicalSettings_enableFor_DisplayName"; - description = "$STR_ACE_AdvancedMedicalSettings_enableFor_Description"; + displayName = CSTRING(enableFor_DisplayName); + description = CSTRING(enableFor_Description); typeName = "NUMBER"; class values { class playableUnits { - name = "$STR_ACE_Medical_playeronly"; + name = CSTRING(playeronly); value = 0; default = 1; }; class playableUnitsAndAI { - name = "$STR_ACE_Medical_playersandai"; + name = CSTRING(playersandai); value = 1; }; }; }; class enableAdvancedWounds { - displayName = "$STR_ACE_AdvancedMedicalSettings_enableAdvancedWounds_DisplayName"; - description = "$STR_ACE_AdvancedMedicalSettings_enableAdvancedWounds_Description"; + displayName = CSTRING(enableAdvancedWounds_DisplayName); + description = CSTRING(enableAdvancedWounds_Description); typeName = "BOOL"; defaultValue = 0; }; class enableVehicleCrashes { - displayName = "$STR_ACE_AdvancedMedicalSettings_enableVehicleCrashes_DisplayName"; - description = "$STR_ACE_AdvancedMedicalSettings_enableVehicleCrashes_Description"; + displayName = CSTRING(enableVehicleCrashes_DisplayName); + description = CSTRING(enableVehicleCrashes_Description); typeName = "BOOL"; defaultValue = 1; }; class medicSetting_PAK { - displayName = "$STR_ACE_AdvancedMedicalSettings_medicSetting_PAK_DisplayName"; - description = "$STR_ACE_AdvancedMedicalSettings_medicSetting_PAK_Description"; + displayName = CSTRING(medicSetting_PAK_DisplayName); + description = CSTRING(medicSetting_PAK_Description); typeName = "NUMBER"; class values { - class anyone { name = "$STR_ACE_AdvancedMedicalSettings_anyone"; value = 0; }; - class Medic { name = "$STR_ACE_AdvancedMedicalSettings_Medic"; value = 1; default = 1; }; - class Special { name = "$STR_ACE_AdvancedMedicalSettings_Special"; value = 2; }; + class anyone { name = CSTRING(anyone); value = 0; }; + class Medic { name = CSTRING(Medic); value = 1; default = 1; }; + class Special { name = CSTRING(Special); value = 2; }; }; }; class consumeItem_PAK { - displayName = "$STR_ACE_AdvancedMedicalSettings_consumeItem_PAK_DisplayName"; - description = "$STR_ACE_AdvancedMedicalSettings_consumeItem_PAK_Description"; + displayName = CSTRING(consumeItem_PAK_DisplayName); + description = CSTRING(consumeItem_PAK_Description); typeName = "NUMBER"; class values { - class keep { name = "$STR_ACE_Medical_No"; value = 0; }; - class remove { name = "$STR_ACE_Medical_Yes"; value = 1; default = 1; }; + class keep { name = CSTRING(No); value = 0; }; + class remove { name = CSTRING(Yes); value = 1; default = 1; }; }; }; class useLocation_PAK { - displayName = "$STR_ACE_AdvancedMedicalSettings_useLocation_PAK_DisplayName"; - description = "$STR_ACE_AdvancedMedicalSettings_useLocation_PAK_Description"; + displayName = CSTRING(useLocation_PAK_DisplayName); + description = CSTRING(useLocation_PAK_Description); typeName = "NUMBER"; class values { - class anywhere { name = "$STR_ACE_AdvancedMedicalSettings_anywhere"; value = 0; }; - class vehicle { name = "$STR_ACE_AdvancedMedicalSettings_vehicle"; value = 1; }; - class facility { name = "$STR_ACE_AdvancedMedicalSettings_facility"; value = 2; }; - class vehicleAndFacility { name = "$STR_ACE_AdvancedMedicalSettings_vehicleAndFacility"; value = 3; default = 1; }; - class disabled { name = "$STR_ACE_AdvancedMedicalSettings_disabled"; value = 4;}; + class anywhere { name = CSTRING(anywhere); value = 0; }; + class vehicle { name = CSTRING(vehicle); value = 1; }; + class facility { name = CSTRING(facility); value = 2; }; + class vehicleAndFacility { name = CSTRING(vehicleAndFacility); value = 3; default = 1; }; + class disabled { name = CSTRING(disabled); value = 4;}; }; }; class medicSetting_SurgicalKit: medicSetting_PAK { - displayName = "$STR_ACE_AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName"; - description = "$STR_ACE_AdvancedMedicalSettings_medicSetting_SurgicalKit_Description"; + displayName = CSTRING(medicSetting_SurgicalKit_DisplayName); + description = CSTRING(medicSetting_SurgicalKit_Description); }; class consumeItem_SurgicalKit: consumeItem_PAK { - displayName = "$STR_ACE_AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName"; - description = "$STR_ACE_AdvancedMedicalSettings_consumeItem_SurgicalKit_Description"; + displayName = CSTRING(consumeItem_SurgicalKit_DisplayName); + description = CSTRING(consumeItem_SurgicalKit_Description); }; class useLocation_SurgicalKit: useLocation_PAK { - displayName = "$STR_ACE_AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName"; - description = "$STR_ACE_AdvancedMedicalSettings_useLocation_SurgicalKit_Description"; + displayName = CSTRING(useLocation_SurgicalKit_DisplayName); + description = CSTRING(useLocation_SurgicalKit_Description); }; }; class ModuleDescription { - description = "$STR_ACE_AdvancedMedicalSettings_Module_Description"; + description = CSTRING(Module_Description); sync[] = {}; }; }; @@ -232,7 +232,7 @@ class CfgVehicles { class ACE_moduleReviveSettings: ACE_Module { scope = 2; - displayName = "$STR_ACE_ReviveSettings_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(DFUNC(moduleReviveSettings)); @@ -242,37 +242,37 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class enableRevive { - displayName = "$STR_ACE_ReviveSettings_enableRevive_DisplayName"; - description = "$STR_ACE_ReviveSettings_enableRevive_Description"; + displayName = CSTRING(enableRevive_DisplayName); + description = CSTRING(enableRevive_Description); typeName = "NUMBER"; defaultValue = 0; class values { - class disable { name = "$STR_ACE_Medical_disabled"; value = 0; default = 1;}; - class playerOnly { name = "$STR_ACE_Medical_playeronly"; value = 1; }; - class playerAndAI { name = "$STR_ACE_Medical_playersandai"; value = 2; }; + class disable { name = CSTRING(disabled); value = 0; default = 1;}; + class playerOnly { name = CSTRING(playeronly); value = 1; }; + class playerAndAI { name = CSTRING(playersandai); value = 2; }; }; }; class maxReviveTime { - displayName = "$STR_ACE_ReviveSettings_maxReviveTime_DisplayName"; - description = "$STR_ACE_ReviveSettings_maxReviveTime_Description"; + displayName = CSTRING(maxReviveTime_DisplayName); + description = CSTRING(maxReviveTime_Description); typeName = "NUMBER"; defaultValue = 120; }; class amountOfReviveLives { - displayName = "$STR_ACE_ReviveSettings_amountOfReviveLives_DisplayName"; - description = "$STR_ACE_ReviveSettings_amountOfReviveLives_Description"; + displayName = CSTRING(amountOfReviveLives_DisplayName); + description = CSTRING(amountOfReviveLives_Description); typeName = "NUMBER"; defaultValue = -1; }; }; class ModuleDescription { - description = "$STR_ACE_ReviveSettings_Module_Description"; + description = CSTRING(Module_Description); sync[] = {}; }; }; class ACE_moduleAssignMedicRoles: Module_F { scope = 2; - displayName = "$STR_ACE_AssignMedicRoles_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(FUNC(moduleAssignMedicRoles)); @@ -283,41 +283,41 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class EnableList { - displayName = "$STR_ACE_AssignMedicRoles_EnableList_DisplayName"; - description = "$STR_ACE_AssignMedicRoles_EnableList_Description"; + displayName = CSTRING(EnableList_DisplayName); + description = CSTRING(EnableList_Description); defaultValue = ""; typeName = "STRING"; }; class role { - displayName = "$STR_ACE_AssignMedicRoles_role_DisplayName"; - description = "$STR_ACE_AssignMedicRoles_role_Description"; + displayName = CSTRING(role_DisplayName); + description = CSTRING(role_Description); typeName = "NUMBER"; class values { class none { - name = "$STR_ACE_AssignMedicRoles_role_none"; + name = CSTRING(role_none); value = 0; }; class medic { - name = "$STR_ACE_AssignMedicRoles_role_medic"; + name = CSTRING(role_medic); value = 1; default = 1; }; class doctor { - name = "$STR_ACE_AssignMedicRoles_role_doctor"; + name = CSTRING(role_doctor); value = 2; }; }; }; }; class ModuleDescription { - description = "$STR_ACE_AssignMedicRoles_Module_Description"; + description = CSTRING(Module_Description); sync[] = {}; }; }; class ACE_moduleAssignMedicVehicle: Module_F { scope = 2; - displayName = "$STR_ACE_AssignMedicVehicle_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(FUNC(moduleAssignMedicalVehicle)); @@ -328,23 +328,23 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class EnableList { - displayName = "$STR_ACE_AssignMedicVehicle_EnableList_DisplayName"; - description = "$STR_ACE_AssignMedicVehicle_EnableList_Description"; + displayName = CSTRING(EnableList_DisplayName); + description = CSTRING(EnableList_Description); defaultValue = ""; typeName = "STRING"; }; class enabled { - displayName = "$STR_ACE_AssignMedicVehicle_enabled_DisplayName"; - description = "$STR_ACE_AssignMedicVehicle_enabled_Description"; + displayName = CSTRING(enabled_DisplayName); + description = CSTRING(enabled_Description); typeName = "NUMBER"; class values { class none { - name = "$STR_ACE_Medical_No"; + name = CSTRING(No); value = 0; }; class medic { - name = "$STR_ACE_Medical_Yes"; + name = CSTRING(Yes); value = 1; default = 1; }; @@ -352,13 +352,13 @@ class CfgVehicles { }; }; class ModuleDescription { - description = "$STR_ACE_AssignMedicVehicle_Module_Description"; + description = CSTRING(Module_Description); sync[] = {}; }; }; class ACE_moduleAssignMedicalFacility: Module_F { scope = 2; - displayName = "$STR_ACE_AssignMedicalFacility_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(FUNC(moduleAssignMedicalFacility)); @@ -369,13 +369,13 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class enabled { - displayName = "$STR_ACE_AssignMedicalFacility_enabled_DisplayName"; - description = "$STR_ACE_AssignMedicalFacility_enabled_Description"; + displayName = CSTRING(enabled_DisplayName); + description = CSTRING(enabled_Description); typeName = "BOOL"; }; }; class ModuleDescription { - description = "$STR_ACE_AssignMedicalFacility_Module_Description"; + description = CSTRING(Module_Description); sync[] = {}; }; }; @@ -451,7 +451,7 @@ class CfgVehicles { // Create a consolidates medical menu for treatment while boarded class ACE_MainActions { class Medical { - displayName = "$STR_ACE_Medical_Actions_Medical"; + displayName = CSTRING(Actions_Medical); runOnHover = 1; exceptions[] = {"isNotInside"}; condition = QUOTE((vehicle _target != _target && vehicle _target == vehicle _player) || GVAR(menuTypeStyle) == 1); @@ -465,7 +465,7 @@ class CfgVehicles { #include "ACE_Medical_Actions.hpp" }; class GVAR(loadPatient) { - displayName = "$STR_ACE_Medical_LoadPatient"; + displayName = CSTRING(LoadPatient); distance = 5; condition = QUOTE(_target getvariable[ARR_2(QUOTE(QUOTE(ACE_isUnconscious)),false)] && vehicle _target == _target); statement = QUOTE([ARR_2(_player, _target)] call DFUNC(actionLoadUnit)); @@ -475,7 +475,7 @@ class CfgVehicles { exceptions[] = {"isNotDragging", "isNotCarrying"}; }; class GVAR(UnLoadPatient) { - displayName = "$STR_ACE_Medical_UnloadPatient"; + displayName = CSTRING(UnloadPatient); distance = 5; condition = QUOTE(_target getvariable[ARR_2(QUOTE(QUOTE(ACE_isUnconscious)),false)] && vehicle _target != _target); statement = QUOTE([ARR_2(_player, _target)] call DFUNC(actionUnloadUnit)); @@ -666,7 +666,7 @@ class CfgVehicles { EGVAR(dragging,dragDirection) = 0; class ACE_Actions { class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; + displayName = CSTRING(MainAction); distance = 5; condition = QUOTE(true); statement = ""; @@ -933,7 +933,7 @@ class CfgVehicles { }; }; class ACE_medicalSupplyCrate_advanced: ACE_medicalSupplyCrate { - displayName = "$STR_ACE_medicalSupplyCrate_advanced"; + displayName = CSTRING(advanced); class TransportItems { class ACE_fieldDressing { name = "ACE_fieldDressing"; diff --git a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf index 560b171400..46813c585b 100644 --- a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf @@ -28,27 +28,27 @@ _bloodPressureLow = _bloodPressure select 0; _output = ""; _logOutPut = ""; if ([_caller] call FUNC(isMedic)) then { - _output = "STR_ACE_Medical_Check_Bloodpressure_Output_1"; + _output = STRING(Check_Bloodpressure_Output_1); _logOutPut = format["%1/%2",round(_bloodPressureHigh),round(_bloodPressureLow)]; } else { if (_bloodPressureHigh > 20) then { - _output = "STR_ACE_Medical_Check_Bloodpressure_Output_2"; - _logOutPut = localize "STR_ACE_Medical_Check_Bloodpressure_Low"; + _output = STRING(Check_Bloodpressure_Output_2); + _logOutPut = localize STRING(Check_Bloodpressure_Low); if (_bloodPressureHigh > 100) then { - _output = "STR_ACE_Medical_Check_Bloodpressure_Output_3"; - _logOutPut = localize "STR_ACE_Medical_Check_Bloodpressure_Normal"; + _output = STRING(Check_Bloodpressure_Output_3); + _logOutPut = localize STRING(Check_Bloodpressure_Normal); if (_bloodPressureHigh > 160) then { - _output = "STR_ACE_Medical_Check_Bloodpressure_Output_4"; - _logOutPut = localize "STR_ACE_Medical_Check_Bloodpressure_High"; + _output = STRING(Check_Bloodpressure_Output_4); + _logOutPut = localize STRING(Check_Bloodpressure_High); }; }; } else { if (random(10) > 3) then { - _output = "STR_ACE_Medical_Check_Bloodpressure_Output_5"; - _logOutPut = localize "STR_ACE_Medical_Check_Bloodpressure_NoBloodpressure"; + _output = STRING(Check_Bloodpressure_Output_5); + _logOutPut = localize STRING(Check_Bloodpressure_NoBloodpressure); } else { - _output = "STR_ACE_Medical_Check_Bloodpressure_Output_6"; + _output = STRING(Check_Bloodpressure_Output_6); }; }; }; @@ -56,5 +56,5 @@ if ([_caller] call FUNC(isMedic)) then { ["displayTextStructured", [_caller], [[_output, [_target] call EFUNC(common,getName), round(_bloodPressureHigh),round(_bloodPressureLow)], 1.75, _caller]] call EFUNC(common,targetEvent); if (_logOutPut != "") then { - [_target,"activity", localize "STR_ACE_Medical_Check_Bloodpressure_Log", [[_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog); + [_target,"activity", localize STRING(Check_Bloodpressure_Log), [[_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog); }; diff --git a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf index b283068ec7..7c2abdf5de 100644 --- a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf @@ -23,24 +23,24 @@ _heartRate = _unit getvariable [QGVAR(heartRate), 80]; if (!alive _unit) then { _heartRate = 0; }; -_heartRateOutput = "STR_ACE_Medical_Check_Pulse_Output_5"; -_logOutPut = localize "STR_ACE_Medical_Check_Pulse_None"; +_heartRateOutput = STRING(Check_Pulse_Output_5); +_logOutPut = localize STRING(Check_Pulse_None); if (_heartRate > 1.0) then { if ([_caller] call FUNC(isMedic)) then { - _heartRateOutput = "STR_ACE_Medical_Check_Pulse_Output_1"; + _heartRateOutput = STRING(Check_Pulse_Output_1); _logOutPut = format["%1",round(_heartRate)]; } else { // non medical personel will only find a pulse/HR - _heartRateOutput = "STR_ACE_Medical_Check_Pulse_Output_2"; - _logOutPut = localize "STR_ACE_Medical_Check_Pulse_Weak"; + _heartRateOutput = STRING(Check_Pulse_Output_2); + _logOutPut = localize STRING(Check_Pulse_Weak); if (_heartRate > 60) then { if (_heartRate > 100) then { - _heartRateOutput = "STR_ACE_Medical_Check_Pulse_Output_3"; - _logOutPut = localize "STR_ACE_Medical_Check_Pulse_Strong"; + _heartRateOutput = STRING(Check_Pulse_Output_3); + _logOutPut = localize STRING(Check_Pulse_Strong); } else { - _heartRateOutput = "STR_ACE_Medical_Check_Pulse_Output_4"; - _logOutPut = localize "STR_ACE_Medical_Check_Pulse_Normal"; + _heartRateOutput = STRING(Check_Pulse_Output_4); + _logOutPut = localize STRING(Check_Pulse_Normal); }; }; }; @@ -49,5 +49,5 @@ if (_heartRate > 1.0) then { ["displayTextStructured", [_caller], [[_heartRateOutput, [_unit] call EFUNC(common,getName), round(_heartRate)], 1.5, _caller]] call EFUNC(common,targetEvent); if (_logOutPut != "") then { - [_unit,"activity", localize "STR_ACE_Medical_Check_Pulse_Log",[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog); + [_unit,"activity", localize STRING(Check_Pulse_Log),[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog); }; diff --git a/addons/medical/functions/fnc_actionCheckResponse.sqf b/addons/medical/functions/fnc_actionCheckResponse.sqf index 92e724a3e0..9a0c87b6d8 100644 --- a/addons/medical/functions/fnc_actionCheckResponse.sqf +++ b/addons/medical/functions/fnc_actionCheckResponse.sqf @@ -20,9 +20,9 @@ _target = _this select 1; _output = ""; if ([_target] call EFUNC(common,isAwake)) then { - _output = "STR_ACE_Medical_Check_Response_Responsive"; + _output = STRING(Check_Response_Responsive); } else { - _output = "STR_ACE_Medical_Check_Response_Unresponsive"; + _output = STRING(Check_Response_Unresponsive); }; ["displayTextStructured", [_caller], [[_output, [_target] call EFUNC(common,getName)], 2, _caller]] call EFUNC(common,targetEvent); diff --git a/addons/medical/functions/fnc_actionDiagnose.sqf b/addons/medical/functions/fnc_actionDiagnose.sqf index d0a5aebc9f..3158f6b844 100644 --- a/addons/medical/functions/fnc_actionDiagnose.sqf +++ b/addons/medical/functions/fnc_actionDiagnose.sqf @@ -18,28 +18,28 @@ private ["_caller", "_target", "_genericMessages"]; _caller = _this select 0; _target = _this select 1; -_genericMessages = ["STR_ACE_Medical_diagnoseMessage"]; +_genericMessages = [STRING(diagnoseMessage)]; _genericMessages pushBack ([_target] call EFUNC(common,getName)); if (alive _target) then { - _genericMessages pushback "STR_ACE_Medical_diagnoseAlive"; + _genericMessages pushback STRING(diagnoseAlive); } else { - _genericMessages pushback "STR_ACE_Medical_diagnoseDead"; + _genericMessages pushback STRING(diagnoseDead); }; if (_target getvariable[QGVAR(hasLostBlood), 0] > 0) then { if (_target getvariable[QGVAR(hasLostBlood), 0] > 1) then { - _genericMessages pushback "STR_ACE_Medical_lostBloodALot"; + _genericMessages pushback STRING(lostBloodALot); } else { - _genericMessages pushback "STR_ACE_Medical_lostBlood"; + _genericMessages pushback STRING(lostBlood); }; } else { - _genericMessages pushback "STR_ACE_Medical_noBloodloss"; + _genericMessages pushback STRING(noBloodloss); }; if (_target getvariable[QGVAR(hasPain), false]) then { - _genericMessages pushback "STR_ACE_Medical_inPain"; + _genericMessages pushback STRING(inPain); } else { - _genericMessages pushback "STR_ACE_Medical_noPain"; + _genericMessages pushback STRING(noPain); }; ["displayTextStructured", [_caller], [_genericMessages, 3.0, _caller]] call EFUNC(common,targetEvent); diff --git a/addons/medical/functions/fnc_displayPatientInformation.sqf b/addons/medical/functions/fnc_displayPatientInformation.sqf index c5c5d23a01..07c49d8e0c 100644 --- a/addons/medical/functions/fnc_displayPatientInformation.sqf +++ b/addons/medical/functions/fnc_displayPatientInformation.sqf @@ -50,22 +50,22 @@ if (_show) then { _genericMessages = []; if (GVAR(level) >= 2) then { - _partText = ["STR_ACE_Interaction_Head", "STR_ACE_Interaction_Torso", "STR_ACE_Interaction_ArmLeft" ,"STR_ACE_Interaction_ArmRight" ,"STR_ACE_Interaction_LegLeft", "STR_ACE_Interaction_LegRight"] select _selectionN; + _partText = [STRING(Head), STRING(Torso), STRING(ArmLeft) ,STRING(ArmRight) ,STRING(LegLeft), STRING(LegRight)] select _selectionN; _genericMessages pushback [localize _partText, [1, 1, 1, 1]]; }; if (_target getvariable[QGVAR(isBleeding), false]) then { - _genericMessages pushback [localize "STR_ACE_Medical_Status_Bleeding", [1, 0.1, 0.1, 1]]; + _genericMessages pushback [localize STRING(Status_Bleeding), [1, 0.1, 0.1, 1]]; }; if (_target getvariable[QGVAR(hasLostBlood), 0] > 1) then { - _genericMessages pushback [localize "STR_ACE_Medical_Status_Lost_Blood", [1, 0.1, 0.1, 1]]; + _genericMessages pushback [localize STRING(Status_Lost_Blood), [1, 0.1, 0.1, 1]]; }; if (((_target getvariable [QGVAR(tourniquets), [0,0,0,0,0,0]]) select _selectionN) > 0) then { - _genericMessages pushback [localize "STR_ACE_Medical_Status_Tourniquet_Applied", [0.77, 0.51, 0.08, 1]]; + _genericMessages pushback [localize STRING(Status_Tourniquet_Applied), [0.77, 0.51, 0.08, 1]]; }; if (_target getvariable[QGVAR(hasPain), false]) then { - _genericMessages pushback [localize "STR_ACE_Medical_Status_Pain", [1, 1, 1, 1]]; + _genericMessages pushback [localize STRING(Status_Pain), [1, 1, 1, 1]]; }; _totalIvVolume = 0; @@ -77,7 +77,7 @@ if (_show) then { }; }foreach GVAR(IVBags); if (_totalIvVolume >= 1) then { - _genericMessages pushback [format[localize "STR_ACE_Medical_receivingIvVolume", floor _totalIvVolume], [1, 1, 1, 1]]; + _genericMessages pushback [format[localize STRING(receivingIvVolume), floor _totalIvVolume], [1, 1, 1, 1]]; }; _damaged = [false, false, false, false, false, false]; @@ -133,17 +133,17 @@ if (_show) then { if (_target getHitPointDamage _x > 0 && {_forEachIndex == _selectionN}) then { _pointDamage = _target getHitPointDamage _x; _severity = switch (true) do { - case (_pointDamage > 0.5): {localize "STR_ACE_Medical_HeavilyWounded"}; - case (_pointDamage > 0.1): {localize "STR_ACE_Medical_LightlyWounded"}; - default {localize "STR_ACE_Medical_VeryLightlyWounded"}; + case (_pointDamage > 0.5): {localize STRING(HeavilyWounded)}; + case (_pointDamage > 0.1): {localize STRING(LightlyWounded)}; + default {localize STRING(VeryLightlyWounded)}; }; _part = localize ([ - "STR_ACE_Medical_Head", - "STR_ACE_Medical_Torso", - "STR_ACE_Medical_LeftArm", - "STR_ACE_Medical_RightArm", - "STR_ACE_Medical_LeftLeg", - "STR_ACE_Medical_RightLeg" + STRING(Head), + STRING(Torso), + STRING(LeftArm), + STRING(RightArm), + STRING(LeftLeg), + STRING(RightLeg) ] select _forEachIndex); _allInjuryTexts pushBack [format ["%1 %2", _severity, toLower _part], [1,1,1,1]]; }; @@ -186,7 +186,7 @@ if (_show) then { _lbCtrl lbSetColor [_foreachIndex + _amountOfGeneric, _x select 1]; }foreach _allInjuryTexts; if (count _allInjuryTexts == 0) then { - _lbCtrl lbAdd (localize "STR_ACE_Medical_NoInjuriesBodypart"); + _lbCtrl lbAdd (localize STRING(NoInjuriesBodypart)); }; _logCtrl = (_display displayCtrl 302); diff --git a/addons/medical/functions/fnc_displayTriageCard.sqf b/addons/medical/functions/fnc_displayTriageCard.sqf index a9054dac46..bc6b412990 100644 --- a/addons/medical/functions/fnc_displayTriageCard.sqf +++ b/addons/medical/functions/fnc_displayTriageCard.sqf @@ -58,7 +58,7 @@ if (_show) then { }foreach _log; if (count _triageCardTexts == 0) then { - _lbCtrl lbAdd (localize "STR_ACE_Medical_TriageCard_NoEntry"); + _lbCtrl lbAdd (localize STRING(TriageCard_NoEntry)); }; { _lbCtrl lbAdd _x; diff --git a/addons/medical/functions/fnc_getTriageStatus.sqf b/addons/medical/functions/fnc_getTriageStatus.sqf index aaeec2d516..26e91882dd 100644 --- a/addons/medical/functions/fnc_getTriageStatus.sqf +++ b/addons/medical/functions/fnc_getTriageStatus.sqf @@ -17,10 +17,10 @@ private ["_unit","_return","_status"]; _unit = _this select 0; _status = _unit getvariable [QGVAR(triageLevel), -1]; _return = switch (_status) do { - case 1: {[localize "STR_ACE_Medical_Triage_Status_Minor", 1, [0, 0.5, 0, 0.9]]}; - case 2: {[localize "STR_ACE_Medical_Triage_Status_Delayed", 2, [0.7, 0.5, 0, 0.9]]}; - case 3: {[localize "STR_ACE_Medical_Triage_Status_Immediate", 3, [0.4, 0.07, 0.07, 0.9]]}; - case 4: {[localize "STR_ACE_Medical_Triage_Status_Deceased", 4, [0, 0, 0, 0.9]]}; - default {[localize "STR_ACE_Medical_Triage_Status_None", 0, [0, 0, 0, 0.9]]}; + case 1: {[localize STRING(Triage_Status_Minor), 1, [0, 0.5, 0, 0.9]]}; + case 2: {[localize STRING(Triage_Status_Delayed), 2, [0.7, 0.5, 0, 0.9]]}; + case 3: {[localize STRING(Triage_Status_Immediate), 3, [0.4, 0.07, 0.07, 0.9]]}; + case 4: {[localize STRING(Triage_Status_Deceased), 4, [0, 0, 0, 0.9]]}; + default {[localize STRING(Triage_Status_None), 0, [0, 0, 0, 0.9]]}; }; _return; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf index 394595ade3..a26d9c2f99 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf @@ -37,6 +37,6 @@ if !([_target] call FUNC(hasMedicalEnabled)) exitwith { }; }foreach _items;*/ -[_target, "activity", "STR_ACE_Medical_Activity_bandagedPatient", [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target, "activity", STRING(Activity_bandagedPatient), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf index c6ac2dc8e5..bed11fe75f 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf @@ -32,6 +32,6 @@ _items = _this select 4; }; }foreach _items; -[_target, "activity", "STR_ACE_Medical_Activity_usedItem", [[_caller] call EFUNC(common,getName), _className]] call FUNC(addToLog); +[_target, "activity", STRING(Activity_usedItem), [[_caller] call EFUNC(common,getName), _className]] call FUNC(addToLog); true; diff --git a/addons/medical/functions/fnc_treatmentIV.sqf b/addons/medical/functions/fnc_treatmentIV.sqf index 2b52d7d37a..81bf437033 100644 --- a/addons/medical/functions/fnc_treatmentIV.sqf +++ b/addons/medical/functions/fnc_treatmentIV.sqf @@ -29,4 +29,4 @@ if (count _items == 0) exitwith {}; _removeItem = _items select 0; [[_target, _className], QUOTE(DFUNC(treatmentIVLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ [_target, _removeItem] call FUNC(addToTriageCard); -[_target, "activity", "STR_ACE_Medical_Activity_gaveIV", [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target, "activity", STRING(Activity_gaveIV), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); diff --git a/addons/medical/functions/fnc_treatmentTourniquet.sqf b/addons/medical/functions/fnc_treatmentTourniquet.sqf index c4ee10011e..63e7df4f56 100644 --- a/addons/medical/functions/fnc_treatmentTourniquet.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquet.sqf @@ -43,7 +43,7 @@ _removeItem = _items select 0; [[_target, _removeItem, _selectionName], QUOTE(DFUNC(treatmentTourniquetLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ [_target, _removeItem] call FUNC(addToTriageCard); -[_target, "activity", "STR_ACE_Medical_Activity_appliedTourniquet", [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target, "activity", STRING(Activity_appliedTourniquet), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); true; diff --git a/addons/medical/ui/RscTitles.hpp b/addons/medical/ui/RscTitles.hpp index dece0e0a8d..06d1dda866 100644 --- a/addons/medical/ui/RscTitles.hpp +++ b/addons/medical/ui/RscTitles.hpp @@ -60,7 +60,7 @@ class Rsctitles { font = "PuristaMedium"; colorText[] = {0.95, 0.95, 0.95, 0.75}; colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"}; - text = "$STR_ACE_Medical_Injuries"; + text = CSTRING(Injuries); }; class InjuryList: ACE_gui_listBoxBase { idc = 200; diff --git a/addons/medical/ui/triagecard.hpp b/addons/medical/ui/triagecard.hpp index c4d3145964..332bfada27 100644 --- a/addons/medical/ui/triagecard.hpp +++ b/addons/medical/ui/triagecard.hpp @@ -49,7 +49,7 @@ class GVAR(triageCard) { font = "PuristaMedium"; colorText[] = {0,0,0,1}; colorBackground[] = {0,0,0,0}; - text = "$STR_ACE_Medical_Actions_TriageCard"; + text = CSTRING(Actions_TriageCard); }; class TriageList: ACE_gui_listBoxBase { idc = 200; diff --git a/addons/microdagr/CfgVehicles.hpp b/addons/microdagr/CfgVehicles.hpp index 949860742d..c4e3897b18 100644 --- a/addons/microdagr/CfgVehicles.hpp +++ b/addons/microdagr/CfgVehicles.hpp @@ -5,7 +5,7 @@ class CfgVehicles { class ACE_Equipment { class GVAR(show) { //Opens the mini map - displayName = "$STR_ACE_microdagr_show"; + displayName = CSTRING(show); condition = QUOTE(([DISPLAY_MODE_DISPLAY] call FUNC(canShow)) && {GVAR(currentShowMode) != DISPLAY_MODE_DISPLAY}); statement = QUOTE([DISPLAY_MODE_DISPLAY] call FUNC(openDisplay)); showDisabled = 0; @@ -15,7 +15,7 @@ class CfgVehicles { }; class GVAR(configure) { //Opens the dialog - displayName = "$STR_ACE_microdagr_configure"; + displayName = CSTRING(configure); condition = QUOTE(([DISPLAY_MODE_DIALOG] call FUNC(canShow)) && {GVAR(currentShowMode) != DISPLAY_MODE_DIALOG}); statement = QUOTE([DISPLAY_MODE_DIALOG] call FUNC(openDisplay)); showDisabled = 0; @@ -24,7 +24,7 @@ class CfgVehicles { exceptions[] = {"notOnMap", "isNotInside"}; }; class GVAR(close) { - displayName = "$STR_ACE_microdagr_closeUnit"; + displayName = CSTRING(closeUnit); condition = QUOTE(GVAR(currentShowMode) != DISPLAY_MODE_CLOSED); statement = QUOTE([DISPLAY_MODE_CLOSED] call FUNC(openDisplay)); showDisabled = 0; @@ -44,7 +44,7 @@ class CfgVehicles { class GVAR(dagrModule): Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_Dagr_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); function = QFUNC(moduleMapFill); scope = 2; isGlobal = 1; @@ -52,18 +52,18 @@ class CfgVehicles { functionPriority = 0; class Arguments { class MapDataAvailable { - displayName = "$STR_ACE_Dagr_MapDataAvailable_DisplayName"; - description = "$STR_ACE_Dagr_MapDataAvailable_Description"; + displayName = CSTRING(MapDataAvailable_DisplayName); + description = CSTRING(MapDataAvailable_Description); typeName = "NUMBER"; class values { - class None {name = "$STR_ACE_Dagr_None"; value = MAP_DETAIL_SAT; default = 1;}; - class Side {name = "$STR_ACE_Dagr_Side"; value = MAP_DETAIL_TOPOROADS;}; - class Unique {name = "$STR_ACE_Dagr_Unique"; value = MAP_DETAIL_NONE;}; + class None {name = CSTRING(None); value = MAP_DETAIL_SAT; default = 1;}; + class Side {name = CSTRING(Side); value = MAP_DETAIL_TOPOROADS;}; + class Unique {name = CSTRING(Unique); value = MAP_DETAIL_NONE;}; }; }; }; class ModuleDescription: ModuleDescription { - description = "$STR_ACE_Dagr_Module_Description"; + description = CSTRING(Module_Description); }; }; @@ -78,7 +78,7 @@ class CfgVehicles { class ACE_microDAGR_Item: Item_Base_F { scope = 2; scopeCurator = 2; - displayName = "$STR_ACE_microdagr_itemName"; + displayName = CSTRING(itemName); author = "$STR_ACE_Common_ACETeam"; vehicleClass = "Items"; icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa)); diff --git a/addons/microdagr/CfgWeapons.hpp b/addons/microdagr/CfgWeapons.hpp index 73615ea6b6..16cf7c5a59 100644 --- a/addons/microdagr/CfgWeapons.hpp +++ b/addons/microdagr/CfgWeapons.hpp @@ -5,8 +5,8 @@ class CfgWeapons { class ACE_microDAGR: ACE_ItemCore { author = "$STR_ACE_Common_ACETeam"; scope = 2; - displayName = "$STR_ACE_microdagr_itemName"; - descriptionShort = "$STR_ACE_microdagr_itemDescription"; + displayName = CSTRING(itemName); + descriptionShort = CSTRING(itemDescription); picture = QUOTE(PATHTOF(images\microDAGR_item.paa)); class ItemInfo: InventoryItem_Base_F { mass = 2; diff --git a/addons/microdagr/XEH_clientInit.sqf b/addons/microdagr/XEH_clientInit.sqf index 587bf85ef5..892b8c2c46 100644 --- a/addons/microdagr/XEH_clientInit.sqf +++ b/addons/microdagr/XEH_clientInit.sqf @@ -4,7 +4,7 @@ if (!hasInterface) exitWith {}; //Add Keybinds: -["ACE3 Equipment", QGVAR(openGPS), (localize "STR_ACE_microdagr_toggleUnit"), +["ACE3 Equipment", QGVAR(openGPS), (localize STRING(toggleUnit)), { // canInteractWith (can use on map) if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -17,7 +17,7 @@ if (!hasInterface) exitWith {}; {false}, [0xC7, [false, false, false]], false] call cba_fnc_addKeybind; //Home Key -["ACE3 Equipment", QGVAR(closeGPS), (localize "STR_ACE_microdagr_closeUnit"), +["ACE3 Equipment", QGVAR(closeGPS), (localize STRING(closeUnit)), { // canInteractWith (can use on map) if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/microdagr/functions/fnc_showApplicationPage.sqf b/addons/microdagr/functions/fnc_showApplicationPage.sqf index a9e6d10db7..cfa364eeee 100644 --- a/addons/microdagr/functions/fnc_showApplicationPage.sqf +++ b/addons/microdagr/functions/fnc_showApplicationPage.sqf @@ -88,10 +88,10 @@ if (GVAR(currentApplicationPage) == APP_MODE_MARK) then { if ((count GVAR(newWaypointPosition)) == 0) then { - (_display displayCtrl IDC_MODEMARK_HEADER) ctrlSetText (localize "STR_ACE_microdagr_wpEnterCords"); + (_display displayCtrl IDC_MODEMARK_HEADER) ctrlSetText (localize STRING(wpEnterCords)); (_display displayCtrl IDC_MODEMARK_CORDSEDIT) ctrlSetText ""; } else { - (_display displayCtrl IDC_MODEMARK_HEADER) ctrlSetText format [(localize "STR_ACE_microdagr_wpEnterName"), mapGridPosition GVAR(newWaypointPosition)]; + (_display displayCtrl IDC_MODEMARK_HEADER) ctrlSetText format [(localize STRING(wpEnterName)), mapGridPosition GVAR(newWaypointPosition)]; (_display displayCtrl IDC_MODEMARK_CORDSEDIT) ctrlSetText format ["[%1]", mapGridPosition GVAR(newWaypointPosition)]; }; ctrlSetFocus (_display displayCtrl IDC_MODEMARK_CORDSEDIT); diff --git a/addons/microdagr/functions/fnc_updateDisplay.sqf b/addons/microdagr/functions/fnc_updateDisplay.sqf index 26e5ef8638..fca5e9ed3b 100644 --- a/addons/microdagr/functions/fnc_updateDisplay.sqf +++ b/addons/microdagr/functions/fnc_updateDisplay.sqf @@ -181,18 +181,18 @@ case (APP_MODE_SETUP): { _settingListBox = _display displayCtrl IDC_MODESETTINGS; lbClear _settingListBox; - _settingListBox lbAdd (localize "STR_ACE_microdagr_settingUseMils"); + _settingListBox lbAdd (localize STRING(settingUseMils)); if (GVAR(settingUseMils)) then { - _settingListBox lbSetTextRight [0, (localize "STR_ACE_microdagr_settingMils")]; + _settingListBox lbSetTextRight [0, (localize STRING(settingMils))]; } else { - _settingListBox lbSetTextRight [0, (localize "STR_ACE_microdagr_settingDegrees")]; + _settingListBox lbSetTextRight [0, (localize STRING(settingDegrees))]; }; - _settingListBox lbAdd (localize "STR_ACE_microdagr_settingShowWP"); + _settingListBox lbAdd (localize STRING(settingShowWP)); if (GVAR(settingShowAllWaypointsOnMap)) then { - _settingListBox lbSetTextRight [1, (localize "STR_ACE_microdagr_settingOn")]; + _settingListBox lbSetTextRight [1, (localize STRING(settingOn))]; } else { - _settingListBox lbSetTextRight [1, (localize "STR_ACE_microdagr_settingOff")]; + _settingListBox lbSetTextRight [1, (localize STRING(settingOff))]; }; }; }; diff --git a/addons/microdagr/gui_controls.hpp b/addons/microdagr/gui_controls.hpp index 9d73393e08..50e9083ed6 100644 --- a/addons/microdagr/gui_controls.hpp +++ b/addons/microdagr/gui_controls.hpp @@ -172,7 +172,7 @@ class controls { class Controls { class MGRSNew: GVAR(RscText) { idc = -1; - text = "$STR_ACE_microdagr_controlMGRS"; + text = CSTRING(controlMGRS); x = W_PART(0.5); y = H_PART(0); w = W_PART(10); @@ -182,7 +182,7 @@ class controls { class WGD: GVAR(RscText) { idc = -1; style = ST_RIGHT; - text = "$STR_ACE_microdagr_controlWGD"; + text = CSTRING(controlWGD); x = W_PART(14.5); y = H_PART(0); w = W_PART(10); @@ -345,7 +345,7 @@ class controls { }; class TargetRangeText: GVAR(RscText) { idc = -1; - text = "$STR_ACE_microdagr_controlRange"; + text = CSTRING(controlRange); x = W_PART(0.5); y = H_PART(2); w = W_PART(7.5); @@ -408,7 +408,7 @@ class controls { class CompassHeader: GVAR(RscText) { idc = -1; style = ST_CENTER; - text = "$STR_ACE_microdagr_compasDirection"; + text = CSTRING(compasDirection); x = W_PART(0); y = H_PART(0); w = W_PART(25); @@ -513,7 +513,7 @@ class controls { class TextTL: GVAR(RscText) { idc = -1; style = ST_CENTER; - text = "$STR_ACE_microdagr_menuMark"; + text = CSTRING(menuMark); x = W_PART(0); y = H_PART(7.5); w = W_PART(14); @@ -521,17 +521,17 @@ class controls { sizeEx = H_PART(1.2); }; class TextTR: TextTL { - text = "$STR_ACE_microdagr_menuWaypoints"; + text = CSTRING(menuWaypoints); x = W_PART(11); y = H_PART(7.5); }; class TextBL: TextTL { - text = "$STR_ACE_microdagr_menuConnectTo"; + text = CSTRING(menuConnectTo); x = W_PART(0); y = H_PART(16.5); }; class TextBR: TextTL { - text = "$STR_ACE_microdagr_menuSettings"; + text = CSTRING(menuSettings); x = W_PART(11); y = H_PART(16.5); }; @@ -678,7 +678,7 @@ class controls { class ButtonSetWP: RscButton { idc = -1; - text = "$STR_ACE_microdagr_waypointsSet"; + text = CSTRING(waypointsSet); x = W_PART(1); y = H_PART(17); w = W_PART(7); @@ -693,12 +693,12 @@ class controls { onbuttonclick = QUOTE(_this call FUNC(appWaypointsButtonSetWP)); }; class ButtonAdd: ButtonSetWP { - text = "$STR_ACE_microdagr_waypointsAdd"; + text = CSTRING(waypointsAdd); x = W_PART(9); onbuttonclick = QUOTE([APP_MODE_MARK] call FUNC(saveCurrentAndSetNewMode)); }; class ButtonDelete: ButtonSetWP { - text = "$STR_ACE_microdagr_waypointsDelete"; + text = CSTRING(waypointsDelete); x = W_PART(17); onbuttonclick = QUOTE(_this call FUNC(appWaypointsButtonDeleteWP)); }; diff --git a/addons/missileguidance/ACE_Settings.hpp b/addons/missileguidance/ACE_Settings.hpp index c04e6c080c..9a2c81c2bf 100644 --- a/addons/missileguidance/ACE_Settings.hpp +++ b/addons/missileguidance/ACE_Settings.hpp @@ -4,7 +4,7 @@ class ACE_Settings { typeName = "SCALAR"; isClientSettable = 1; displayName = "$STR_ACE_MissileGuidance"; - description = "$STR_ACE_MissileGuidance_Desc"; + description = CSTRING(Desc); values[] = {"$STR_ACE_MissileGuidance_Off", "$STR_ACE_MissileGuidance_PlayerOnly", "$STR_ACE_MissileGuidance_PlayerAndAi"}; }; }; \ No newline at end of file diff --git a/addons/missileguidance/CfgAmmo.hpp b/addons/missileguidance/CfgAmmo.hpp index 6c0e54eb3a..d277b31e2a 100644 --- a/addons/missileguidance/CfgAmmo.hpp +++ b/addons/missileguidance/CfgAmmo.hpp @@ -69,19 +69,19 @@ class CfgAmmo { }; class ACE_Hydra70_DAGR : M_PG_AT { - displayName = "$STR_ACE_Hydra70_DAGR"; - displayNameShort = "$STR_ACE_Hydra70_DAGR_Short"; + displayName = CSTRING(DAGR); + displayNameShort = CSTRING(DAGR_Short); - description = "$STR_ACE_Hydra70_DAGR"; - descriptionShort = "$STR_ACE_Hydra70_DAGR_Desc"; + description = CSTRING(DAGR); + descriptionShort = CSTRING(DAGR_Desc); }; class ACE_Hellfire_AGM114K : ACE_Hydra70_DAGR { - displayName = "$STR_ACE_Hellfire_AGM114K"; - displayNameShort = "$STR_ACE_Hellfire_AGM114K_Short"; + displayName = CSTRING(AGM114K); + displayNameShort = CSTRING(AGM114K_Short); - description = "$STR_ACE_Hellfire_AGM114K_desc"; - descriptionShort = "$STR_ACE_Hellfire_AGM114K_desc"; + description = CSTRING(AGM114K_desc); + descriptionShort = CSTRING(AGM114K_desc); // @TODO: placeholder model to at least make it look different model = "\A3\Weapons_F\Ammo\Missile_AT_03_fly_F"; diff --git a/addons/missionmodules/CfgFactionClasses.hpp b/addons/missionmodules/CfgFactionClasses.hpp index 6f320805fb..fc4abc3606 100644 --- a/addons/missionmodules/CfgFactionClasses.hpp +++ b/addons/missionmodules/CfgFactionClasses.hpp @@ -1,6 +1,6 @@ class CfgFactionClasses { class NO_CATEGORY; class ACE_missionModules: NO_CATEGORY { - displayName = "$STR_ACE_MissionModules_Category_DisplayName"; + displayName = CSTRING(Category_DisplayName); }; }; \ No newline at end of file diff --git a/addons/missionmodules/CfgVehicles.hpp b/addons/missionmodules/CfgVehicles.hpp index a08e78f17b..80ecd6fa80 100644 --- a/addons/missionmodules/CfgVehicles.hpp +++ b/addons/missionmodules/CfgVehicles.hpp @@ -8,7 +8,7 @@ class CfgVehicles { // TODO make a curator variant for this class ACE_moduleAmbianceSound: Module_F { scope = 2; - displayName = "$STR_ACE_MissionModules_AmbianceSounds_DisplayName"; + displayName = CSTRING(AmbianceSounds_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Ambient_Sounds_ca.paa)); category = "ACE_missionModules"; function = QUOTE(FUNC(moduleAmbianceSound)); @@ -18,50 +18,50 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class soundFiles { - displayName = "$STR_ACE_MissionModules_AmbianceSounds_soundFiles_DisplayName"; - description = "$STR_ACE_MissionModules_AmbianceSounds_soundFiles_Description"; + displayName = CSTRING(AmbianceSounds_soundFiles_DisplayName); + description = CSTRING(AmbianceSounds_soundFiles_Description); typeName = "STRING"; defaultValue = ""; }; class minimalDistance { - displayName = "$STR_ACE_MissionModules_AmbianceSounds_minimalDistance_DisplayName"; - description = "$STR_ACE_MissionModules_AmbianceSounds_minimalDistance_Description"; + displayName = CSTRING(AmbianceSounds_minimalDistance_DisplayName); + description = CSTRING(AmbianceSounds_minimalDistance_Description); typeName = "NUMBER"; defaultValue = 400; }; class maximalDistance { - displayName = "$STR_ACE_MissionModules_AmbianceSounds_maximalDistance_DisplayName"; - description = "$STR_ACE_MissionModules_AmbianceSounds_maximalDistance_Description"; + displayName = CSTRING(AmbianceSounds_maximalDistance_DisplayName); + description = CSTRING(AmbianceSounds_maximalDistance_Description); typeName = "NUMBER"; defaultValue = 900; }; class minimalDelay { - displayName = "$STR_ACE_MissionModules_AmbianceSounds_minimalDelay_DisplayName"; - description = "$STR_ACE_MissionModules_AmbianceSounds_minimalDelay_Description"; + displayName = CSTRING(AmbianceSounds_minimalDelay_DisplayName); + description = CSTRING(AmbianceSounds_minimalDelay_Description); typeName = "NUMBER"; defaultValue = 10; }; class maximalDelay { - displayName = "$STR_ACE_MissionModules_AmbianceSounds_maximalDelay_DisplayName"; - description = "$STR_ACE_MissionModules_AmbianceSounds_maximalDelay_Description"; + displayName = CSTRING(AmbianceSounds_maximalDelay_DisplayName); + description = CSTRING(AmbianceSounds_maximalDelay_Description); typeName = "NUMBER"; defaultValue = 170; }; class followPlayers { - displayName = "$STR_ACE_MissionModules_AmbianceSounds_followPlayers_DisplayName"; - description = "$STR_ACE_MissionModules_AmbianceSounds_followPlayers_Description"; + displayName = CSTRING(AmbianceSounds_followPlayers_DisplayName); + description = CSTRING(AmbianceSounds_followPlayers_Description); typeName = "BOOL"; defaultValue = 0; }; class soundVolume { - displayName = "$STR_ACE_MissionModules_AmbianceSounds_soundVolume_DisplayName"; - description = "$STR_ACE_MissionModules_AmbianceSounds_soundVolume_Description"; + displayName = CSTRING(AmbianceSounds_soundVolume_DisplayName); + description = CSTRING(AmbianceSounds_soundVolume_Description); typeName = "NUMBER"; defaultValue = 1; }; }; class ModuleDescription { - description = "$STR_ACE_MissionModules_AmbianceSounds_Description"; + description = CSTRING(AmbianceSounds_Description); sync[] = {}; }; }; diff --git a/addons/mk6mortar/CfgVehicles.hpp b/addons/mk6mortar/CfgVehicles.hpp index e4a9d0f2a5..e910baa645 100644 --- a/addons/mk6mortar/CfgVehicles.hpp +++ b/addons/mk6mortar/CfgVehicles.hpp @@ -4,7 +4,7 @@ class CfgVehicles { class ACE_SelfActions { class ACE_Equipment { class GVAR(rangetable) { - displayName = "$STR_ACE_MK6MORTAR_rangetable_action"; + displayName = CSTRING(rangetable_action); condition = QUOTE(_this call FUNC(rangeTableCanUse)); statement = QUOTE(_this call FUNC(rangeTableOpen)); priority = 0; @@ -50,7 +50,7 @@ class CfgVehicles { class GVAR(module): Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_mk6mortar_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); function = QFUNC(moduleInit); scope = 2; isGlobal = 0; @@ -58,26 +58,26 @@ class CfgVehicles { functionPriority = 0; class Arguments { class airResistanceEnabled { - displayName = "$STR_ACE_mk6mortar_airResistanceEnabled_DisplayName"; - description = "$STR_ACE_mk6mortar_airResistanceEnabled_Description"; + displayName = CSTRING(airResistanceEnabled_DisplayName); + description = CSTRING(airResistanceEnabled_Description); typeName = "BOOL"; defaultValue = 1; }; class allowComputerRangefinder { - displayName = "$STR_ACE_mk6mortar_allowComputerRangefinder_DisplayName"; - description = "$STR_ACE_mk6mortar_allowComputerRangefinder_Description"; + displayName = CSTRING(allowComputerRangefinder_DisplayName); + description = CSTRING(allowComputerRangefinder_Description); typeName = "BOOL"; defaultValue = 0; }; class allowCompass { - displayName = "$STR_ACE_mk6mortar_allowCompass_DisplayName"; - description = "$STR_ACE_mk6mortar_allowCompass_Description"; + displayName = CSTRING(allowCompass_DisplayName); + description = CSTRING(allowCompass_Description); typeName = "BOOL"; defaultValue = 1; }; }; class ModuleDescription: ModuleDescription { - description = "$STR_ACE_mk6mortar_Module_Description"; + description = CSTRING(Module_Description); }; }; }; \ No newline at end of file diff --git a/addons/mk6mortar/CfgWeapons.hpp b/addons/mk6mortar/CfgWeapons.hpp index 7d5153e9ad..0e53d2016d 100644 --- a/addons/mk6mortar/CfgWeapons.hpp +++ b/addons/mk6mortar/CfgWeapons.hpp @@ -5,8 +5,8 @@ class CfgWeapons { class ACE_RangeTable_82mm: ACE_ItemCore { author = "$STR_ACE_Common_ACETeam"; scope = 2; - displayName = "$STR_ACE_MK6MORTAR_rangetable_name"; - descriptionShort = "$STR_ACE_MK6MORTAR_rangetable_description"; + displayName = CSTRING(rangetable_name); + descriptionShort = CSTRING(rangetable_description); picture = QUOTE(PATHTOF(UI\icon_rangeTable.paa)); class ItemInfo: InventoryItem_Base_F { mass = 0.5; diff --git a/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf b/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf index 91657fdbe2..697b169d5b 100644 --- a/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf +++ b/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf @@ -51,7 +51,7 @@ _fireModes = getArray (configFile >> "CfgWeapons" >> _tubeWeaponName >> "modes") _currentFireMode = (weaponState [_mortarVeh, [0]]) select 2; _currentChargeMode = _fireModes find _currentFireMode; - _text = format ["%1: %2 ", (localize "STR_ACE_MK6MORTAR_rangetable_charge"), _currentChargeMode, QUOTE(PATHTOF(UI\ui_charges.paa))]; + _text = format ["%1: %2 ", (localize STRING(rangetable_charge)), _currentChargeMode, QUOTE(PATHTOF(UI\ui_charges.paa))]; _chargeText ctrlSetStructuredText parseText _text; if (shownArtilleryComputer && {!GVAR(allowComputerRangefinder)}) then { //Don't like this solution, but it works diff --git a/addons/mk6mortar/functions/fnc_rangeTableOpen.sqf b/addons/mk6mortar/functions/fnc_rangeTableOpen.sqf index dfb53842ab..8f9fea3dcb 100644 --- a/addons/mk6mortar/functions/fnc_rangeTableOpen.sqf +++ b/addons/mk6mortar/functions/fnc_rangeTableOpen.sqf @@ -39,7 +39,7 @@ _muzzleVelocities = []; _showToPlayer = getNumber (configFile >> "CfgWeapons" >> _weaponName >> _x >> "showToPlayer"); if (_showToPlayer == 1) then { _artilleryCharge = getNumber (configFile >> "CfgWeapons" >> _weaponName >> _x >> "artilleryCharge"); - LIST_CHARGE lbAdd format ["%1: %2", (localize "STR_ACE_MK6MORTAR_rangetable_charge"), (count _muzzleVelocities)]; + LIST_CHARGE lbAdd format ["%1: %2", (localize STRING(rangetable_charge)), (count _muzzleVelocities)]; LIST_CHARGE lbSetData [(count _muzzleVelocities), str (_artilleryCharge * _initSpeed)]; _muzzleVelocities pushBack _artilleryCharge; }; diff --git a/addons/movement/ACE_Settings.hpp b/addons/movement/ACE_Settings.hpp index 05b38106f3..8424f9cba9 100644 --- a/addons/movement/ACE_Settings.hpp +++ b/addons/movement/ACE_Settings.hpp @@ -3,6 +3,6 @@ class ACE_Settings { value = 0; typeName = "BOOL"; isClientSettable = 1; - displayName = "$STR_ACE_Movement_UseImperial"; + displayName = CSTRING(UseImperial); }; }; \ No newline at end of file diff --git a/addons/movement/XEH_postInit.sqf b/addons/movement/XEH_postInit.sqf index 0e451832d9..7925727b85 100644 --- a/addons/movement/XEH_postInit.sqf +++ b/addons/movement/XEH_postInit.sqf @@ -14,13 +14,13 @@ if (!hasInterface) exitWith {}; [_this select 1] call CBA_fnc_removePerFrameHandler; }; - _dialog displayCtrl 111 ctrlSetText format ["%1 - %2 %3", [ACE_player] call EFUNC(common,getName), localize "STR_ACE_Movement_Weight", [ACE_player] call FUNC(getWeight)]; + _dialog displayCtrl 111 ctrlSetText format ["%1 - %2 %3", [ACE_player] call EFUNC(common,getName), localize STRING(Weight), [ACE_player] call FUNC(getWeight)]; }, 0, _this select 0] call CBA_fnc_addPerFrameHandler; }] call EFUNC(common,addEventHandler); -["ACE3 Movement", QGVAR(climb), localize "STR_ACE_Movement_Climb", +["ACE3 Movement", QGVAR(climb), localize STRING(Climb), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/movement/functions/fnc_climb.sqf b/addons/movement/functions/fnc_climb.sqf index f88884195e..d9d0a2adfd 100644 --- a/addons/movement/functions/fnc_climb.sqf +++ b/addons/movement/functions/fnc_climb.sqf @@ -20,7 +20,7 @@ private "_unit"; _unit = _this select 0; if !([_unit] call FUNC(canClimb)) exitWith { - [localize "STR_ACE_Movement_CanNotClimb"] call EFUNC(common,displayTextStructured); + [localize STRING(CanNotClimb)] call EFUNC(common,displayTextStructured); }; if !(_unit getVariable [QGVAR(isClimbInit), false]) then { diff --git a/addons/nametags/ACE_Settings.hpp b/addons/nametags/ACE_Settings.hpp index a2c81e61b4..a4e1892a4a 100644 --- a/addons/nametags/ACE_Settings.hpp +++ b/addons/nametags/ACE_Settings.hpp @@ -3,33 +3,33 @@ class ACE_Settings { value[] = {0.77, 0.51, 0.08, 1}; typeName = "COLOR"; isClientSettable = 1; - displayName = "$STR_ACE_NameTags_DefaultNametagColor"; + displayName = CSTRING(DefaultNametagColor); }; class GVAR(showPlayerNames) { value = 1; typeName = "SCALAR"; isClientSettable = 1; - displayName = "$STR_ACE_NameTags_ShowPlayerNames"; - description = "$STR_ACE_NameTags_ShowPlayerNames_Desc"; + displayName = CSTRING(ShowPlayerNames); + description = CSTRING(ShowPlayerNames_Desc); values[] = {"$STR_ACE_Common_Disabled", "$STR_ACE_Common_Enabled", "$STR_ACE_Common_OnlyCursor", "$STR_ACE_Common_OnlyOnKeypress", "$STR_ACE_Common_OnlyCursorAndKeyPress"}; }; class GVAR(showPlayerRanks) { value = 1; typeName = "BOOL"; isClientSettable = 1; - displayName = "$STR_ACE_NameTags_ShowPlayerRanks"; + displayName = CSTRING(ShowPlayerRanks); }; class GVAR(showVehicleCrewInfo) { value = 1; typeName = "BOOL"; isClientSettable = 1; - displayName = "$STR_ACE_NameTags_ShowVehicleCrewInfo"; + displayName = CSTRING(ShowVehicleCrewInfo); }; class GVAR(showNamesForAI) { value = 0; typeName = "BOOL"; isClientSettable = 1; - displayName = "$STR_ACE_NameTags_ShowNamesForAI"; + displayName = CSTRING(ShowNamesForAI); }; class GVAR(showCursorTagForVehicles) { value = 0; @@ -40,8 +40,8 @@ class ACE_Settings { value = 1; typeName = "SCALAR"; isClientSettable = 1; - displayName = "$STR_ACE_NameTags_ShowSoundWaves"; - description = "$STR_ACE_NameTags_ShowSoundWaves_Desc"; + displayName = CSTRING(ShowSoundWaves); + description = CSTRING(ShowSoundWaves_Desc); values[] = {"$STR_ACE_Common_Disabled", "$STR_ACE_Common_NameTagSettings", "$STR_ACE_Common_AlwaysShowAll"}; }; class GVAR(PlayerNamesViewDistance) { diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index fabd3b09cb..74bae81363 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -6,67 +6,67 @@ class CfgVehicles { class ACE_ModuleNameTags : Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_NameTags_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); function = QFUNC(moduleNameTags); scope = 2; isGlobal = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_NameTags_ca.paa)); class Arguments { class PlayerNamesViewDistance { - displayName = "$STR_ACE_NameTags_PlayerNamesViewDistance_DisplayName"; - description = "$STR_ACE_NameTags_PlayerNamesViewDistance_Description"; + displayName = CSTRING(PlayerNamesViewDistance_DisplayName); + description = CSTRING(PlayerNamesViewDistance_Description); typeName = "NUMBER"; defaultValue = 5; }; class showNamesForAI { - displayName = "$STR_ACE_NameTags_showNamesForAI_DisplayName"; - description = "$STR_ACE_NameTags_showNamesForAI_Description"; + displayName = CSTRING(showNamesForAI_DisplayName); + description = CSTRING(showNamesForAI_Description); typeName = "NUMBER"; class values { class DoNotForce { default = 1; - name = "$STR_ACE_NameTags_DoNotForce"; + name = CSTRING(DoNotForce); value = -1; }; class ForceHide { - name = "$STR_ACE_NameTags_ForceHide"; + name = CSTRING(ForceHide); value = 0; }; class ForceShow { - name = "$STR_ACE_NameTags_ForceShow"; + name = CSTRING(ForceShow); value = 1; }; }; }; class showVehicleCrewInfo { - displayName = "$STR_ACE_NameTags_showVehicleCrewInfo_DisplayName"; - description = "$STR_ACE_NameTags_showVehicleCrewInfo_Description"; + displayName = CSTRING(showVehicleCrewInfo_DisplayName); + description = CSTRING(showVehicleCrewInfo_Description); typeName = "NUMBER"; class values { class DoNotForce { default = 1; - name = "$STR_ACE_NameTags_DoNotForce"; + name = CSTRING(DoNotForce); value = -1; }; class ForceHide { - name = "$STR_ACE_NameTags_ForceHide"; + name = CSTRING(ForceHide); value = 0; }; class ForceShow { - name = "$STR_ACE_NameTags_ForceShow"; + name = CSTRING(ForceShow); value = 1; }; }; }; class showCursorTagForVehicles { - displayName = "$STR_ACE_NameTags_showCursorTagForVehicles_DisplayName"; - description = "$STR_ACE_NameTags_showCursorTagForVehicles_Description"; + displayName = CSTRING(showCursorTagForVehicles_DisplayName); + description = CSTRING(showCursorTagForVehicles_Description); typeName = "BOOL"; defaultValue = 0; }; }; class ModuleDescription: ModuleDescription { - description = "$STR_ACE_NameTags_Module_Description"; + description = CSTRING(Module_Description); }; }; }; \ No newline at end of file diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index 4e40afafd0..2d3366ae84 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -8,7 +8,7 @@ if (!hasInterface) exitWith {}; GVAR(ShowNamesTime) = -10; // Add keybinds -["ACE3 Common", QGVAR(showNameTags), localize "STR_ACE_NameTags_ShowNames", +["ACE3 Common", QGVAR(showNameTags), localize STRING(ShowNames), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/nightvision/CfgWeapons.hpp b/addons/nightvision/CfgWeapons.hpp index c40885c2c4..ed3a1d71b5 100644 --- a/addons/nightvision/CfgWeapons.hpp +++ b/addons/nightvision/CfgWeapons.hpp @@ -1,22 +1,22 @@ class CfgWeapons { class Binocular; class NVGoggles: Binocular { - displayName = "$STR_ACE_NightVision_NVG_Gen3_brown"; + displayName = CSTRING(NVG_Gen3_brown); ACE_NightVision_grain = 0.75; ACE_NightVision_blur = 0.055; ACE_NightVision_radBlur = 0.001; }; class NVGoggles_OPFOR: NVGoggles { - displayName = "$STR_ACE_NightVision_NVG_Gen3_black"; + displayName = CSTRING(NVG_Gen3_black); }; class NVGoggles_INDEP: NVGoggles { - displayName = "$STR_ACE_NightVision_NVG_Gen3_green"; + displayName = CSTRING(NVG_Gen3_green); }; class ACE_NVG_Gen1: NVGoggles_OPFOR { author = "$STR_ACE_Common_ACETeam"; modelOptics = "\A3\weapons_f\reticle\optics_night"; - displayName = "$STR_ACE_NightVision_NVG_Gen1"; + displayName = CSTRING(NVG_Gen1); ACE_NightVision_grain = 2.25; ACE_NightVision_blur = 0.22; ACE_NightVision_radBlur = 0.004; @@ -24,7 +24,7 @@ class CfgWeapons { class ACE_NVG_Gen2: NVGoggles_INDEP { author = "$STR_ACE_Common_ACETeam"; modelOptics = "\A3\weapons_f\reticle\optics_night"; - displayName = "$STR_ACE_NightVision_NVG_Gen2"; + displayName = CSTRING(NVG_Gen2); ACE_NightVision_grain = 1.5; ACE_NightVision_blur = 0.11; ACE_NightVision_radBlur = 0.002; @@ -32,7 +32,7 @@ class CfgWeapons { /*class ACE_NVG_Gen3: NVGoggles { author = "$STR_ACE_Common_ACETeam"; modelOptics = "\A3\weapons_f\reticle\optics_night"; - displayName = "$STR_ACE_NightVision_NVG_Gen3"; + displayName = CSTRING(NVG_Gen3); ACE_NightVision_grain = 0.75; ACE_NightVision_blur = 0.055; ACE_NightVision_radBlur = 0.001; @@ -40,7 +40,7 @@ class CfgWeapons { class ACE_NVG_Gen4: NVGoggles { author = "$STR_ACE_Common_ACETeam"; modelOptics = "\A3\weapons_f\reticle\optics_night"; - displayName = "$STR_ACE_NightVision_NVG_Gen4"; + displayName = CSTRING(NVG_Gen4); ACE_NightVision_grain = 0.0; ACE_NightVision_blur = 0.0; ACE_NightVision_radBlur = 0.0; @@ -48,7 +48,7 @@ class CfgWeapons { class ACE_NVG_Wide: NVGoggles { author = "$STR_ACE_Common_ACETeam"; modelOptics = QUOTE(PATHTOF(models\ACE_nvg_wide_optics)); - displayName = "$STR_ACE_NightVision_NVG_FullScreen"; + displayName = CSTRING(NVG_FullScreen); ACE_NightVision_grain = 0.75; ACE_NightVision_blur = 0.055; ACE_NightVision_radBlur = 0.001; diff --git a/addons/nightvision/XEH_postInitClient.sqf b/addons/nightvision/XEH_postInitClient.sqf index 3edc3edad5..cf4541a86a 100644 --- a/addons/nightvision/XEH_postInitClient.sqf +++ b/addons/nightvision/XEH_postInitClient.sqf @@ -37,7 +37,7 @@ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; ["playerTurretChanged", {_this call FUNC(updatePPEffects)}] call EFUNC(common,addEventHandler); // Add keybinds -["ACE3 Equipment", QGVAR(IncreaseNVGBrightness), localize "STR_ACE_NightVision_IncreaseNVGBrightness", +["ACE3 Equipment", QGVAR(IncreaseNVGBrightness), localize STRING(IncreaseNVGBrightness), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotEscorting", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -51,7 +51,7 @@ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; {false}, [201, [false, false, true]], false] call cba_fnc_addKeybind; //PageUp + ALT -["ACE3 Equipment", QGVAR(DecreaseNVGBrightness), localize "STR_ACE_NightVision_DecreaseNVGBrightness", +["ACE3 Equipment", QGVAR(DecreaseNVGBrightness), localize STRING(DecreaseNVGBrightness), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotEscorting", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/nightvision/functions/fnc_changeNVGBrightness.sqf b/addons/nightvision/functions/fnc_changeNVGBrightness.sqf index e1894aba00..ac80f96c9c 100644 --- a/addons/nightvision/functions/fnc_changeNVGBrightness.sqf +++ b/addons/nightvision/functions/fnc_changeNVGBrightness.sqf @@ -29,5 +29,5 @@ _player setVariable [QGVAR(NVGBrightness), _brightness, false]; GVAR(ppEffectNVGBrightness) ppEffectAdjust [1, 1, _brightness / 4, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]; GVAR(ppEffectNVGBrightness) ppEffectCommit 0; -[format [(localize "STR_ACE_NightVision_NVGBrightness"), (_brightness * 100)]] call EFUNC(common,displayTextStructured); +[format [(localize STRING(NVGBrightness)), (_brightness * 100)]] call EFUNC(common,displayTextStructured); playSound "ACE_Sound_Click"; diff --git a/addons/optics/CfgWeapons.hpp b/addons/optics/CfgWeapons.hpp index 5aa06f41a0..67e70e030c 100644 --- a/addons/optics/CfgWeapons.hpp +++ b/addons/optics/CfgWeapons.hpp @@ -73,7 +73,7 @@ class CfgWeapons { author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_optic_Hamr_2D"; - displayName = "$STR_ACE_optic_hamr"; + displayName = CSTRING(hamr); weaponInfoType = "ACE_RscWeapon_Hamr"; class ItemInfo: ItemInfo { @@ -99,7 +99,7 @@ class CfgWeapons { author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_optic_Hamr_PIP"; //scopeArsenal = 1; - displayName = "$STR_ACE_optic_hamr_pip"; + displayName = CSTRING(hamr_pip); class ItemInfo: ItemInfo { modelOptics = QUOTE(PATHTOF(models\ace_optics_pip.p3d)); @@ -123,7 +123,7 @@ class CfgWeapons { author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_optic_Arco_2D"; - displayName = "$STR_ACE_optic_arco"; + displayName = CSTRING(arco); weaponInfoType = "ACE_RscWeapon_Arco"; class ItemInfo: ItemInfo { @@ -148,7 +148,7 @@ class CfgWeapons { author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_optic_Arco_PIP"; //scopeArsenal = 1; - displayName = "$STR_ACE_optic_arco_pip"; + displayName = CSTRING(arco_pip); class ItemInfo: ItemInfo { modelOptics = QUOTE(PATHTOF(models\ace_optics_pip.p3d)); @@ -172,7 +172,7 @@ class CfgWeapons { author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_optic_MRCO_2D"; - displayName = "$STR_ACE_optic_valdada"; + displayName = CSTRING(valdada); weaponInfoType = "ACE_RscWeapon_MRCO"; class ItemInfo: ItemInfo { @@ -198,7 +198,7 @@ class CfgWeapons { _generalMacro = "ACE_optic_MRCO_PIP"; scope = 1; //scopeArsenal = 1; - displayName = "$STR_ACE_optic_valdada_pip"; + displayName = CSTRING(valdada_pip); class ItemInfo: ItemInfo { modelOptics = QUOTE(PATHTOF(models\ace_optics_pip.p3d)); @@ -222,7 +222,7 @@ class CfgWeapons { author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_optic_SOS_2D"; - displayName = "$STR_ACE_optic_sos"; + displayName = CSTRING(sos); weaponInfoType = "ACE_RscWeapon_SOS"; class ItemInfo: ItemInfo { @@ -240,7 +240,7 @@ class CfgWeapons { author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_optic_SOS_PIP"; //scopeArsenal = 1; - displayName = "$STR_ACE_optic_sos_pip"; + displayName = CSTRING(sos_pip); class ItemInfo: ItemInfo { class OpticsModes: OpticsModes { @@ -268,7 +268,7 @@ class CfgWeapons { author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_optic_LRPS_2D"; - displayName = "$STR_ACE_optic_lrps"; + displayName = CSTRING(lrps); weaponInfoType = "ACE_RscWeapon_SOS"; class ItemInfo: ItemInfo { @@ -291,7 +291,7 @@ class CfgWeapons { author = "$STR_ACE_Common_ACETeam"; _generalMacro = "ACE_optic_LRPS_PIP"; //scopeArsenal = 1; - displayName = "$STR_ACE_optic_lrps_pip"; + displayName = CSTRING(lrps_pip); class ItemInfo: ItemInfo { class OpticsModes: OpticsModes { diff --git a/addons/optionsmenu/ACE_Settings.hpp b/addons/optionsmenu/ACE_Settings.hpp index ad910e4661..9ebaf65095 100644 --- a/addons/optionsmenu/ACE_Settings.hpp +++ b/addons/optionsmenu/ACE_Settings.hpp @@ -3,7 +3,7 @@ class ACE_Settings { value = 0; typeName = "SCALAR"; isClientSettable = 1; - displayName = "$STR_ACE_optionsMenu_uiScaing"; + displayName = CSTRING(uiScaing); values[] = {"$str_medium", "$str_large", "$str_very_large"}; }; }; diff --git a/addons/optionsmenu/functions/fnc_exportSettings.sqf b/addons/optionsmenu/functions/fnc_exportSettings.sqf index 68dc7fbecd..ccb7113915 100644 --- a/addons/optionsmenu/functions/fnc_exportSettings.sqf +++ b/addons/optionsmenu/functions/fnc_exportSettings.sqf @@ -75,6 +75,6 @@ FUNC(clipboardExport) = { }; [_compiledConfig] call FUNC(clipboardExport); -["STR_ACE_OptionsMenu_settingsExported"] call EFUNC(common,displayTextStructured); +[STRING(settingsExported)] call EFUNC(common,displayTextStructured); diff --git a/addons/optionsmenu/functions/fnc_onListBoxShowSelectionChanged.sqf b/addons/optionsmenu/functions/fnc_onListBoxShowSelectionChanged.sqf index 25fd99b5d8..b6a2c9ce26 100644 --- a/addons/optionsmenu/functions/fnc_onListBoxShowSelectionChanged.sqf +++ b/addons/optionsmenu/functions/fnc_onListBoxShowSelectionChanged.sqf @@ -26,7 +26,7 @@ _settingsMenu = uiNamespace getVariable 'ACE_settingsMenu'; switch (GVAR(optionMenu_openTab)) do { case (MENU_TAB_OPTIONS): { - _localizedHeader = format ["%1: %2", (localize "STR_ACE_OptionsMenu_OpenConfigMenu"), (localize "STR_ACE_OptionsMenu_TabOptions")]; + _localizedHeader = format ["%1: %2", (localize STRING(OpenConfigMenu)), (localize STRING(TabOptions))]; ctrlSetText [13, _localizedHeader]; lbClear 400; @@ -39,7 +39,7 @@ case (MENU_TAB_OPTIONS): { (_settingsMenu displayCtrl 413) ctrlShow false; }; case (MENU_TAB_COLORS): { - _localizedHeader = format ["%1: %2", (localize "STR_ACE_OptionsMenu_OpenConfigMenu"), (localize "STR_ACE_OptionsMenu_TabColors")]; + _localizedHeader = format ["%1: %2", (localize STRING(OpenConfigMenu)), (localize STRING(TabColors))]; ctrlSetText [13, _localizedHeader]; lbClear 400; diff --git a/addons/optionsmenu/functions/fnc_onServerListBoxShowSelectionChanged.sqf b/addons/optionsmenu/functions/fnc_onServerListBoxShowSelectionChanged.sqf index aaeec2d9ac..15de7d3c00 100644 --- a/addons/optionsmenu/functions/fnc_onServerListBoxShowSelectionChanged.sqf +++ b/addons/optionsmenu/functions/fnc_onServerListBoxShowSelectionChanged.sqf @@ -26,7 +26,7 @@ _settingsMenu = uiNamespace getVariable 'ACE_serverSettingsMenu'; switch (GVAR(optionMenu_openTab)) do { case (MENU_TAB_SERVER_OPTIONS): { - _localizedHeader = format ["%1: %2", (localize "STR_ACE_OptionsMenu_OpenConfigMenu"), (localize "STR_ACE_OptionsMenu_TabOptions")]; + _localizedHeader = format ["%1: %2", (localize STRING(OpenConfigMenu)), (localize STRING(TabOptions))]; ctrlSetText [13, _localizedHeader]; lbClear 400; @@ -43,7 +43,7 @@ case (MENU_TAB_SERVER_OPTIONS): { (_settingsMenu displayCtrl 416) ctrlEnable false; }; case (MENU_TAB_SERVER_COLORS): { - _localizedHeader = format ["%1: %2", (localize "STR_ACE_OptionsMenu_OpenConfigMenu"), (localize "STR_ACE_OptionsMenu_TabColors")]; + _localizedHeader = format ["%1: %2", (localize STRING(OpenConfigMenu)), (localize STRING(TabColors))]; ctrlSetText [13, _localizedHeader]; lbClear 400; @@ -67,7 +67,7 @@ case (MENU_TAB_SERVER_COLORS): { (_settingsMenu displayCtrl 416) ctrlEnable false; }; case (MENU_TAB_SERVER_VALUES): { - _localizedHeader = format ["%1: %2", (localize "STR_ACE_OptionsMenu_OpenConfigMenu"), (localize "STR_ACE_OptionsMenu_TabValues")]; + _localizedHeader = format ["%1: %2", (localize STRING(OpenConfigMenu)), (localize STRING(TabValues))]; ctrlSetText [13, _localizedHeader]; lbClear 400; diff --git a/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf b/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf index f5501d0860..145a230a63 100644 --- a/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf +++ b/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf @@ -61,7 +61,7 @@ _menu = uiNamespace getvariable "ACE_serverSettingsMenu"; (_menu displayCtrl 1003) ctrlEnable false; if (GVAR(ClientSettingsExportIncluded)) then { - (_settingsMenu displayCtrl 1102) ctrlSetText localize ("STR_ACE_OptionsMenu_exClientSettings"); + (_settingsMenu displayCtrl 1102) ctrlSetText localize (STRING(exClientSettings)); } else { - (_settingsMenu displayCtrl 1102) ctrlSetText localize ("STR_ACE_OptionsMenu_inClientSettings"); + (_settingsMenu displayCtrl 1102) ctrlSetText localize (STRING(inClientSettings)); }; diff --git a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf index 52984b78f3..e95d73a67b 100644 --- a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf +++ b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf @@ -56,8 +56,8 @@ if (count _collection > 0) then { // Created disable/enable options for bools if ((_setting select 1) == "BOOL") then { lbClear 400; - lbAdd [400, (localize "STR_ACE_OptionsMenu_Disabled")]; - lbAdd [400, (localize "STR_ACE_OptionsMenu_Enabled")]; + lbAdd [400, (localize STRING(Disabled))]; + lbAdd [400, (localize STRING(Enabled))]; _settingsValue = [0, 1] select _settingsValue; } else { lbClear 400; @@ -77,10 +77,10 @@ if (count _collection > 0) then { // Created disable/enable options for bools _expectedType = switch (_setting select 1) do { - case "STRING": {"STR_ACE_OptionsMenu_stringType"}; - case "ARRAY": {"STR_ACE_OptionsMenu_arrayType"}; - case "SCALAR": {"STR_ACE_OptionsMenu_scalarType"}; - default {"STR_ACE_optionsMenu_unknownType"}; + case "STRING": {STRING(stringType)}; + case "ARRAY": {STRING(arrayType)}; + case "SCALAR": {STRING(scalarType)}; + default {STRING(unknownType)}; }; (_settingsMenu displayCtrl 414) ctrlSetText format["%1", _settingsValue]; (_settingsMenu displayCtrl 415) ctrlSetText format[localize _expectedType]; diff --git a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf index dad3012e1b..762a5497d4 100644 --- a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf +++ b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf @@ -37,7 +37,7 @@ switch (GVAR(optionMenu_openTab)) do { // Created disable/enable options for bools _settingsText = if ((_x select 1) == "BOOL") then { - [(localize "STR_ACE_OptionsMenu_Disabled"), (localize "STR_ACE_OptionsMenu_Enabled")] select _settingsValue; + [(localize STRING(Disabled)), (localize STRING(Enabled))] select _settingsValue; } else { (_x select 5) select _settingsValue; }; diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf index 39bbdb8c94..864033ce1f 100644 --- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf +++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf @@ -56,8 +56,8 @@ if (count _collection > 0) then { // Created disable/enable options for bools if ((_setting select 1) == "BOOL") then { lbClear 400; - lbAdd [400, (localize "STR_ACE_OptionsMenu_Disabled")]; - lbAdd [400, (localize "STR_ACE_OptionsMenu_Enabled")]; + lbAdd [400, (localize STRING(Disabled))]; + lbAdd [400, (localize STRING(Enabled))]; _settingsValue = [0, 1] select _settingsValue; } else { lbClear 400; diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf index 513b187d7d..c3a232ec08 100644 --- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf +++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf @@ -34,7 +34,7 @@ switch (GVAR(optionMenu_openTab)) do { // Created disable/enable options for bools _settingsText = if ((_x select 1) == "BOOL") then { - [(localize "STR_ACE_OptionsMenu_Disabled"), (localize "STR_ACE_OptionsMenu_Enabled")] select _settingsValue; + [(localize STRING(Disabled)), (localize STRING(Enabled))] select _settingsValue; } else { (_x select 5) select _settingsValue; }; diff --git a/addons/optionsmenu/gui/pauseMenu.hpp b/addons/optionsmenu/gui/pauseMenu.hpp index c4cbae9916..d009d78049 100644 --- a/addons/optionsmenu/gui/pauseMenu.hpp +++ b/addons/optionsmenu/gui/pauseMenu.hpp @@ -60,7 +60,7 @@ class ACE_Open_SettingsMenu_BtnBase : ACE_gui_buttonBase { soundEscape[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundEscape",0.09,1}; soundPush[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundPush",0.09,1}; style = "0x02 + 0xC0"; - text = "$STR_ACE_OptionsMenu_OpenConfigMenu"; + text = CSTRING(OpenConfigMenu); textureNoShortcut = "#(argb,8,8,3)color(0,0,0,0)"; tooltip = ""; tooltipColorBox[] = {1,1,1,1}; diff --git a/addons/optionsmenu/gui/settingsMenu.hpp b/addons/optionsmenu/gui/settingsMenu.hpp index 04e7ee5aaa..c13d2de923 100644 --- a/addons/optionsmenu/gui/settingsMenu.hpp +++ b/addons/optionsmenu/gui/settingsMenu.hpp @@ -71,7 +71,7 @@ class ACE_settingsMenu { SizeEx = H_PART(1); colorText[] = {0.95, 0.95, 0.95, 0.75}; colorBackground[] = {0,0,0,0}; - text = "$STR_ACE_OptionsMenu_OpenConfigMenu"; + text = CSTRING(OpenConfigMenu); }; class labelSubHeader: ACE_gui_staticBase { idc = 13; @@ -83,7 +83,7 @@ class ACE_settingsMenu { }; class selectionAction_1: ACE_gui_buttonBase { idc = 1000; - text = "$STR_ACE_OptionsMenu_TabOptions"; + text = CSTRING(TabOptions); x = X_PART(1); y = Y_PART(2.1); w = W_PART(9.5); @@ -109,7 +109,7 @@ class ACE_settingsMenu { }; class selectionAction_2: selectionAction_1 { idc = 1001; - text = "$STR_ACE_OptionsMenu_TabColors"; + text = CSTRING(TabColors); x = X_PART(10.5); action = QUOTE([MENU_TAB_COLORS] call FUNC(onListBoxShowSelectionChanged);); }; @@ -158,7 +158,7 @@ class ACE_settingsMenu { class Label2: labelKey { idc = 301; y = Y_PART(7.3); - text = "$STR_ACE_OptionsMenu_Setting"; + text = CSTRING(Setting); SizeEx = H_PART(1); }; class comboBox1: ACE_gui_comboBoxBase { @@ -238,13 +238,13 @@ class ACE_settingsMenu { }; class action_reset: actionClose { idc = 1100; - text = "$STR_ACE_OptionsMenu_ResetAll"; + text = CSTRING(ResetAll); x = X_PART(9.5); action = QUOTE([] call FUNC(resetSettings)); }; class action_exportServerConfig: actionClose { idc = 1102; - text = "$STR_ACE_OptionsMenu_OpenExport"; + text = CSTRING(OpenExport); x = X_PART(18); action = QUOTE(if (GVAR(serverConfigGeneration) > 0) then {createDialog 'ACE_serverSettingsMenu'; }); }; @@ -266,7 +266,7 @@ class ACE_serverSettingsMenu: ACE_settingsMenu { SizeEx = H_PART(1); colorText[] = {0.95, 0.95, 0.95, 0.75}; colorBackground[] = {0,0,0,0}; - text = "$STR_ACE_OptionsMenu_OpenConfigMenu"; + text = CSTRING(OpenConfigMenu); }; class labelSubHeader: ACE_gui_staticBase { idc = 13; @@ -278,7 +278,7 @@ class ACE_serverSettingsMenu: ACE_settingsMenu { }; class selectionAction_1: ACE_gui_buttonBase { idc = 1000; - text = "$STR_ACE_OptionsMenu_TabOptions"; + text = CSTRING(TabOptions); x = X_PART(1); y = Y_PART(2.1); w = W_PART(9.5); @@ -302,13 +302,13 @@ class ACE_serverSettingsMenu: ACE_settingsMenu { }; class selectionAction_2: selectionAction_1 { idc = 1001; - text = "$STR_ACE_OptionsMenu_TabColors"; + text = CSTRING(TabColors); x = X_PART(10.5); action = QUOTE([MENU_TAB_SERVER_COLORS] call FUNC(onServerListBoxShowSelectionChanged);); }; class selectionAction_3: selectionAction_1 { idc = 1002; - text = "$STR_ACE_OptionsMenu_TabValues"; + text = CSTRING(TabValues); x = X_PART(20); action = QUOTE([MENU_TAB_SERVER_VALUES] call FUNC(onServerListBoxShowSelectionChanged);); }; @@ -351,7 +351,7 @@ class ACE_serverSettingsMenu: ACE_settingsMenu { class Label2: labelKey { idc = 301; y = Y_PART(7.3); - text = "$STR_ACE_OptionsMenu_Setting"; + text = CSTRING(Setting); SizeEx = H_PART(1); }; class comboBox1: ACE_gui_comboBoxBase { @@ -411,7 +411,7 @@ class ACE_serverSettingsMenu: ACE_settingsMenu { }; class saveInputButton: selectionAction_1 { idc = 416; - text = "$STR_ACE_OptionsMenu_SaveInput"; + text = CSTRING(SaveInput); x = X_PART(27.1); y = Y_PART(9.1); w = W_PART(11); @@ -432,19 +432,19 @@ class ACE_serverSettingsMenu: ACE_settingsMenu { class actionClose; class action_reset: actionClose { idc = 1100; - text = "$STR_ACE_OptionsMenu_ResetAll"; + text = CSTRING(ResetAll); x = X_PART(26.1); action = QUOTE([] call FUNC(serverResetSettings)); }; class action_exportServerConfig: actionClose { idc = 1101; - text = "$STR_ACE_OptionsMenu_Export"; + text = CSTRING(Export); x = X_PART(1); action = QUOTE([] call FUNC(exportSettings)); }; class action_toggleIncludeClientSettings: actionClose { idc = 1102; - text = "$STR_ACE_OptionsMenu_inClientSettings"; + text = CSTRING(inClientSettings); x = X_PART(9); action = QUOTE([] call FUNC(toggleIncludeClientSettings)); }; diff --git a/addons/overheating/ACE_Settings.hpp b/addons/overheating/ACE_Settings.hpp index f68898c434..2d63614a40 100644 --- a/addons/overheating/ACE_Settings.hpp +++ b/addons/overheating/ACE_Settings.hpp @@ -3,7 +3,7 @@ class ACE_Settings { typeName = "BOOL"; isClientSettable = 1; value = 1; - displayName = "$STR_ACE_overheating_SettingDisplayTextName"; - description = "$STR_ACE_overheating_SettingDisplayTextDesc"; + displayName = CSTRING(SettingDisplayTextName); + description = CSTRING(SettingDisplayTextDesc); }; }; diff --git a/addons/overheating/CfgVehicles.hpp b/addons/overheating/CfgVehicles.hpp index 5c7f7b9eb6..3041075c8d 100644 --- a/addons/overheating/CfgVehicles.hpp +++ b/addons/overheating/CfgVehicles.hpp @@ -5,7 +5,7 @@ class CfgVehicles { class ACE_SelfActions { class ACE_Equipment { class ACE_SwapBarrel { - displayName = "$STR_ACE_Overheating_SwapBarrel"; + displayName = CSTRING(SwapBarrel); condition = QUOTE( 'ACE_SpareBarrel' in items _player && {getNumber (configFile >> 'CfgWeapons' >> currentWeapon _player >> 'ACE_Overheating_allowSwapBarrel') == 1} ); statement = QUOTE( [ARR_2(_player, currentWeapon _player)] call FUNC(swapBarrel); ); showDisabled = 0; @@ -14,7 +14,7 @@ class CfgVehicles { hotkey = "B"; }; class ACE_CheckTemperature { - displayName = "$STR_ACE_Overheating_CheckTemperatureShort"; + displayName = CSTRING(CheckTemperatureShort); condition = "switch (currentWeapon _player) do {case (''): {false}; case (primaryWeapon _player); case (secondaryWeapon _player); case (handgunWeapon _player): {true}; default {false}}"; exceptions[] = {"isNotInside"}; statement = QUOTE( [ARR_2(_player, currentWeapon _player)] call FUNC(CheckTemperature); ); diff --git a/addons/overheating/CfgWeapons.hpp b/addons/overheating/CfgWeapons.hpp index 12ec43024f..d3146a5ffd 100644 --- a/addons/overheating/CfgWeapons.hpp +++ b/addons/overheating/CfgWeapons.hpp @@ -3,8 +3,8 @@ class CfgWeapons { class InventoryItem_Base_F; class ACE_SpareBarrel: ACE_ItemCore { - displayname = "$STR_ACE_Overheating_SpareBarrelName"; - descriptionshort = "$STR_ACE_Overheating_SpareBarrelDescription"; + displayname = CSTRING(SpareBarrelName); + descriptionshort = CSTRING(SpareBarrelDescription); //model = ""; picture = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); scope = 2; diff --git a/addons/overheating/XEH_postInit.sqf b/addons/overheating/XEH_postInit.sqf index 5e7089ab75..3b270f2d85 100644 --- a/addons/overheating/XEH_postInit.sqf +++ b/addons/overheating/XEH_postInit.sqf @@ -4,7 +4,7 @@ if !(hasInterface) exitWith {}; // Add keybinds -["ACE3 Weapons", QGVAR(unjamWeapon), localize "STR_ACE_Overheating_UnjamWeapon", +["ACE3 Weapons", QGVAR(unjamWeapon), localize STRING(UnjamWeapon), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/overheating/functions/fnc_clearJam.sqf b/addons/overheating/functions/fnc_clearJam.sqf index 4bba92eb3f..be6d073b6f 100644 --- a/addons/overheating/functions/fnc_clearJam.sqf +++ b/addons/overheating/functions/fnc_clearJam.sqf @@ -52,6 +52,6 @@ if (_weapon in _jammedWeapons) then { }; if (GVAR(DisplayTextOnJam)) then { - [localize "STR_ACE_Overheating_WeaponUnjammed"] call EFUNC(common,displayTextStructured); + [localize STRING(WeaponUnjammed)] call EFUNC(common,displayTextStructured); }; }; diff --git a/addons/overheating/functions/fnc_jamWeapon.sqf b/addons/overheating/functions/fnc_jamWeapon.sqf index 7810fb0ce2..487266be32 100644 --- a/addons/overheating/functions/fnc_jamWeapon.sqf +++ b/addons/overheating/functions/fnc_jamWeapon.sqf @@ -62,7 +62,7 @@ if (_unit getVariable [QGVAR(JammingActionID), -1] == -1) then { playSound3D ["a3\sounds_f\weapons\Other\dry9.wss", _this select 0]; if (!(missionNamespace getVariable [QGVAR(knowAboutJam), false]) && {(_this select 1) ammo currentWeapon (_this select 1) > 0} && {GVAR(DisplayTextOnJam)}) then { - [localize "STR_ACE_Overheating_WeaponJammed"] call EFUNC(common,displayTextStructured); + [localize STRING(WeaponJammed)] call EFUNC(common,displayTextStructured); GVAR(knowAboutJam) = true; }; }; @@ -75,7 +75,7 @@ if (_unit getVariable [QGVAR(JammingActionID), -1] == -1) then { [_this select 1, currentWeapon (_this select 1), false] call FUNC(clearJam); }; - //_id = [_unit, format ["%1", localize "STR_ACE_Overheating_UnjamWeapon"], "DefaultAction", _condition, _statement, _condition2, _statement2, 10] call EFUNC(common,addActionMenuEventHandler); + //_id = [_unit, format ["%1", localize STRING(UnjamWeapon)], "DefaultAction", _condition, _statement, _condition2, _statement2, 10] call EFUNC(common,addActionMenuEventHandler); _id = [_unit, "DefaultAction", _condition, _statement] call EFUNC(common,addActionEventHandler); _unit setVariable [QGVAR(JammingActionID), _id]; diff --git a/addons/overheating/functions/fnc_swapBarrel.sqf b/addons/overheating/functions/fnc_swapBarrel.sqf index 2384fb470e..f2c92d5b4a 100644 --- a/addons/overheating/functions/fnc_swapBarrel.sqf +++ b/addons/overheating/functions/fnc_swapBarrel.sqf @@ -22,4 +22,4 @@ _player playActionNow "GestureDismountMuzzle"; _player playAction "GestureMountMuzzle"; playSound "ACE_BarrelSwap"; -[10, [_player, _weapon], {(_this select 0) call FUNC(swapBarrelCallback)}, {}, (localize "STR_ACE_Overheating_SwappingBarrel")] call EFUNC(common,progressBar); +[10, [_player, _weapon], {(_this select 0) call FUNC(swapBarrelCallback)}, {}, (localize STRING(SwappingBarrel))] call EFUNC(common,progressBar); diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index e626bf2aea..415908aea3 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -16,6 +16,6 @@ EXPLODE_2_PVT(_this,_player,_weapon); // don't consume the barrel, but rotate through them. -[localize "STR_ACE_Overheating_SwappedBarrel", QUOTE(PATHTOF(UI\spare_barrel_ca.paa))] call EFUNC(common,displayTextPicture); +[localize STRING(SwappedBarrel), QUOTE(PATHTOF(UI\spare_barrel_ca.paa))] call EFUNC(common,displayTextPicture); _player setVariable [format [QGVAR(%1), _weapon], [0, 0], false]; diff --git a/addons/parachute/CfgVehicles.hpp b/addons/parachute/CfgVehicles.hpp index 04732d0506..a1e34fa4d8 100644 --- a/addons/parachute/CfgVehicles.hpp +++ b/addons/parachute/CfgVehicles.hpp @@ -19,7 +19,7 @@ class CfgVehicles { class ACE_NonSteerableParachute: B_Parachute { author = "$STR_ACE_Common_ACETeam"; scope = 2; - displayName = "$STR_ACE_Parachute_NonSteerableParachute"; + displayName = CSTRING(NonSteerableParachute); //picture = "\A3\Characters_F\data\ui\icon_b_parachute_ca.paa"; // @todo //model = "\A3\Weapons_F\Ammoboxes\Bags\Backpack_Parachute"; // @todo // backpackSimulation = "ParachuteNonSteerable"; //ParachuteSteerable //Bis broke this in 1.40 diff --git a/addons/parachute/CfgWeapons.hpp b/addons/parachute/CfgWeapons.hpp index 067d065bf0..8852caec7c 100644 --- a/addons/parachute/CfgWeapons.hpp +++ b/addons/parachute/CfgWeapons.hpp @@ -4,8 +4,8 @@ class CfgWeapons { ACE_hideItemType = "Watch"; author = "$STR_ACE_Common_ACETeam"; - descriptionShort = "$STR_ACE_Parachute_AltimeterDescription"; - displayName = "$STR_ACE_Parachute_AltimeterDisplayName"; + descriptionShort = CSTRING(AltimeterDescription); + displayName = CSTRING(AltimeterDisplayName); picture = PATHTOF(UI\watch_altimeter.paa); }; }; diff --git a/addons/parachute/XEH_postInit.sqf b/addons/parachute/XEH_postInit.sqf index a6c589a39a..9ee62d08ba 100644 --- a/addons/parachute/XEH_postInit.sqf +++ b/addons/parachute/XEH_postInit.sqf @@ -17,7 +17,7 @@ if (!hasInterface) exitWith {}; -["ACE3 Equipment", QGVAR(showAltimeter), localize "STR_ACE_Parachute_showAltimeter", +["ACE3 Equipment", QGVAR(showAltimeter), localize STRING(showAltimeter), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotEscorting", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/realisticnames/CfgMagazines.hpp b/addons/realisticnames/CfgMagazines.hpp index cf555c9603..69d6cfa579 100644 --- a/addons/realisticnames/CfgMagazines.hpp +++ b/addons/realisticnames/CfgMagazines.hpp @@ -359,61 +359,61 @@ class CfgMagazines { class CA_Magazine; // http://en.wikipedia.org/wiki/M15_mine class ATMine_Range_Mag: CA_Magazine { - displayName = "$STR_ACE_RealisticNames_ATMine_Name"; + displayName = CSTRING(ATMine_Name); }; // http://en.wikipedia.org/wiki/VS-50_mine class APERSMine_Range_Mag: ATMine_Range_Mag { - displayName = "$STR_ACE_RealisticNames_APERSMine_Name"; + displayName = CSTRING(APERSMine_Name); }; // https://www.buymilsurp.com/us-m26-antipersonnel-bounding-mine-p-5419.html class APERSBoundingMine_Range_Mag: ATMine_Range_Mag { - displayName = "$STR_ACE_RealisticNames_APERSBoundingMine_Name"; + displayName = CSTRING(APERSBoundingMine_Name); }; // http://en.wikipedia.org/wiki/PMR-3_mine class APERSTripMine_Wire_Mag: ATMine_Range_Mag { - displayName = "$STR_ACE_RealisticNames_APERSTripwireMine_Name"; + displayName = CSTRING(APERSTripwireMine_Name); }; // the following ones can be found here: http://www.dtic.mil/dtic/tr/fulltext/u2/a567897.pdf class SLAMDirectionalMine_Wire_Mag: ATMine_Range_Mag { - displayName = "$STR_ACE_RealisticNames_SLAM_Name"; + displayName = CSTRING(SLAM_Name); }; // claymore class ClaymoreDirectionalMine_Remote_Mag: CA_Magazine { - displayName = "$STR_ACE_RealisticNames_Claymore_Name"; + displayName = CSTRING(Claymore_Name); }; // satchels class SatchelCharge_Remote_Mag: CA_Magazine { - displayName = "$STR_ACE_RealisticNames_SatchelCharge_Name"; + displayName = CSTRING(SatchelCharge_Name); }; class DemoCharge_Remote_Mag: SatchelCharge_Remote_Mag { - displayName = "$STR_ACE_RealisticNames_DemoCharge_Name"; + displayName = CSTRING(DemoCharge_Name); }; // hand grenades class HandGrenade: CA_Magazine { - displayName = "$STR_ACE_RealisticNames_HandGrenade_Name"; + displayName = CSTRING(HandGrenade_Name); }; class SmokeShell: HandGrenade { - displayName = "$STR_ACE_RealisticNames_SmokeShell_Name"; + displayName = CSTRING(SmokeShell_Name); }; class SmokeShellBlue: SmokeShell { - displayName = "$STR_ACE_RealisticNames_SmokeShellBlue_Name"; + displayName = CSTRING(SmokeShellBlue_Name); }; class SmokeShellGreen: SmokeShell { - displayName = "$STR_ACE_RealisticNames_SmokeShellGreen_Name"; + displayName = CSTRING(SmokeShellGreen_Name); }; class SmokeShellOrange: SmokeShell { - displayName = "$STR_ACE_RealisticNames_SmokeShellOrange_Name"; + displayName = CSTRING(SmokeShellOrange_Name); }; class SmokeShellPurple: SmokeShell { - displayName = "$STR_ACE_RealisticNames_SmokeShellPurple_Name"; + displayName = CSTRING(SmokeShellPurple_Name); }; class SmokeShellRed: SmokeShell { - displayName = "$STR_ACE_RealisticNames_SmokeShellRed_Name"; + displayName = CSTRING(SmokeShellRed_Name); }; class SmokeShellYellow: SmokeShell { - displayName = "$STR_ACE_RealisticNames_SmokeShellYellow_Name"; + displayName = CSTRING(SmokeShellYellow_Name); }; }; diff --git a/addons/realisticnames/CfgVehicles.hpp b/addons/realisticnames/CfgVehicles.hpp index cf1ce87b80..aef52578e2 100644 --- a/addons/realisticnames/CfgVehicles.hpp +++ b/addons/realisticnames/CfgVehicles.hpp @@ -3,94 +3,94 @@ class CfgVehicles { // static weapons class StaticMGWeapon; class HMG_01_base_F: StaticMGWeapon { - displayName = "$STR_ACE_RealisticNames_HMG_01_Name"; + displayName = CSTRING(HMG_01_Name); }; class HMG_01_A_base_F: HMG_01_base_F { - displayName = "$STR_ACE_RealisticNames_HMG_01_A_Name"; + displayName = CSTRING(HMG_01_A_Name); }; class HMG_01_high_base_F: HMG_01_base_F { - displayName = "$STR_ACE_RealisticNames_HMG_01_high_Name"; + displayName = CSTRING(HMG_01_high_Name); }; class AT_01_base_F; class B_static_AT_F: AT_01_base_F { - displayName = "$STR_ACE_RealisticNames_static_AT_Name"; + displayName = CSTRING(static_AT_Name); }; class O_static_AT_F: AT_01_base_F { - displayName = "$STR_ACE_RealisticNames_static_AT_Name"; + displayName = CSTRING(static_AT_Name); }; class I_static_AT_F: AT_01_base_F { - displayName = "$STR_ACE_RealisticNames_static_AT_Name"; + displayName = CSTRING(static_AT_Name); }; class AA_01_base_F; class B_static_AA_F: AA_01_base_F { - displayName = "$STR_ACE_RealisticNames_static_AA_Name"; + displayName = CSTRING(static_AA_Name); }; class O_static_AA_F: AA_01_base_F { - displayName = "$STR_ACE_RealisticNames_static_AA_Name"; + displayName = CSTRING(static_AA_Name); }; class I_static_AA_F: AA_01_base_F { - displayName = "$STR_ACE_RealisticNames_static_AA_Name"; + displayName = CSTRING(static_AA_Name); }; class GMG_TriPod; class GMG_01_base_F: GMG_TriPod { - displayName = "$STR_ACE_RealisticNames_GMG_01_Name"; + displayName = CSTRING(GMG_01_Name); }; class GMG_01_A_base_F: GMG_01_base_F { - displayName = "$STR_ACE_RealisticNames_GMG_01_A_Name"; + displayName = CSTRING(GMG_01_A_Name); }; class GMG_01_high_base_F: GMG_01_base_F { - displayName = "$STR_ACE_RealisticNames_GMG_01_high_Name"; + displayName = CSTRING(GMG_01_high_Name); }; // M-ATV class MRAP_01_base_F; class B_MRAP_01_F: MRAP_01_base_F { - displayName = "$STR_ACE_RealisticNames_MRAP_01_Name"; + displayName = CSTRING(MRAP_01_Name); }; class MRAP_01_gmg_base_F: MRAP_01_base_F {}; class B_MRAP_01_gmg_F: MRAP_01_gmg_base_F { - displayName = "$STR_ACE_RealisticNames_MRAP_01_gmg_Name"; + displayName = CSTRING(MRAP_01_gmg_Name); }; class MRAP_01_hmg_base_F: MRAP_01_gmg_base_F {}; class B_MRAP_01_hmg_F: MRAP_01_hmg_base_F { - displayName = "$STR_ACE_RealisticNames_MRAP_01_hmg_Name"; + displayName = CSTRING(MRAP_01_hmg_Name); }; // punisher class MRAP_02_base_F; class O_MRAP_02_F: MRAP_02_base_F { - displayName = "$STR_ACE_RealisticNames_MRAP_02_Name"; + displayName = CSTRING(MRAP_02_Name); }; class MRAP_02_hmg_base_F: MRAP_02_base_F {}; class O_MRAP_02_hmg_F: MRAP_02_hmg_base_F { - displayName = "$STR_ACE_RealisticNames_MRAP_02_hmg_Name"; + displayName = CSTRING(MRAP_02_hmg_Name); }; class MRAP_02_gmg_base_F: MRAP_02_hmg_base_F {}; class O_MRAP_02_gmg_F: MRAP_02_gmg_base_F { - displayName = "$STR_ACE_RealisticNames_MRAP_02_gmg_Name"; + displayName = CSTRING(MRAP_02_gmg_Name); }; // strider class MRAP_03_base_F; class I_MRAP_03_F: MRAP_03_base_F { - displayName = "$STR_ACE_RealisticNames_MRAP_03_Name"; + displayName = CSTRING(MRAP_03_Name); }; class MRAP_03_hmg_base_F: MRAP_03_base_F {}; class I_MRAP_03_hmg_F: MRAP_03_hmg_base_F { - displayName = "$STR_ACE_RealisticNames_MRAP_03_hmg_Name"; + displayName = CSTRING(MRAP_03_hmg_Name); }; class MRAP_03_gmg_base_F: MRAP_03_hmg_base_F {}; class I_MRAP_03_gmg_F: MRAP_03_gmg_base_F { - displayName = "$STR_ACE_RealisticNames_MRAP_03_gmg_Name"; + displayName = CSTRING(MRAP_03_gmg_Name); }; // merkava derivates @@ -98,24 +98,24 @@ class CfgVehicles { class B_MBT_01_base_F: MBT_01_base_F {}; class B_MBT_01_cannon_F: B_MBT_01_base_F { - displayName = "$STR_ACE_RealisticNames_MBT_01_cannon_Name"; + displayName = CSTRING(MBT_01_cannon_Name); }; class B_MBT_01_TUSK_F: B_MBT_01_cannon_F { - displayName = "$STR_ACE_RealisticNames_MBT_01_TUSK_Name"; + displayName = CSTRING(MBT_01_TUSK_Name); }; class MBT_01_arty_base_F: MBT_01_base_F {}; class B_MBT_01_arty_base_F: MBT_01_arty_base_F {}; class B_MBT_01_arty_F: B_MBT_01_arty_base_F { - displayName = "$STR_ACE_RealisticNames_MBT_01_arty_Name"; + displayName = CSTRING(MBT_01_arty_Name); }; class MBT_01_mlrs_base_F: MBT_01_base_F {}; class B_MBT_01_mlrs_base_F: MBT_01_mlrs_base_F {}; class B_MBT_01_mlrs_F: B_MBT_01_mlrs_base_F { - displayName = "$STR_ACE_RealisticNames_MBT_01_mlrs_Name"; // Fictional name, (probably wrong) hebrew translation of storm. + displayName = CSTRING(MBT_01_mlrs_Name); // Fictional name, (probably wrong) hebrew translation of storm. }; // T100 derivates @@ -123,306 +123,306 @@ class CfgVehicles { class O_MBT_02_base_F: MBT_02_base_F {}; class O_MBT_02_cannon_F: O_MBT_02_base_F { - displayName = "$STR_ACE_RealisticNames_MBT_02_cannon_Name"; + displayName = CSTRING(MBT_02_cannon_Name); }; class MBT_02_arty_base_F: MBT_02_base_F {}; class O_MBT_02_arty_base_F: MBT_02_arty_base_F {}; class O_MBT_02_arty_F: O_MBT_02_arty_base_F { - displayName = "$STR_ACE_RealisticNames_MBT_02_arty_Name"; + displayName = CSTRING(MBT_02_arty_Name); }; // leopard sg class I_MBT_03_base_F; class I_MBT_03_cannon_F: I_MBT_03_base_F { - displayName = "$STR_ACE_RealisticNames_MBT_03_cannon_Name"; + displayName = CSTRING(MBT_03_cannon_Name); }; // tracked apcs class B_APC_Tracked_01_base_F; class B_APC_Tracked_01_rcws_F: B_APC_Tracked_01_base_F { - displayName = "$STR_ACE_RealisticNames_APC_Tracked_01_rcws_Name"; + displayName = CSTRING(APC_Tracked_01_rcws_Name); }; class B_APC_Tracked_01_AA_F: B_APC_Tracked_01_base_F { - displayName = "$STR_ACE_RealisticNames_APC_Tracked_01_AA_Name"; // Fictional name, (probably wrong) hebrew translation of cheetah. + displayName = CSTRING(APC_Tracked_01_AA_Name); // Fictional name, (probably wrong) hebrew translation of cheetah. }; class B_APC_Tracked_01_CRV_F: B_APC_Tracked_01_base_F { - displayName = "$STR_ACE_RealisticNames_APC_Tracked_01_CRV_Name"; + displayName = CSTRING(APC_Tracked_01_CRV_Name); }; class O_APC_Tracked_02_base_F; class O_APC_Tracked_02_cannon_F: O_APC_Tracked_02_base_F { - displayName = "$STR_ACE_RealisticNames_APC_Tracked_02_cannon_Name"; + displayName = CSTRING(APC_Tracked_02_cannon_Name); }; class O_APC_Tracked_02_AA_F: O_APC_Tracked_02_base_F { - displayName = "$STR_ACE_RealisticNames_APC_Tracked_02_AA_Name"; + displayName = CSTRING(APC_Tracked_02_AA_Name); }; class I_APC_tracked_03_base_F; class I_APC_tracked_03_cannon_F: I_APC_tracked_03_base_F { - displayName = "$STR_ACE_RealisticNames_APC_tracked_03_cannon_Name"; + displayName = CSTRING(APC_tracked_03_cannon_Name); }; // wheeled apcs class B_APC_Wheeled_01_base_F; class B_APC_Wheeled_01_cannon_F: B_APC_Wheeled_01_base_F { - displayName = "$STR_ACE_RealisticNames_APC_Wheeled_cannon_Name"; + displayName = CSTRING(APC_Wheeled_cannon_Name); }; class O_APC_Wheeled_02_base_F; class O_APC_Wheeled_02_rcws_F: O_APC_Wheeled_02_base_F { - displayName = "$STR_ACE_RealisticNames_APC_Wheeled_02_rcws_Name"; + displayName = CSTRING(APC_Wheeled_02_rcws_Name); }; class I_APC_Wheeled_03_base_F; class I_APC_Wheeled_03_cannon_F: I_APC_Wheeled_03_base_F { - displayName = "$STR_ACE_RealisticNames_APC_Wheeled_03_cannon_Name"; + displayName = CSTRING(APC_Wheeled_03_cannon_Name); }; // trucks class Truck_01_base_F; class B_Truck_01_transport_F: Truck_01_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_01_transport_Name"; + displayName = CSTRING(Truck_01_transport_Name); }; class B_Truck_01_covered_F: B_Truck_01_transport_F { - displayName = "$STR_ACE_RealisticNames_Truck_01_covered_Name"; + displayName = CSTRING(Truck_01_covered_Name); }; class B_Truck_01_mover_F: B_Truck_01_transport_F { - displayName = "$STR_ACE_RealisticNames_Truck_01_mover_Name"; + displayName = CSTRING(Truck_01_mover_Name); }; class B_Truck_01_box_F: B_Truck_01_mover_F { - displayName = "$STR_ACE_RealisticNames_Truck_01_box_Name"; + displayName = CSTRING(Truck_01_box_Name); }; class B_Truck_01_medical_F: B_Truck_01_transport_F { - displayName = "$STR_ACE_RealisticNames_Truck_01_medical_Name"; + displayName = CSTRING(Truck_01_medical_Name); }; class B_Truck_01_ammo_F: B_Truck_01_mover_F { - displayName = "$STR_ACE_RealisticNames_Truck_01_ammo_Name"; + displayName = CSTRING(Truck_01_ammo_Name); }; class B_Truck_01_fuel_F: B_Truck_01_mover_F { - displayName = "$STR_ACE_RealisticNames_Truck_01_fuel_Name"; + displayName = CSTRING(Truck_01_fuel_Name); }; class B_Truck_01_Repair_F: B_Truck_01_mover_F { - displayName = "$STR_ACE_RealisticNames_Truck_01_Repair_Name"; + displayName = CSTRING(Truck_01_Repair_Name); }; class Truck_02_transport_base_F; class O_Truck_02_transport_F: Truck_02_transport_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_02_transport_Name"; + displayName = CSTRING(Truck_02_transport_Name); }; class Truck_02_base_F; class O_Truck_02_covered_F: Truck_02_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_02_covered_Name"; + displayName = CSTRING(Truck_02_covered_Name); }; class Truck_02_Ammo_base_F; class O_Truck_02_ammo_F: Truck_02_Ammo_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_02_ammo_Name"; + displayName = CSTRING(Truck_02_ammo_Name); }; class Truck_02_fuel_base_F; class O_Truck_02_fuel_F: Truck_02_fuel_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_02_fuel_Name"; + displayName = CSTRING(Truck_02_fuel_Name); }; class Truck_02_box_base_F; class O_Truck_02_box_F: Truck_02_box_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_02_box_Name"; + displayName = CSTRING(Truck_02_box_Name); }; class Truck_02_medical_base_F; class O_Truck_02_medical_F: Truck_02_medical_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_02_medical_Name"; + displayName = CSTRING(Truck_02_medical_Name); }; class I_Truck_02_transport_F: Truck_02_transport_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_02_transport_Name"; + displayName = CSTRING(Truck_02_transport_Name); }; class I_Truck_02_covered_F: Truck_02_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_02_covered_Name"; + displayName = CSTRING(Truck_02_covered_Name); }; class I_Truck_02_ammo_F: Truck_02_Ammo_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_02_ammo_Name"; + displayName = CSTRING(Truck_02_ammo_Name); }; class I_Truck_02_fuel_F: Truck_02_fuel_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_02_fuel_Name"; + displayName = CSTRING(Truck_02_fuel_Name); }; class I_Truck_02_box_F: Truck_02_box_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_02_box_Name"; + displayName = CSTRING(Truck_02_box_Name); }; class I_Truck_02_medical_F: Truck_02_medical_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_02_medical_Name"; + displayName = CSTRING(Truck_02_medical_Name); }; class Truck_03_base_F; class O_Truck_03_transport_F: Truck_03_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_03_transport_Name"; + displayName = CSTRING(Truck_03_transport_Name); }; class O_Truck_03_covered_F: Truck_03_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_03_covered_Name"; + displayName = CSTRING(Truck_03_covered_Name); }; class O_Truck_03_device_F: Truck_03_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_03_device_Name"; + displayName = CSTRING(Truck_03_device_Name); }; class O_Truck_03_ammo_F: Truck_03_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_03_ammo_Name"; + displayName = CSTRING(Truck_03_ammo_Name); }; class O_Truck_03_fuel_F: Truck_03_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_03_fuel_Name"; + displayName = CSTRING(Truck_03_fuel_Name); }; class O_Truck_03_repair_F: Truck_03_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_03_repair_Name"; + displayName = CSTRING(Truck_03_repair_Name); }; class O_Truck_03_medical_F: Truck_03_base_F { - displayName = "$STR_ACE_RealisticNames_Truck_03_medical_Name"; + displayName = CSTRING(Truck_03_medical_Name); }; // helicopters class Heli_Attack_01_base_F; class B_Heli_Attack_01_F: Heli_Attack_01_base_F { - displayName = "$STR_ACE_RealisticNames_Heli_Attack_01_Name"; + displayName = CSTRING(Heli_Attack_01_Name); }; class Heli_Light_01_unarmed_base_F; class B_Heli_Light_01_F: Heli_Light_01_unarmed_base_F { - displayName = "$STR_ACE_RealisticNames_Heli_Light_01_Name"; + displayName = CSTRING(Heli_Light_01_Name); }; class Heli_Light_01_armed_base_F; class B_Heli_Light_01_armed_F: Heli_Light_01_armed_base_F { - displayName = "$STR_ACE_RealisticNames_Heli_Light_01_armed_Name"; + displayName = CSTRING(Heli_Light_01_armed_Name); }; class Heli_Light_01_civil_base_F: Heli_Light_01_unarmed_base_F { - displayName = "$STR_ACE_RealisticNames_Heli_Light_01_civil_Name"; + displayName = CSTRING(Heli_Light_01_civil_Name); }; class Heli_Transport_03_base_F; class B_Heli_Transport_03_F: Heli_Transport_03_base_F { - displayName = "$STR_ACE_RealisticNames_Heli_Transport_03_Name"; + displayName = CSTRING(Heli_Transport_03_Name); }; class Heli_Transport_03_unarmed_base_F; class B_Heli_Transport_03_unarmed_F: Heli_Transport_03_unarmed_base_F { - displayName = "$STR_ACE_RealisticNames_Heli_Transport_03_unarmed_Name"; + displayName = CSTRING(Heli_Transport_03_unarmed_Name); }; class Heli_Light_02_base_F; class O_Heli_Light_02_F: Heli_Light_02_base_F { - displayName = "$STR_ACE_RealisticNames_Heli_Light_02_Name"; + displayName = CSTRING(Heli_Light_02_Name); }; class Heli_Light_02_unarmed_base_F; class O_Heli_Light_02_unarmed_F: Heli_Light_02_unarmed_base_F { - displayName = "$STR_ACE_RealisticNames_Heli_Light_02_unarmed_Name"; + displayName = CSTRING(Heli_Light_02_unarmed_Name); }; class Heli_light_03_base_F; class I_Heli_light_03_F: Heli_light_03_base_F { - displayName = "$STR_ACE_RealisticNames_Heli_light_03_Name"; + displayName = CSTRING(Heli_light_03_Name); }; class Heli_light_03_unarmed_base_F; class I_Heli_light_03_unarmed_F: Heli_light_03_unarmed_base_F { - displayName = "$STR_ACE_RealisticNames_Heli_light_03_unarmed_Name"; + displayName = CSTRING(Heli_light_03_unarmed_Name); }; class Heli_Transport_02_base_F; class I_Heli_Transport_02_F: Heli_Transport_02_base_F { - displayName = "$STR_ACE_RealisticNames_Heli_Transport_02_Name"; + displayName = CSTRING(Heli_Transport_02_Name); }; // planes class Plane_CAS_01_base_F; class B_Plane_CAS_01_F: Plane_CAS_01_base_F { - displayName = "$STR_ACE_RealisticNames_Plane_CAS_01_Name"; + displayName = CSTRING(Plane_CAS_01_Name); }; class Plane_CAS_02_base_F; class O_Plane_CAS_02_F: Plane_CAS_02_base_F { - displayName = "$STR_ACE_RealisticNames_Plane_CAS_02_Name"; + displayName = CSTRING(Plane_CAS_02_Name); }; class Plane_Fighter_03_base_F; class I_Plane_Fighter_03_CAS_F: Plane_Fighter_03_base_F { - displayName = "$STR_ACE_RealisticNames_Plane_Fighter_03_CAS_Name"; + displayName = CSTRING(Plane_Fighter_03_CAS_Name); }; class I_Plane_Fighter_03_AA_F: I_Plane_Fighter_03_CAS_F { - displayName = "$STR_ACE_RealisticNames_Plane_Fighter_03_AA_Name"; + displayName = CSTRING(Plane_Fighter_03_AA_Name); }; // uavs class UAV_02_base_F; class B_UAV_02_F: UAV_02_base_F { - displayName = "$STR_ACE_RealisticNames_UAV_02_Name"; + displayName = CSTRING(UAV_02_Name); }; class O_UAV_02_F: UAV_02_base_F { - displayName = "$STR_ACE_RealisticNames_UAV_02_Name"; + displayName = CSTRING(UAV_02_Name); }; class I_UAV_02_F: UAV_02_base_F { - displayName = "$STR_ACE_RealisticNames_UAV_02_Name"; + displayName = CSTRING(UAV_02_Name); }; class UAV_02_CAS_base_F: UAV_02_base_F {}; class B_UAV_02_CAS_F: UAV_02_CAS_base_F { - displayName = "$STR_ACE_RealisticNames_UAV_02_CAS_Name"; + displayName = CSTRING(UAV_02_CAS_Name); }; class O_UAV_02_CAS_F: UAV_02_CAS_base_F { - displayName = "$STR_ACE_RealisticNames_UAV_02_CAS_Name"; + displayName = CSTRING(UAV_02_CAS_Name); }; class I_UAV_02_CAS_F: UAV_02_CAS_base_F { - displayName = "$STR_ACE_RealisticNames_UAV_02_CAS_Name"; + displayName = CSTRING(UAV_02_CAS_Name); }; // pistols class Pistol_Base_F; class Weapon_hgun_P07_F: Pistol_Base_F { - displayName = "$STR_ACE_RealisticNames_hgun_P07_Name"; + displayName = CSTRING(hgun_P07_Name); }; class Weapon_hgun_Rook40_F: Pistol_Base_F { - displayName = "$STR_ACE_RealisticNames_hgun_Rook40_Name"; + displayName = CSTRING(hgun_Rook40_Name); }; class Weapon_hgun_ACPC2_F: Pistol_Base_F { - displayName = "$STR_ACE_RealisticNames_hgun_ACPC2_Name"; + displayName = CSTRING(hgun_ACPC2_Name); }; class Weapon_hgun_Pistol_heavy_01_F: Pistol_Base_F { - displayName = "$STR_ACE_RealisticNames_hgun_Pistol_heavy_01_Name"; + displayName = CSTRING(hgun_Pistol_heavy_01_Name); }; class Weapon_hgun_Pistol_heavy_02_F: Pistol_Base_F { - displayName = "$STR_ACE_RealisticNames_hgun_Pistol_heavy_02_Name"; + displayName = CSTRING(hgun_Pistol_heavy_02_Name); }; class Weapon_hgun_Pistol_Signal_F: Pistol_Base_F { - displayName = "$STR_ACE_RealisticNames_hgun_Pistol_Signal_Name"; + displayName = CSTRING(hgun_Pistol_Signal_Name); }; // rocket launchers class Launcher_Base_F; class Weapon_launch_NLAW_F: Launcher_Base_F { - displayName = "$STR_ACE_RealisticNames_launch_NLAW_Name"; + displayName = CSTRING(launch_NLAW_Name); }; class Weapon_launch_RPG32_F: Launcher_Base_F { - displayName = "$STR_ACE_RealisticNames_launch_RPG32_Name"; + displayName = CSTRING(launch_RPG32_Name); }; /*class Weapon_launch_Titan_F: Launcher_Base_F { - displayName = "$STR_ACE_RealisticNames_launch_Titan_Name"; + displayName = CSTRING(launch_Titan_Name); }; class Weapon_launch_Titan_short_F: Launcher_Base_F { - displayName = "$STR_ACE_RealisticNames_launch_Titan_short_Name"; + displayName = CSTRING(launch_Titan_short_Name); }; class Weapon_launch_B_Titan_F: Launcher_Base_F { - displayName = "$STR_ACE_RealisticNames_launch_Titan_Name"; + displayName = CSTRING(launch_Titan_Name); };*/ //class Weapon_launch_I_Titan_F: Weapon_launch_B_Titan_F {}; //class Weapon_launch_O_Titan_F: Weapon_launch_B_Titan_F {}; /*class Weapon_launch_launch_B_Titan_short_F: Launcher_Base_F { - displayName = "$STR_ACE_RealisticNames_launch_Titan_short_Name"; + displayName = CSTRING(launch_Titan_short_Name); };*/ //class Weapon_launch_I_Titan_short_F: Weapon_launch_launch_B_Titan_short_F {}; //class Weapon_launch_O_Titan_short_F: Weapon_launch_launch_B_Titan_short_F {}; @@ -432,205 +432,205 @@ class CfgVehicles { // MX class Weapon_Base_F; class Weapon_arifle_MX_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_MX_Name"; + displayName = CSTRING(arifle_MX_Name); }; class Weapon_arifle_MXC_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_MXC_Name"; + displayName = CSTRING(arifle_MXC_Name); }; class Weapon_arifle_MX_GL_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_MX_GL_Name"; + displayName = CSTRING(arifle_MX_GL_Name); }; class Weapon_arifle_MX_SW_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_MX_SW_Name"; + displayName = CSTRING(arifle_MX_SW_Name); }; class Weapon_arifle_MXM_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_MXM_Name"; + displayName = CSTRING(arifle_MXM_Name); }; // Katiba class Weapon_arifle_Katiba_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_Katiba_Name"; + displayName = CSTRING(arifle_Katiba_Name); }; class Weapon_arifle_Katiba_C_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_Katiba_C_Name"; + displayName = CSTRING(arifle_Katiba_C_Name); }; class Weapon_arifle_Katiba_GL_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_Katiba_GL_Name"; + displayName = CSTRING(arifle_Katiba_GL_Name); }; // F2000 class Weapon_arifle_Mk20_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_Mk20_Name"; + displayName = CSTRING(arifle_Mk20_Name); }; class Weapon_arifle_Mk20_plain_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_Mk20_plain_Name"; + displayName = CSTRING(arifle_Mk20_plain_Name); }; class Weapon_arifle_Mk20C_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_Mk20C_Name"; + displayName = CSTRING(arifle_Mk20C_Name); }; class Weapon_arifle_Mk20C_plain_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_Mk20C_plain_Name"; + displayName = CSTRING(arifle_Mk20C_plain_Name); }; class Weapon_arifle_Mk20_GL_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_Mk20_GL_Name"; + displayName = CSTRING(arifle_Mk20_GL_Name); }; class Weapon_arifle_Mk20_GL_plain_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_Mk20_GL_plain_Name"; + displayName = CSTRING(arifle_Mk20_GL_plain_Name); }; // TAR-21 class Weapon_arifle_TRG21_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_TRG21_Name"; + displayName = CSTRING(arifle_TRG21_Name); }; class Weapon_arifle_TRG20_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_TRG20_Name"; + displayName = CSTRING(arifle_TRG20_Name); }; class Weapon_arifle_TRG21_GL_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_TRG21_GL_Name"; + displayName = CSTRING(arifle_TRG21_GL_Name); }; // sub machine guns class Weapon_SMG_01_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_SMG_01_Name"; + displayName = CSTRING(SMG_01_Name); }; class Weapon_SMG_02_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_SMG_02_Name"; + displayName = CSTRING(SMG_02_Name); }; class Weapon_hgun_PDW2000_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_hgun_PDW2000_Name"; + displayName = CSTRING(hgun_PDW2000_Name); }; class Weapon_arifle_SDAR_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_SDAR_Name"; + displayName = CSTRING(arifle_SDAR_Name); }; // machine guns class Weapon_LMG_Mk200_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_LMG_Mk200_Name"; + displayName = CSTRING(LMG_Mk200_Name); }; class Weapon_LMG_Zafir_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_LMG_Zafir_Name"; + displayName = CSTRING(LMG_Zafir_Name); }; // sniper rifles class Weapon_srifle_EBR_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_EBR_Name"; + displayName = CSTRING(srifle_EBR_Name); }; class Weapon_srifle_GM6_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_GM6_Name"; + displayName = CSTRING(srifle_GM6_Name); }; class Weapon_srifle_GM6_camo_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_GM6_camo_Name"; + displayName = CSTRING(srifle_GM6_camo_Name); }; class Weapon_srifle_LRR_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_LRR_Name"; + displayName = CSTRING(srifle_LRR_Name); }; class Weapon_srifle_LRR_camo_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_LRR_camo_Name"; + displayName = CSTRING(srifle_LRR_camo_Name); }; class Weapon_srifle_DMR_01_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_01_Name"; + displayName = CSTRING(srifle_DMR_01_Name); }; // marksmen /*class Weapon_srifle_DMR_02_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_02"; + displayName = CSTRING(srifle_DMR_02); }; class Weapon_srifle_DMR_02_camo_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_02_camo"; + displayName = CSTRING(srifle_DMR_02_camo); }; class Weapon_srifle_DMR_02_sniper_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_02_sniper"; + displayName = CSTRING(srifle_DMR_02_sniper); }; class Weapon_srifle_DMR_03_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_03"; + displayName = CSTRING(srifle_DMR_03); }; class Weapon_srifle_DMR_03_khaki_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_03_khaki"; + displayName = CSTRING(srifle_DMR_03_khaki); }; class Weapon_srifle_DMR_03_tan_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_03_tan"; + displayName = CSTRING(srifle_DMR_03_tan); }; class Weapon_srifle_DMR_03_multicam_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_03_multicam"; + displayName = CSTRING(srifle_DMR_03_multicam); }; class Weapon_srifle_DMR_03_woodland_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_03_woodland"; + displayName = CSTRING(srifle_DMR_03_woodland); }; class Weapon_srifle_DMR_04_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_04"; + displayName = CSTRING(srifle_DMR_04); }; class Weapon_srifle_DMR_04_Tan_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_04_Tan"; + displayName = CSTRING(srifle_DMR_04_Tan); }; class Weapon_srifle_DMR_05_blk_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_05_blk"; + displayName = CSTRING(srifle_DMR_05_blk); }; class Weapon_srifle_DMR_05_hex_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_05_hex"; + displayName = CSTRING(srifle_DMR_05_hex); }; class Weapon_srifle_DMR_05_tan_f: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_05_tan"; + displayName = CSTRING(srifle_DMR_05_tan); }; class Weapon_srifle_DMR_06_camo_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_06_camo"; + displayName = CSTRING(srifle_DMR_06_camo); }; class Weapon_srifle_DMR_06_olive_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_06_olive"; + displayName = CSTRING(srifle_DMR_06_olive); }; class Weapon_MMG_01_hex_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_MMG_01_hex"; + displayName = CSTRING(MMG_01_hex); }; class Weapon_MMG_01_tan_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_MMG_01_tan"; + displayName = CSTRING(MMG_01_tan); }; class Weapon_MMG_02_camo_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_MMG_02_camo"; + displayName = CSTRING(MMG_02_camo); }; class Weapon_MMG_02_black_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_MMG_02_black"; + displayName = CSTRING(MMG_02_black); }; class Weapon_MMG_02_sand_F: Weapon_Base_F { - displayName = "$STR_ACE_RealisticNames_MMG_02_sand"; + displayName = CSTRING(MMG_02_sand); };*/ }; diff --git a/addons/realisticnames/CfgWeapons.hpp b/addons/realisticnames/CfgWeapons.hpp index e61457df5d..ecadbb5921 100644 --- a/addons/realisticnames/CfgWeapons.hpp +++ b/addons/realisticnames/CfgWeapons.hpp @@ -7,299 +7,299 @@ class CfgWeapons { // MX class arifle_MX_Base_F; class arifle_MX_F: arifle_MX_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_MX_Name"; + displayName = CSTRING(arifle_MX_Name); }; class arifle_MX_Black_F: arifle_MX_F { - displayName = "$STR_ACE_RealisticNames_arifle_MX_Black_Name"; + displayName = CSTRING(arifle_MX_Black_Name); }; class arifle_MXC_F: arifle_MX_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_MXC_Name"; + displayName = CSTRING(arifle_MXC_Name); }; class arifle_MXC_Black_F: arifle_MXC_F { - displayName = "$STR_ACE_RealisticNames_arifle_MXC_Black_Name"; + displayName = CSTRING(arifle_MXC_Black_Name); }; class arifle_MX_GL_F: arifle_MX_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_MX_GL_Name"; + displayName = CSTRING(arifle_MX_GL_Name); }; class arifle_MX_GL_Black_F: arifle_MX_GL_F { - displayName = "$STR_ACE_RealisticNames_arifle_MX_GL_Black_Name"; + displayName = CSTRING(arifle_MX_GL_Black_Name); }; class arifle_MX_SW_F: arifle_MX_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_MX_SW_Name"; + displayName = CSTRING(arifle_MX_SW_Name); }; class arifle_MX_SW_Black_F: arifle_MX_SW_F { - displayName = "$STR_ACE_RealisticNames_arifle_MX_SW_Black_Name"; + displayName = CSTRING(arifle_MX_SW_Black_Name); }; class arifle_MXM_F: arifle_MX_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_MXM_Name"; + displayName = CSTRING(arifle_MXM_Name); }; class arifle_MXM_Black_F: arifle_MXM_F { - displayName = "$STR_ACE_RealisticNames_arifle_MXM_Black_Name"; + displayName = CSTRING(arifle_MXM_Black_Name); }; // Katiba class arifle_katiba_Base_F; class arifle_Katiba_F: arifle_katiba_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_Katiba_Name"; + displayName = CSTRING(arifle_Katiba_Name); }; class arifle_Katiba_GL_F: arifle_katiba_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_Katiba_GL_Name"; + displayName = CSTRING(arifle_Katiba_GL_Name); }; class arifle_Katiba_C_F: arifle_katiba_Base_F { - displayName = "$STR_ACE_RealisticNames_arifle_Katiba_C_Name"; + displayName = CSTRING(arifle_Katiba_C_Name); }; // SDAR class SDAR_base_F; class arifle_SDAR_F: SDAR_base_F { - displayName = "$STR_ACE_RealisticNames_arifle_SDAR_Name"; + displayName = CSTRING(arifle_SDAR_Name); }; // TAR-21 class Tavor_base_F; class arifle_TRG21_F: Tavor_base_F { - displayName = "$STR_ACE_RealisticNames_arifle_TRG21_Name"; + displayName = CSTRING(arifle_TRG21_Name); }; class arifle_TRG21_GL_F: arifle_TRG21_F { - displayName = "$STR_ACE_RealisticNames_arifle_TRG21_GL_Name"; + displayName = CSTRING(arifle_TRG21_GL_Name); }; class arifle_TRG20_F: Tavor_base_F { - displayName = "$STR_ACE_RealisticNames_arifle_TRG20_Name"; + displayName = CSTRING(arifle_TRG20_Name); }; // F2000 class mk20_base_F; class arifle_Mk20_F: mk20_base_F { - displayName = "$STR_ACE_RealisticNames_arifle_Mk20_Name"; + displayName = CSTRING(arifle_Mk20_Name); }; class arifle_Mk20_plain_F: arifle_Mk20_F { - displayName = "$STR_ACE_RealisticNames_arifle_Mk20_plain_Name"; + displayName = CSTRING(arifle_Mk20_plain_Name); }; class arifle_Mk20C_F: mk20_base_F { - displayName = "$STR_ACE_RealisticNames_arifle_Mk20C_Name"; + displayName = CSTRING(arifle_Mk20C_Name); }; class arifle_Mk20C_plain_F: arifle_Mk20C_F { - displayName = "$STR_ACE_RealisticNames_arifle_Mk20C_plain_Name"; + displayName = CSTRING(arifle_Mk20C_plain_Name); }; class arifle_Mk20_GL_F: mk20_base_F { - displayName = "$STR_ACE_RealisticNames_arifle_Mk20_GL_Name"; + displayName = CSTRING(arifle_Mk20_GL_Name); }; class arifle_Mk20_GL_plain_F: arifle_Mk20_GL_F { - displayName = "$STR_ACE_RealisticNames_arifle_Mk20_GL_plain_Name"; + displayName = CSTRING(arifle_Mk20_GL_plain_Name); }; // Vector class SMG_01_Base; class SMG_01_F: SMG_01_Base { - displayName = "$STR_ACE_RealisticNames_SMG_01_Name"; + displayName = CSTRING(SMG_01_Name); }; // Scorpion class SMG_02_base_F; class SMG_02_F: SMG_02_base_F { - displayName = "$STR_ACE_RealisticNames_SMG_02_Name"; + displayName = CSTRING(SMG_02_Name); }; // PDW 2000 class pdw2000_base_F; class hgun_pdw2000_F: pdw2000_base_F { - displayName = "$STR_ACE_RealisticNames_hgun_PDW2000_Name"; + displayName = CSTRING(hgun_PDW2000_Name); }; // pistols class Pistol_Base_F; class hgun_P07_F: Pistol_Base_F { - displayName = "$STR_ACE_RealisticNames_hgun_P07_Name"; + displayName = CSTRING(hgun_P07_Name); }; class hgun_Rook40_F: Pistol_Base_F { - displayName = "$STR_ACE_RealisticNames_hgun_Rook40_Name"; + displayName = CSTRING(hgun_Rook40_Name); }; class hgun_ACPC2_F: Pistol_Base_F { - displayName = "$STR_ACE_RealisticNames_hgun_ACPC2_Name"; + displayName = CSTRING(hgun_ACPC2_Name); }; class hgun_Pistol_heavy_01_F: Pistol_Base_F { - displayName = "$STR_ACE_RealisticNames_hgun_Pistol_heavy_01_Name"; + displayName = CSTRING(hgun_Pistol_heavy_01_Name); }; class hgun_Pistol_heavy_02_F: Pistol_Base_F { - displayName = "$STR_ACE_RealisticNames_hgun_Pistol_heavy_02_Name"; + displayName = CSTRING(hgun_Pistol_heavy_02_Name); }; class hgun_Pistol_Signal_F: Pistol_Base_F { - displayName = "$STR_ACE_RealisticNames_hgun_Pistol_Signal_Name"; + displayName = CSTRING(hgun_Pistol_Signal_Name); }; // machine guns class Rifle_Long_Base_F; class LMG_Mk200_F: Rifle_Long_Base_F { - displayName = "$STR_ACE_RealisticNames_LMG_Mk200_Name"; + displayName = CSTRING(LMG_Mk200_Name); }; class LMG_Zafir_F: Rifle_Long_Base_F { - displayName = "$STR_ACE_RealisticNames_LMG_Zafir_Name"; + displayName = CSTRING(LMG_Zafir_Name); }; // sniper rifles class EBR_base_F; class srifle_EBR_F: EBR_base_F { - displayName = "$STR_ACE_RealisticNames_srifle_EBR_Name"; + displayName = CSTRING(srifle_EBR_Name); }; class LRR_base_F; class srifle_LRR_F: LRR_base_F { - displayName = "$STR_ACE_RealisticNames_srifle_LRR_Name"; + displayName = CSTRING(srifle_LRR_Name); }; class srifle_LRR_camo_F: srifle_LRR_F { - displayName = "$STR_ACE_RealisticNames_srifle_LRR_camo_Name"; + displayName = CSTRING(srifle_LRR_camo_Name); }; class GM6_base_F; class srifle_GM6_F: GM6_base_F { - displayName = "$STR_ACE_RealisticNames_srifle_GM6_Name"; + displayName = CSTRING(srifle_GM6_Name); }; class srifle_GM6_camo_F: srifle_GM6_F { - displayName = "$STR_ACE_RealisticNames_srifle_GM6_camo_Name"; + displayName = CSTRING(srifle_GM6_camo_Name); }; class DMR_01_base_F; class srifle_DMR_01_F: DMR_01_base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_01_Name"; + displayName = CSTRING(srifle_DMR_01_Name); }; // launchers class Launcher_Base_F; class launch_RPG32_F: Launcher_Base_F { - displayName = "$STR_ACE_RealisticNames_launch_RPG32_Name"; + displayName = CSTRING(launch_RPG32_Name); }; /*class launch_Titan_base: Launcher_Base_F { - displayName = "$STR_ACE_RealisticNames_launch_Titan_Name"; + displayName = CSTRING(launch_Titan_Name); }; class launch_Titan_short_base: launch_Titan_base { - displayName = "$STR_ACE_RealisticNames_launch_Titan_short_Name"; + displayName = CSTRING(launch_Titan_short_Name); };*/ class launch_NLAW_F: Launcher_Base_F { - displayName = "$STR_ACE_RealisticNames_launch_NLAW_Name"; + displayName = CSTRING(launch_NLAW_Name); }; // marksmen marksman class DMR_02_base_F: Rifle_Long_Base_F { - displayName = "$STR_ACE_RealisticNames_DMR_02"; //MAR-10 .338"; + displayName = CSTRING(DMR_02"; //MAR-10 .338); }; class srifle_DMR_02_F: DMR_02_base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_02"; //MAR-10 .338 (Black)"; + displayName = CSTRING(srifle_DMR_02"; //MAR-10 .338 (Black)); }; class srifle_DMR_02_camo_F: srifle_DMR_02_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_02_camo"; //MAR-10 .338 (Camo)"; + displayName = CSTRING(srifle_DMR_02_camo"; //MAR-10 .338 (Camo)); }; class srifle_DMR_02_sniper_F: srifle_DMR_02_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_02_sniper"; //MAR-10 .338 (Sand)"; + displayName = CSTRING(srifle_DMR_02_sniper"; //MAR-10 .338 (Sand)); }; class DMR_03_base_F: Rifle_Long_Base_F { - displayName = "$STR_ACE_RealisticNames_DMR_03"; //Mk-I EMR 7.62 mm"; + displayName = CSTRING(DMR_03"; //Mk-I EMR 7.62 mm); }; class srifle_DMR_03_F: DMR_03_base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_03"; //Mk-I EMR 7.62 mm (Black)"; + displayName = CSTRING(srifle_DMR_03"; //Mk-I EMR 7.62 mm (Black)); }; class srifle_DMR_03_khaki_F: srifle_DMR_03_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_03_khaki"; //Mk-I EMR 7.62 mm (Khaki)"; + displayName = CSTRING(srifle_DMR_03_khaki"; //Mk-I EMR 7.62 mm (Khaki)); }; class srifle_DMR_03_tan_F: srifle_DMR_03_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_03_tan"; //Mk-I EMR 7.62 mm (Sand)"; + displayName = CSTRING(srifle_DMR_03_tan"; //Mk-I EMR 7.62 mm (Sand)); }; class srifle_DMR_03_multicam_F: srifle_DMR_03_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_03_multicam"; //Mk-I EMR 7.62 mm (Camo)"; + displayName = CSTRING(srifle_DMR_03_multicam"; //Mk-I EMR 7.62 mm (Camo)); }; class srifle_DMR_03_woodland_F: srifle_DMR_03_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_03_woodland"; //Mk-I EMR 7.62 mm (Woodland)"; + displayName = CSTRING(srifle_DMR_03_woodland"; //Mk-I EMR 7.62 mm (Woodland)); }; class srifle_DMR_03_spotter_F: srifle_DMR_03_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_03_spotter"; //NATO DMR (provisional) spotter"; + displayName = CSTRING(srifle_DMR_03_spotter"; //NATO DMR (provisional) spotter); }; class DMR_04_base_F: Rifle_Long_Base_F { - displayName = "$STR_ACE_RealisticNames_DMR_04"; //ASP-1 Kir 12.7 mm"; + displayName = CSTRING(DMR_04"; //ASP-1 Kir 12.7 mm); }; class srifle_DMR_04_F: DMR_04_base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_04"; //ASP-1 Kir 12.7 mm (Black)"; + displayName = CSTRING(srifle_DMR_04"; //ASP-1 Kir 12.7 mm (Black)); }; class srifle_DMR_04_Tan_F: srifle_DMR_04_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_04_Tan"; //ASP-1 Kir 12.7 mm (Tan)"; + displayName = CSTRING(srifle_DMR_04_Tan"; //ASP-1 Kir 12.7 mm (Tan)); }; class DMR_05_base_F: Rifle_Long_Base_F { - displayName = "$STR_ACE_RealisticNames_DMR_05"; //Cyrus 9.3 mm"; + displayName = CSTRING(DMR_05"; //Cyrus 9.3 mm); }; class srifle_DMR_05_blk_F: DMR_05_base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_05_blk"; //Cyrus 9.3 mm (Black) + displayName = CSTRING(srifle_DMR_05_blk); //Cyrus 9.3 mm (Black) }; class srifle_DMR_05_hex_F: srifle_DMR_05_blk_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_05_hex"; //Cyrus 9.3 mm (Hex)"; + displayName = CSTRING(srifle_DMR_05_hex"; //Cyrus 9.3 mm (Hex)); }; class srifle_DMR_05_tan_f: srifle_DMR_05_blk_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_05_tan"; //Cyrus 9.3 mm (Tan)"; + displayName = CSTRING(srifle_DMR_05_tan"; //Cyrus 9.3 mm (Tan)); }; class DMR_06_base_F: Rifle_Long_Base_F { - displayName = "$STR_ACE_RealisticNames_DMR_06"; //Mk14 7.62 mm"; + displayName = CSTRING(DMR_06"; //Mk14 7.62 mm); }; class srifle_DMR_06_camo_F: DMR_06_base_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_06_camo"; //Mk14 7.62 mm (Camo) + displayName = CSTRING(srifle_DMR_06_camo); //Mk14 7.62 mm (Camo) }; class srifle_DMR_06_olive_F: srifle_DMR_06_camo_F { - displayName = "$STR_ACE_RealisticNames_srifle_DMR_06_olive"; //Mk14 7.62 mm (Olive)"; + displayName = CSTRING(srifle_DMR_06_olive"; //Mk14 7.62 mm (Olive)); }; // marksmen mgs class MMG_01_base_F: Rifle_Long_Base_F { - displayName = "$STR_ACE_RealisticNames_MMG_01"; //Navid 9.3 mm"; + displayName = CSTRING(MMG_01"; //Navid 9.3 mm); }; class MMG_01_hex_F: MMG_01_base_F { - displayName = "$STR_ACE_RealisticNames_MMG_01_hex"; //Navid 9.3 mm (Hex)"; + displayName = CSTRING(MMG_01_hex"; //Navid 9.3 mm (Hex)); }; class MMG_01_tan_F: MMG_01_hex_F { - displayName = "$STR_ACE_RealisticNames_MMG_01_tan"; //Navid 9.3 mm (Tan)"; + displayName = CSTRING(MMG_01_tan"; //Navid 9.3 mm (Tan)); }; class MMG_02_base_F: Rifle_Long_Base_F { - displayName = "$STR_ACE_RealisticNames_MMG_02"; //SPMG .338"; + displayName = CSTRING(MMG_02"; //SPMG .338); }; class MMG_02_camo_F: MMG_02_base_F { - displayName = "$STR_ACE_RealisticNames_MMG_02_camo"; //SPMG .338 (MTP)"; + displayName = CSTRING(MMG_02_camo"; //SPMG .338 (MTP)); }; class MMG_02_black_F: MMG_02_camo_F { - displayName = "$STR_ACE_RealisticNames_MMG_02_black"; //SPMG .338 (Black)"; + displayName = CSTRING(MMG_02_black"; //SPMG .338 (Black)); }; class MMG_02_sand_F: MMG_02_camo_F { - displayName = "$STR_ACE_RealisticNames_MMG_02_sand"; //SPMG .338 (Sand)"; + displayName = CSTRING(MMG_02_sand"; //SPMG .338 (Sand)); }; // vehicle weapons diff --git a/addons/reload/ACE_Settings.hpp b/addons/reload/ACE_Settings.hpp index ce122a28f8..7b60527449 100644 --- a/addons/reload/ACE_Settings.hpp +++ b/addons/reload/ACE_Settings.hpp @@ -3,7 +3,7 @@ class ACE_Settings { typeName = "BOOL"; isClientSettable = 1; value = 1; - displayName = "$STR_ACE_reload_SettingDisplayTextName"; - description = "$STR_ACE_reload_SettingDisplayTextDesc"; + displayName = CSTRING(SettingDisplayTextName); + description = CSTRING(SettingDisplayTextDesc); }; }; diff --git a/addons/reload/CfgVehicles.hpp b/addons/reload/CfgVehicles.hpp index b6bd212015..a9fa4deadd 100644 --- a/addons/reload/CfgVehicles.hpp +++ b/addons/reload/CfgVehicles.hpp @@ -4,13 +4,13 @@ class CfgVehicles { class ACE_Actions { class ACE_Weapon { class GVAR(LinkBelt) { - displayName = "$STR_ACE_Reload_LinkBelt"; + displayName = CSTRING(LinkBelt); distance = 2.0; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canLinkBelt)); statement = QUOTE([ARR_2(_player, _target)] call FUNC(startLinkingBelt)); }; class GVAR(CheckAmmo) { - displayName = "$STR_ACE_Reload_checkAmmo"; + displayName = CSTRING(checkAmmo); distance = 2.0; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canCheckAmmo)); statement = QUOTE([ARR_2(_player, _target)] call FUNC(checkAmmo)); @@ -24,7 +24,7 @@ class CfgVehicles { class ACE_Actions { class ACE_MainActions { class GVAR(CheckAmmo) { - displayName = "$STR_ACE_Reload_checkAmmo"; + displayName = CSTRING(checkAmmo); distance = 2.0; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canCheckAmmo)); statement = QUOTE([ARR_2(_player, _target)] call FUNC(checkAmmo)); diff --git a/addons/reload/XEH_postInit.sqf b/addons/reload/XEH_postInit.sqf index 4444fe1e34..869e151b6a 100644 --- a/addons/reload/XEH_postInit.sqf +++ b/addons/reload/XEH_postInit.sqf @@ -4,7 +4,7 @@ if !(hasInterface) exitWith {}; // Add keybinds -["ACE3 Weapons", QGVAR(checkAmmo), localize "STR_ACE_Reload_checkAmmo", +["ACE3 Weapons", QGVAR(checkAmmo), localize STRING(checkAmmo), { // Conditions: canInteract if !([ACE_player, (vehicle ACE_player), ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/reload/functions/fnc_startLinkingBelt.sqf b/addons/reload/functions/fnc_startLinkingBelt.sqf index 8b9145c237..c76dc5ccd5 100644 --- a/addons/reload/functions/fnc_startLinkingBelt.sqf +++ b/addons/reload/functions/fnc_startLinkingBelt.sqf @@ -66,4 +66,4 @@ _player playActionNow "PutDown"; [_player, _magazineType, _maxAmmo] call EFUNC(common,removeSpecificMagazine); // Call progress bar -[4, [_player, _target, [_magazineType, _maxAmmo]], _onFinish, _onFailure, (localize "STR_ACE_Reload_LinkingBelt"), _condition] call EFUNC(common,progressBar); +[4, [_player, _target, [_magazineType, _maxAmmo]], _onFinish, _onFailure, (localize STRING(LinkingBelt)), _condition] call EFUNC(common,progressBar); diff --git a/addons/reloadlaunchers/CfgVehicles.hpp b/addons/reloadlaunchers/CfgVehicles.hpp index 617aa26b5c..3d7a5c9353 100644 --- a/addons/reloadlaunchers/CfgVehicles.hpp +++ b/addons/reloadlaunchers/CfgVehicles.hpp @@ -4,7 +4,7 @@ class CfgVehicles { class CAManBase: Man { class ACE_Actions { class GVAR(ReloadLauncher) { - displayName = "$STR_ACE_ReloadLaunchers_LoadLauncher"; + displayName = CSTRING(LoadLauncher); selection = "launcher"; distance = 4; condition = ""; diff --git a/addons/reloadlaunchers/functions/fnc_addMissileReloadActions.sqf b/addons/reloadlaunchers/functions/fnc_addMissileReloadActions.sqf index 58cd53699e..40c4e85c62 100644 --- a/addons/reloadlaunchers/functions/fnc_addMissileReloadActions.sqf +++ b/addons/reloadlaunchers/functions/fnc_addMissileReloadActions.sqf @@ -30,7 +30,7 @@ _loadableMissiles = [_unit, _weapon] call FUNC(getLoadableMissiles); private ["_name", "_displayName", "_statement", "_condition", "_action"]; _name = format [QGVAR(Missile_%1), _x]; - _displayName = format [localize "STR_ACE_ReloadLaunchers_LoadMagazine", getText (configFile >> "CfgMagazines" >> _x >> "displayName")]; + _displayName = format [localize STRING(LoadMagazine), getText (configFile >> "CfgMagazines" >> _x >> "displayName")]; _statement = { (_this select 2) call DFUNC(load); diff --git a/addons/reloadlaunchers/functions/fnc_load.sqf b/addons/reloadlaunchers/functions/fnc_load.sqf index bf14b9b691..3005ee231c 100644 --- a/addons/reloadlaunchers/functions/fnc_load.sqf +++ b/addons/reloadlaunchers/functions/fnc_load.sqf @@ -34,7 +34,7 @@ _onSuccess = { (_this select 0 select 0) removeMagazine (_this select 0 select 3); ["reloadLauncher", _this select 0 select 1, _this select 0] call DEFUNC(common,targetEvent); - [localize "STR_ACE_ReloadLaunchers_LauncherLoaded"] call DEFUNC(common,displayTextStructured); + [localize STRING(LauncherLoaded)] call DEFUNC(common,displayTextStructured); }; _onFailure = { @@ -45,4 +45,4 @@ _condition = { (_this select 0) call DFUNC(canLoad) && {(_this select 0 select 0) distance (_this select 0 select 1) < 4} }; -[_reloadTime, [_unit, _target, _weapon, _magazine], _onSuccess, _onFailure, localize "STR_ACE_ReloadLaunchers_LoadingLauncher", _condition] call EFUNC(common,progressBar); +[_reloadTime, [_unit, _target, _weapon, _magazine], _onSuccess, _onFailure, localize STRING(LoadingLauncher), _condition] call EFUNC(common,progressBar); diff --git a/addons/respawn/CfgVehicleClasses.hpp b/addons/respawn/CfgVehicleClasses.hpp index 19ed9fede8..ab9c9b6c7e 100644 --- a/addons/respawn/CfgVehicleClasses.hpp +++ b/addons/respawn/CfgVehicleClasses.hpp @@ -1,5 +1,5 @@ class CfgVehicleClasses { class GVAR(Rallypoints) { - displayName = "$STR_ACE_Respawn_EditorCategory"; + displayName = CSTRING(EditorCategory); }; }; diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp index e90f4ba08e..21d934c4fd 100644 --- a/addons/respawn/CfgVehicles.hpp +++ b/addons/respawn/CfgVehicles.hpp @@ -6,7 +6,7 @@ class CfgVehicles { class ACE_ModuleRespawn: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_Respawn_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); function = QFUNC(module); scope = 2; isGlobal = 1; @@ -14,28 +14,28 @@ class CfgVehicles { class Arguments { class SavePreDeathGear { - displayName = "$STR_ACE_Respawn_SavePreDeathGear_DisplayName"; - description = "$STR_ACE_Respawn_SavePreDeathGear_Description"; + displayName = CSTRING(SavePreDeathGear_DisplayName); + description = CSTRING(SavePreDeathGear_Description); typeName = "BOOL"; defaultValue = 0; }; class RemoveDeadBodiesDisconnected { - displayName = "$STR_ACE_Respawn_RemoveDeadBodiesDisconnected_DisplayName"; - description = "$STR_ACE_Respawn_RemoveDeadBodiesDisconnected_Description"; + displayName = CSTRING(RemoveDeadBodiesDisconnected_DisplayName); + description = CSTRING(RemoveDeadBodiesDisconnected_Description); typeName = "BOOL"; defaultValue = 1; }; }; class ModuleDescription: ModuleDescription { - description = "$STR_ACE_Respawn_Module_Description"; + description = CSTRING(Module_Description); }; }; class ACE_ModuleFriendlyFire: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_FriendlyFire_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); function = QFUNC(moduleFriendlyFire); scope = 2; isGlobal = 1; @@ -43,14 +43,14 @@ class CfgVehicles { class Arguments {}; class ModuleDescription: ModuleDescription { - description = "$STR_ACE_FriendlyFire_Module_Description"; + description = CSTRING(Module_Description); }; }; class ACE_ModuleRallypoint: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_Rallypoint_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); function = QFUNC(moduleRallypoint); scope = 2; isGlobal = 1; @@ -58,7 +58,7 @@ class CfgVehicles { class Arguments {}; class ModuleDescription: ModuleDescription { - description = "$STR_ACE_Rallypoint_Module_Description"; + description = CSTRING(Module_Description); }; }; @@ -67,7 +67,7 @@ class CfgVehicles { class CAManBase : Man { class ACE_SelfActions { class ACE_MoveRallypoint { - displayName = "$STR_ACE_Rallypoint_MoveRallypoint"; + displayName = CSTRING(MoveRallypoint); condition = QUOTE([ARR_2(_player, side group _player)] call FUNC(canMoveRallypoint)); statement = QUOTE([ARR_2(_player, side group _player)] call FUNC(moveRallypoint)); showDisabled = 0; @@ -95,12 +95,12 @@ class CfgVehicles { XEH_ENABLED; author = "$STR_ACE_Common_ACETeam"; - displayName = "$STR_ACE_Respawn_RallypointWestBase"; + displayName = CSTRING(RallypointWestBase); vehicleClass = QGVAR(Rallypoints); class ACE_Actions: ACE_Actions { class ACE_Teleport { - displayName = "$STR_ACE_Respawn_TeleportToRallypoint"; + displayName = CSTRING(TeleportToRallypoint); distance = 4; condition = QUOTE(side group _player == west); statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_West')] call FUNC(teleportToRallypoint)); @@ -115,12 +115,12 @@ class CfgVehicles { XEH_ENABLED; author = "$STR_ACE_Common_ACETeam"; - displayName = "$STR_ACE_Respawn_RallypointEastBase"; + displayName = CSTRING(RallypointEastBase); vehicleClass = QGVAR(Rallypoints); class ACE_Actions: ACE_Actions { class ACE_Teleport { - displayName = "$STR_ACE_Respawn_TeleportToRallypoint"; + displayName = CSTRING(TeleportToRallypoint); distance = 4; condition = QUOTE(side group _player == east); statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_East')] call FUNC(teleportToRallypoint)); @@ -135,12 +135,12 @@ class CfgVehicles { XEH_ENABLED; author = "$STR_ACE_Common_ACETeam"; - displayName = "$STR_ACE_Respawn_RallypointIndependentBase"; + displayName = CSTRING(RallypointIndependentBase); vehicleClass = QGVAR(Rallypoints); class ACE_Actions: ACE_Actions { class ACE_Teleport { - displayName = "$STR_ACE_Respawn_TeleportToRallypoint"; + displayName = CSTRING(TeleportToRallypoint); distance = 4; condition = QUOTE(side group _player == independent); statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_Independent')] call FUNC(teleportToRallypoint)); @@ -156,12 +156,12 @@ class CfgVehicles { XEH_ENABLED; author = "$STR_ACE_Common_ACETeam"; - displayName = "$STR_ACE_Respawn_RallypointWest"; + displayName = CSTRING(RallypointWest); vehicleClass = QGVAR(Rallypoints); class ACE_Actions: ACE_Actions { class ACE_Teleport { - displayName = "$STR_ACE_Respawn_TeleportToBase"; + displayName = CSTRING(TeleportToBase); distance = 4; condition = QUOTE(side group _player == west); statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_West_Base')] call FUNC(teleportToRallypoint)); @@ -176,12 +176,12 @@ class CfgVehicles { XEH_ENABLED; author = "$STR_ACE_Common_ACETeam"; - displayName = "$STR_ACE_Respawn_RallypointEast"; + displayName = CSTRING(RallypointEast); vehicleClass = QGVAR(Rallypoints); class ACE_Actions: ACE_Actions { class ACE_Teleport { - displayName = "$STR_ACE_Respawn_TeleportToBase"; + displayName = CSTRING(TeleportToBase); distance = 4; condition = QUOTE(side group _player == east); statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_East_Base')] call FUNC(teleportToRallypoint)); @@ -196,12 +196,12 @@ class CfgVehicles { XEH_ENABLED; author = "$STR_ACE_Common_ACETeam"; - displayName = "$STR_ACE_Respawn_RallypointIndependent"; + displayName = CSTRING(RallypointIndependent); vehicleClass = QGVAR(Rallypoints); class ACE_Actions: ACE_Actions { class ACE_Teleport { - displayName = "$STR_ACE_Respawn_TeleportToBase"; + displayName = CSTRING(TeleportToBase); distance = 4; condition = QUOTE(side group _player == independent); statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_Independent_Base')] call FUNC(teleportToRallypoint)); diff --git a/addons/respawn/functions/fnc_moveRallypoint.sqf b/addons/respawn/functions/fnc_moveRallypoint.sqf index da9054e6aa..ef84c93dc8 100644 --- a/addons/respawn/functions/fnc_moveRallypoint.sqf +++ b/addons/respawn/functions/fnc_moveRallypoint.sqf @@ -38,7 +38,7 @@ if (count _position == 0) then {_position = getPosATL _unit}; _position set [2, 0]; -[localize "STR_ACE_Respawn_Deploy"] call EFUNC(common,displayTextStructured); +[localize STRING(Deploy)] call EFUNC(common,displayTextStructured); [{ _rallypoint = _this select 0; @@ -53,6 +53,6 @@ _position set [2, 0]; ["rallypointMoved", [_rallypoint, _side, _position]] call EFUNC(common,globalEvent); - [localize "STR_ACE_Respawn_Deployed"] call EFUNC(common,displayTextStructured); + [localize STRING(Deployed)] call EFUNC(common,displayTextStructured); }, [_rallypoint, _unit, _position, _rallypoint], 5, 1] call EFUNC(common,waitAndExecute); diff --git a/addons/respawn/functions/fnc_teleportToRallypoint.sqf b/addons/respawn/functions/fnc_teleportToRallypoint.sqf index dc3cc16b92..11bdad618f 100644 --- a/addons/respawn/functions/fnc_teleportToRallypoint.sqf +++ b/addons/respawn/functions/fnc_teleportToRallypoint.sqf @@ -31,4 +31,4 @@ _rallypoint = missionNamespace getVariable [_rallypoint, objNull], if (isNull _rallypoint) exitWith {}; _unit setPosASL getPosASL _rallypoint; -[[localize "STR_ACE_Respawn_TeleportedToRallypoint", localize "STR_ACE_Respawn_TeleportedToBase"] select _toBase] call EFUNC(common,displayTextStructured); +[[localize STRING(TeleportedToRallypoint), localize STRING(TeleportedToBase)] select _toBase] call EFUNC(common,displayTextStructured); diff --git a/addons/safemode/XEH_postInit.sqf b/addons/safemode/XEH_postInit.sqf index 9c3d989425..9f19fe61c9 100644 --- a/addons/safemode/XEH_postInit.sqf +++ b/addons/safemode/XEH_postInit.sqf @@ -9,7 +9,7 @@ if (!hasInterface) exitWith {}; // Add keybinds -["ACE3 Weapons", QGVAR(safeMode), localize "STR_ACE_SafeMode_SafeMode", +["ACE3 Weapons", QGVAR(safeMode), localize STRING(SafeMode), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/safemode/functions/fnc_lockSafety.sqf b/addons/safemode/functions/fnc_lockSafety.sqf index 59aa9e78e5..b723e25dbd 100644 --- a/addons/safemode/functions/fnc_lockSafety.sqf +++ b/addons/safemode/functions/fnc_lockSafety.sqf @@ -47,7 +47,7 @@ if (_unit getVariable [QGVAR(actionID), -1] == -1) then { [_this select 1, currentWeapon (_this select 1), currentMuzzle (_this select 1)] call FUNC(unlockSafety); }; - //_id = [_unit, format ["%1", localize "STR_ACE_SafeMode_TakeOffSafety"], "DefaultAction", _condition, {}, {true}, _statement, 10] call EFUNC(common,addActionMenuEventHandler); + //_id = [_unit, format ["%1", localize STRING(TakeOffSafety)], "DefaultAction", _condition, {}, {true}, _statement, 10] call EFUNC(common,addActionMenuEventHandler); _id = [_unit, "DefaultAction", _condition, {}] call EFUNC(common,addActionEventHandler); _unit setVariable [QGVAR(actionID), _id]; @@ -62,4 +62,4 @@ if ((typeName _muzzle) == (typeName "")) then { private "_picture"; _picture = getText (configFile >> "CfgWeapons" >> _weapon >> "picture"); -[localize "STR_ACE_SafeMode_PutOnSafety", _picture] call EFUNC(common,displayTextPicture); +[localize STRING(PutOnSafety), _picture] call EFUNC(common,displayTextPicture); diff --git a/addons/safemode/functions/fnc_unlockSafety.sqf b/addons/safemode/functions/fnc_unlockSafety.sqf index 6e67e33126..742fd878d8 100644 --- a/addons/safemode/functions/fnc_unlockSafety.sqf +++ b/addons/safemode/functions/fnc_unlockSafety.sqf @@ -59,4 +59,4 @@ if (inputAction "nextWeapon" > 0) then { private "_picture"; _picture = getText (configFile >> "CfgWeapons" >> _weapon >> "picture"); -[localize "STR_ACE_SafeMode_TookOffSafety", _picture] call EFUNC(common,displayTextPicture); +[localize STRING(TookOffSafety), _picture] call EFUNC(common,displayTextPicture); diff --git a/addons/scopes/CfgVehicles.hpp b/addons/scopes/CfgVehicles.hpp index 7653fe0443..b3d4ef8806 100644 --- a/addons/scopes/CfgVehicles.hpp +++ b/addons/scopes/CfgVehicles.hpp @@ -5,7 +5,7 @@ class CfgVehicles { class ACE_Equipment { class GVAR(adjustZero) { // Updates the zero reference - displayName = "$STR_ACE_Scopes_AdjustZero"; + displayName = CSTRING(AdjustZero); condition = QUOTE([ACE_player] call FUNC(canAdjustZero)); statement = QUOTE([ACE_player] call FUNC(adjustZero)); showDisabled = 0; diff --git a/addons/scopes/XEH_postInit.sqf b/addons/scopes/XEH_postInit.sqf index d7affc0534..18572327ea 100644 --- a/addons/scopes/XEH_postInit.sqf +++ b/addons/scopes/XEH_postInit.sqf @@ -33,7 +33,7 @@ if !(hasInterface) exitWith {}; // Add keybinds -["ACE3 Scope Adjustment", QGVAR(AdjustUpMinor), localize "STR_ACE_Scopes_AdjustUpMinor", +["ACE3 Scope Adjustment", QGVAR(AdjustUpMinor), localize STRING(AdjustUpMinor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -46,7 +46,7 @@ if !(hasInterface) exitWith {}; {false}, [201, [false, false, false]], true] call cba_fnc_addKeybind; -["ACE3 Scope Adjustment", QGVAR(AdjustDownMinor), localize "STR_ACE_Scopes_AdjustDownMinor", +["ACE3 Scope Adjustment", QGVAR(AdjustDownMinor), localize STRING(AdjustDownMinor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -59,7 +59,7 @@ if !(hasInterface) exitWith {}; {false}, [209, [false, false, false]], true] call cba_fnc_addKeybind; -["ACE3 Scope Adjustment", QGVAR(AdjustLeftMinor), localize "STR_ACE_Scopes_AdjustLeftMinor", +["ACE3 Scope Adjustment", QGVAR(AdjustLeftMinor), localize STRING(AdjustLeftMinor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -72,7 +72,7 @@ if !(hasInterface) exitWith {}; {false}, [209, [false, true, false]], true] call cba_fnc_addKeybind; -["ACE3 Scope Adjustment", QGVAR(AdjustRightMinor), localize "STR_ACE_Scopes_AdjustRightMinor", +["ACE3 Scope Adjustment", QGVAR(AdjustRightMinor), localize STRING(AdjustRightMinor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -85,7 +85,7 @@ if !(hasInterface) exitWith {}; {false}, [201, [false, true, false]], true] call cba_fnc_addKeybind; -["ACE3 Scope Adjustment", QGVAR(AdjustUpMajor), localize "STR_ACE_Scopes_AdjustUpMajor", +["ACE3 Scope Adjustment", QGVAR(AdjustUpMajor), localize STRING(AdjustUpMajor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -98,7 +98,7 @@ if !(hasInterface) exitWith {}; {false}, [201, [true, false, false]], true] call cba_fnc_addKeybind; -["ACE3 Scope Adjustment", QGVAR(AdjustDownMajor), localize "STR_ACE_Scopes_AdjustDownMajor", +["ACE3 Scope Adjustment", QGVAR(AdjustDownMajor), localize STRING(AdjustDownMajor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -111,7 +111,7 @@ if !(hasInterface) exitWith {}; {false}, [209, [true, false, false]], true] call cba_fnc_addKeybind; -["ACE3 Scope Adjustment", QGVAR(AdjustLeftMajor), localize "STR_ACE_Scopes_AdjustLeftMajor", +["ACE3 Scope Adjustment", QGVAR(AdjustLeftMajor), localize STRING(AdjustLeftMajor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -124,7 +124,7 @@ if !(hasInterface) exitWith {}; {false}, [209, [true, true, false]], true] call cba_fnc_addKeybind; -["ACE3 Scope Adjustment", QGVAR(AdjustRightMajor), localize "STR_ACE_Scopes_AdjustRightMajor", +["ACE3 Scope Adjustment", QGVAR(AdjustRightMajor), localize STRING(AdjustRightMajor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/switchunits/CfgVehicles.hpp b/addons/switchunits/CfgVehicles.hpp index 0f76c78568..2f02571344 100644 --- a/addons/switchunits/CfgVehicles.hpp +++ b/addons/switchunits/CfgVehicles.hpp @@ -3,51 +3,51 @@ class CfgVehicles { class ACE_ModuleSwitchUnits: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_SwitchUnits_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); function = FUNC(module); scope = 2; isGlobal = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_SwitchUnits_ca.paa)); class Arguments { class SwitchToWest { - displayName = "$STR_ACE_SwitchUnits_SwitchToWest_DisplayName"; - description = "$STR_ACE_SwitchUnits_SwitchToWest_Description"; + displayName = CSTRING(SwitchToWest_DisplayName); + description = CSTRING(SwitchToWest_Description); typeName = "BOOL"; defaultValue = 0; }; class SwitchToEast { - displayName = "$STR_ACE_SwitchUnits_SwitchToEast_DisplayName"; - description = "$STR_ACE_SwitchUnits_SwitchToEast_Description"; + displayName = CSTRING(SwitchToEast_DisplayName); + description = CSTRING(SwitchToEast_Description); typeName = "BOOL"; defaultValue = 0; }; class SwitchToIndependent { - displayName = "$STR_ACE_SwitchUnits_SwitchToIndependent_DisplayName"; - description = "$STR_ACE_SwitchUnits_SwitchToIndependent_Description"; + displayName = CSTRING(SwitchToIndependent_DisplayName); + description = CSTRING(SwitchToIndependent_Description); typeName = "BOOL"; defaultValue = 0; }; class SwitchToCivilian { - displayName = "$STR_ACE_SwitchUnits_SwitchToCivilian_DisplayName"; - description = "$STR_ACE_SwitchUnits_SwitchToCivilian_Description"; + displayName = CSTRING(SwitchToCivilian_DisplayName); + description = CSTRING(SwitchToCivilian_Description); typeName = "BOOL"; defaultValue = 0; }; class EnableSafeZone { - displayName = "$STR_ACE_SwitchUnits_EnableSafeZone_DisplayName"; - description = "$STR_ACE_SwitchUnits_EnableSafeZone_Description"; + displayName = CSTRING(EnableSafeZone_DisplayName); + description = CSTRING(EnableSafeZone_Description); typeName = "BOOL"; defaultValue = 1; }; class SafeZoneRadius { - displayName = "$STR_ACE_SwitchUnits_SafeZoneRadius_DisplayName"; - description = "$STR_ACE_SwitchUnits_SafeZoneRadius_Description"; + displayName = CSTRING(SafeZoneRadius_DisplayName); + description = CSTRING(SafeZoneRadius_Description); typeName = "NUMBER"; defaultValue = 100; }; }; class ModuleDescription { - description = "$STR_ACE_SwitchUnits_Module_Description"; + description = CSTRING(Module_Description); }; }; }; \ No newline at end of file diff --git a/addons/switchunits/functions/fnc_switchUnit.sqf b/addons/switchunits/functions/fnc_switchUnit.sqf index c263bdd721..905efa72ea 100644 --- a/addons/switchunits/functions/fnc_switchUnit.sqf +++ b/addons/switchunits/functions/fnc_switchUnit.sqf @@ -41,7 +41,7 @@ if (GVAR(EnableSafeZone)) then { // exitWith doesn't exit past the "if(EnableSafeZone)" block if (_leave) exitWith { - [localize "STR_ACE_SwitchUnits_TooCloseToEnemy"] call EFUNC(common,displayTextStructured); + [localize STRING(TooCloseToEnemy)] call EFUNC(common,displayTextStructured); }; // should switch locality @@ -88,7 +88,7 @@ DFUNC(pfhSwitchUnit) = { [[_oldUnit, _oldOwner], QUOTE({(_this select 0) setOwner (_this select 1)}), 1] call EFUNC(common,execRemoteFnc); }; - [localize "STR_ACE_SwitchUnits_SwitchedUnit"] call EFUNC(common,displayTextStructured); + [localize STRING(SwitchedUnit)] call EFUNC(common,displayTextStructured); [(_this select 1)] call cba_fnc_removePerFrameHandler; diff --git a/addons/vector/CfgVehicles.hpp b/addons/vector/CfgVehicles.hpp index e9fd8945de..061fb5b226 100644 --- a/addons/vector/CfgVehicles.hpp +++ b/addons/vector/CfgVehicles.hpp @@ -10,7 +10,7 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; scope = 2; scopeCurator = 2; - displayName = "$STR_ACE_Vector_VectorName"; + displayName = CSTRING(VectorName); vehicleClass = "Items"; class TransportWeapons { MACRO_ADDWEAPON(ACE_Vector,1); diff --git a/addons/vector/CfgWeapons.hpp b/addons/vector/CfgWeapons.hpp index 6b8757d143..99c68fec16 100644 --- a/addons/vector/CfgWeapons.hpp +++ b/addons/vector/CfgWeapons.hpp @@ -3,8 +3,8 @@ class CfgWeapons { class Binocular; class ACE_Vector: Binocular { author = "$STR_ACE_Common_ACETeam"; - displayName = "$STR_ACE_Vector_VectorName"; - descriptionShort = "$STR_ACE_Vector_VectorDescription"; + displayName = CSTRING(VectorName); + descriptionShort = CSTRING(VectorDescription); model = PATHTOF(ace_vector.p3d); modelOptics = PATHTOF(ace_vector_optics.p3d); picture = PATHTOF(UI\ace_vector_x_ca.paa); diff --git a/addons/vector/initKeybinds.sqf b/addons/vector/initKeybinds.sqf index 79df40b0a2..84459f551a 100644 --- a/addons/vector/initKeybinds.sqf +++ b/addons/vector/initKeybinds.sqf @@ -1,6 +1,6 @@ // by commy2 -["ACE3 Equipment", QGVAR(AzimuthKey), localize "STR_ACE_Vector_AzimuthKey", +["ACE3 Equipment", QGVAR(AzimuthKey), localize STRING(AzimuthKey), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -29,7 +29,7 @@ [15, [false, false, false]], false, 0] call CBA_fnc_addKeybind; //Tab Key -["ACE3 Equipment", QGVAR(DistanceKey), localize "STR_ACE_Vector_DistanceKey", +["ACE3 Equipment", QGVAR(DistanceKey), localize STRING(DistanceKey), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/vehiclelock/CfgMagazines.hpp b/addons/vehiclelock/CfgMagazines.hpp index d57e8fff6f..62c6fdcec2 100644 --- a/addons/vehiclelock/CfgMagazines.hpp +++ b/addons/vehiclelock/CfgMagazines.hpp @@ -3,7 +3,7 @@ class CfgMagazines { class ACE_key_customKeyMagazine: CA_Magazine { picture = QUOTE(PATHTOF(ui\keyBlack.paa)); displayName = "ACE Vehicle Key"; //!!!CANNOT be localized!!!: because it is used as part of the magazineDetail string - descriptionShort = "$STR_ACE_Vehicle_Item_Custom_Description"; + descriptionShort = CSTRING(Item_Custom_Description); count = 1; mass = 0; ACE_isUnique = 1; diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 60cb67d4c4..2279a76616 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -1,21 +1,21 @@ #define MACRO_LOCK_ACTIONS \ class ACE_SelfActions { \ class ACE_unlockVehicle { \ - displayName = "$STR_ACE_Vehicle_Action_UnLock"; \ + displayName = CSTRING(Action_UnLock); \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [_target], [ARR_2(_target,false)])] call EFUNC(common,targetEvent)); \ priority = 0.3; \ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ class ACE_lockVehicle { \ - displayName = "$STR_ACE_Vehicle_Action_Lock"; \ + displayName = CSTRING(Action_Lock); \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [_target], [ARR_2(_target,true)])] call EFUNC(common,targetEvent)); \ priority = 0.2; \ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ class ACE_lockpickVehicle { \ - displayName = "$STR_ACE_Vehicle_Action_Lockpick"; \ + displayName = CSTRING(Action_Lockpick); \ condition = QUOTE([ARR_3(_player, _target, 'canLockpick')] call FUNC(lockpick)); \ statement = QUOTE([ARR_3(_player, _target, 'startLockpick')] call FUNC(lockpick)); \ priority = 0.1; \ @@ -24,7 +24,7 @@ class ACE_Actions { \ class ACE_MainActions { \ class ACE_unlockVehicle { \ - displayName = "$STR_ACE_Vehicle_Action_UnLock"; \ + displayName = CSTRING(Action_UnLock); \ distance = 4; \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [_target], [ARR_2(_target,false)])] call EFUNC(common,targetEvent)); \ @@ -32,7 +32,7 @@ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ class ACE_lockVehicle { \ - displayName = "$STR_ACE_Vehicle_Action_Lock"; \ + displayName = CSTRING(Action_Lock); \ distance = 4; \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [_target], [ARR_2(_target,true)])] call EFUNC(common,targetEvent)); \ @@ -40,7 +40,7 @@ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ class ACE_lockpickVehicle { \ - displayName = "$STR_ACE_Vehicle_Action_Lockpick"; \ + displayName = CSTRING(Action_Lockpick); \ distance = 4; \ condition = QUOTE([ARR_3(_player, _target, 'canLockpick')] call FUNC(lockpick)); \ statement = QUOTE([ARR_3(_player, _target, 'startLockpick')] call FUNC(lockpick)); \ @@ -69,7 +69,7 @@ class CfgVehicles { class ACE_VehicleLock_ModuleSetup: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_VehicleLock_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); function = QFUNC(moduleInit); scope = 2; isGlobal = 0; @@ -77,37 +77,37 @@ class CfgVehicles { functionPriority = 0; class Arguments { class LockVehicleInventory { - displayName = "$STR_ACE_VehicleLock_LockVehicleInventory_DisplayName"; - description = "$STR_ACE_VehicleLock_LockVehicleInventory_Description"; + displayName = CSTRING(LockVehicleInventory_DisplayName); + description = CSTRING(LockVehicleInventory_Description); typeName = "BOOL"; defaultValue = 0; }; class VehicleStartingLockState { - displayName = "$STR_ACE_VehicleLock_VehicleStartingLockState_DisplayName"; - description = "$STR_ACE_VehicleLock_VehicleStartingLockState_Description"; + displayName = CSTRING(VehicleStartingLockState_DisplayName); + description = CSTRING(VehicleStartingLockState_Description); typeName = "NUMBER"; class values { - class None {name = "$STR_ACE_VehicleLock_VehicleStartingLockState_AsIs"; value = 0; default = 1;}; - class Side {name = "$STR_ACE_VehicleLock_VehicleStartingLockState_Locked"; value = 1;}; - class Unique {name = "$STR_ACE_VehicleLock_VehicleStartingLockState_Unlocked"; value = 2;}; + class None {name = CSTRING(VehicleStartingLockState_AsIs); value = 0; default = 1;}; + class Side {name = CSTRING(VehicleStartingLockState_Locked); value = 1;}; + class Unique {name = CSTRING(VehicleStartingLockState_Unlocked); value = 2;}; }; }; class DefaultLockpickStrength { - displayName = "$STR_ACE_VehicleLock_DefaultLockpickStrength_DisplayName"; - description = "$STR_ACE_VehicleLock_DefaultLockpickStrength_Description"; + displayName = CSTRING(DefaultLockpickStrength_DisplayName); + description = CSTRING(DefaultLockpickStrength_Description); typeName = "NUMBER"; defaultValue = "10"; }; }; class ModuleDescription: ModuleDescription { - description = "$STR_ACE_VehicleLock_Module_Description"; + description = CSTRING(Module_Description); }; }; class ACE_VehicleLock_ModuleSyncedAssign: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_VehicleLock_VehicleKeyAssign_Module_DisplayName"; + displayName = CSTRING(VehicleKeyAssign_Module_DisplayName); function = QFUNC(moduleSync); scope = 2; isGlobal = 0; @@ -115,7 +115,7 @@ class CfgVehicles { functionPriority = 0; class Arguments {}; class ModuleDescription: ModuleDescription { - description = "$STR_ACE_VehicleLock_VehicleKeyAssign_Module_Description"; + description = CSTRING(VehicleKeyAssign_Module_Description); sync[] = {"AnyPlayer", "AnyVehicle"}; }; }; diff --git a/addons/vehiclelock/CfgWeapons.hpp b/addons/vehiclelock/CfgWeapons.hpp index 4b20de15d7..0263f5da40 100644 --- a/addons/vehiclelock/CfgWeapons.hpp +++ b/addons/vehiclelock/CfgWeapons.hpp @@ -5,7 +5,7 @@ class CfgWeapons { class ACE_key_master: ACE_ItemCore { author = "$STR_ACE_Common_ACETeam"; displayName = "Vehicle Key: Master"; - descriptionShort = "$STR_ACE_Vehicle_Item_Master_Description"; + descriptionShort = CSTRING(Item_Master_Description); model = "\A3\weapons_F\ammo\mag_univ.p3d"; picture = QUOTE(PATHTOF(ui\keyBlack.paa)); scope = 2; @@ -15,27 +15,27 @@ class CfgWeapons { }; class ACE_key_lockpick: ACE_key_master { displayName = "Lockpick"; - descriptionShort = "$STR_ACE_Vehicle_Item_Lockpick_Description"; + descriptionShort = CSTRING(Item_Lockpick_Description); picture = QUOTE(PATHTOF(ui\lockpick.paa)); }; class ACE_key_west: ACE_key_master { displayName = "Vehicle Key: West"; - descriptionShort = "$STR_ACE_Vehicle_Item_West_Description"; + descriptionShort = CSTRING(Item_West_Description); picture = QUOTE(PATHTOF(ui\keyBlue.paa)); }; class ACE_key_east: ACE_key_master { displayName = "Vehicle Key: East"; - descriptionShort = "$STR_ACE_Vehicle_Item_East_Description"; + descriptionShort = CSTRING(Item_East_Description); picture = QUOTE(PATHTOF(ui\keyRed.paa)); }; class ACE_key_indp: ACE_key_master { displayName = "Vehicle Key: Independent"; - descriptionShort = "$STR_ACE_Vehicle_Item_Indp_Description"; + descriptionShort = CSTRING(Item_Indp_Description); picture = QUOTE(PATHTOF(ui\keyPurple.paa)); }; class ACE_key_civ: ACE_key_master { displayName = "Vehicle Key: Civilian"; - descriptionShort = "$STR_ACE_Vehicle_Item_Civ_Description"; + descriptionShort = CSTRING(Item_Civ_Description); picture = QUOTE(PATHTOF(ui\keyGreen.paa)); }; }; diff --git a/addons/vehiclelock/functions/fnc_lockpick.sqf b/addons/vehiclelock/functions/fnc_lockpick.sqf index fc7fecc693..608ad8eeb6 100644 --- a/addons/vehiclelock/functions/fnc_lockpick.sqf +++ b/addons/vehiclelock/functions/fnc_lockpick.sqf @@ -54,7 +54,7 @@ case (_funcType == "canLockpick"): { _returnValue = true; }; case (_funcType == "startLockpick"): { - [_vehLockpickStrenth, [_unit, _veh, "finishLockpick"], {(_this select 0) call FUNC(lockpick)}, {}, (localize "STR_ACE_Vehicle_Action_LockpickInUse"), _condition] call EFUNC(common,progressBar); + [_vehLockpickStrenth, [_unit, _veh, "finishLockpick"], {(_this select 0) call FUNC(lockpick)}, {}, (localize STRING(Action_LockpickInUse)), _condition] call EFUNC(common,progressBar); _returnValue = true; }; case (_funcType == "finishLockpick"): { diff --git a/addons/vehicles/XEH_postInit.sqf b/addons/vehicles/XEH_postInit.sqf index 6ff723338b..e47f00541d 100644 --- a/addons/vehicles/XEH_postInit.sqf +++ b/addons/vehicles/XEH_postInit.sqf @@ -4,7 +4,7 @@ if !(hasInterface) exitWith {}; // Add keybinds -["ACE3 Vehicles", QGVAR(speedLimiter), localize "STR_ACE_SpeedLimiter", +["ACE3 Vehicles", QGVAR(speedLimiter), localize STRING(SpeedLimiter), { // Conditions: canInteract if !([ACE_player, objNull, ["isnotinside"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/vehicles/functions/fnc_speedLimiter.sqf b/addons/vehicles/functions/fnc_speedLimiter.sqf index 053d96d470..0b77e3f622 100644 --- a/addons/vehicles/functions/fnc_speedLimiter.sqf +++ b/addons/vehicles/functions/fnc_speedLimiter.sqf @@ -7,12 +7,12 @@ _driver = _this select 0; _vehicle = _this select 1; if (GETGVAR(isSpeedLimiter,false)) exitWith { - [localize "STR_ACE_SpeedLimiter_Off"] call EFUNC(common,displayTextStructured); + [localize STRING(Off)] call EFUNC(common,displayTextStructured); playSound "ACE_Sound_Click"; GVAR(isSpeedLimiter) = false; }; -[localize "STR_ACE_SpeedLimiter_On"] call EFUNC(common,displayTextStructured); +[localize STRING(On)] call EFUNC(common,displayTextStructured); playSound "ACE_Sound_Click"; GVAR(isSpeedLimiter) = true; diff --git a/addons/weaponselect/ACE_Settings.hpp b/addons/weaponselect/ACE_Settings.hpp index 34fdc809ea..7b60527449 100644 --- a/addons/weaponselect/ACE_Settings.hpp +++ b/addons/weaponselect/ACE_Settings.hpp @@ -3,7 +3,7 @@ class ACE_Settings { typeName = "BOOL"; isClientSettable = 1; value = 1; - displayName = "$STR_ACE_Weaponselect_SettingDisplayTextName"; - description = "$STR_ACE_Weaponselect_SettingDisplayTextDesc"; + displayName = CSTRING(SettingDisplayTextName); + description = CSTRING(SettingDisplayTextDesc); }; }; diff --git a/addons/weaponselect/XEH_postInit.sqf b/addons/weaponselect/XEH_postInit.sqf index d4fd02122f..d8676ef60f 100644 --- a/addons/weaponselect/XEH_postInit.sqf +++ b/addons/weaponselect/XEH_postInit.sqf @@ -4,7 +4,7 @@ if !(hasInterface) exitWith {}; // Add keybinds -["ACE3 Weapons", QGVAR(SelectPistolNew), localize "STR_ACE_WeaponSelect_SelectPistol", +["ACE3 Weapons", QGVAR(SelectPistolNew), localize STRING(SelectPistol), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -18,7 +18,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 1 Key) -["ACE3 Weapons", QGVAR(SelectRifleNew), localize "STR_ACE_WeaponSelect_SelectRifle", +["ACE3 Weapons", QGVAR(SelectRifleNew), localize STRING(SelectRifle), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -32,7 +32,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 2 Key) -["ACE3 Weapons", QGVAR(SelectRifleMuzzleNew), localize "STR_ACE_WeaponSelect_SelectRifleMuzzle", +["ACE3 Weapons", QGVAR(SelectRifleMuzzleNew), localize STRING(SelectRifleMuzzle), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -46,7 +46,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 3 Key) -["ACE3 Weapons", QGVAR(SelectLauncherNew), localize "STR_ACE_WeaponSelect_SelectLauncher", +["ACE3 Weapons", QGVAR(SelectLauncherNew), localize STRING(SelectLauncher), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -60,7 +60,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 4 Key) -["ACE3 Weapons", QGVAR(SelectBinocularNew), localize "STR_ACE_WeaponSelect_SelectBinocular", +["ACE3 Weapons", QGVAR(SelectBinocularNew), localize STRING(SelectBinocular), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -74,7 +74,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 5 Key) -["ACE3 Weapons", QGVAR(SelectGrenadeFrag), localize "STR_ACE_WeaponSelect_SelectGrenadeFrag", +["ACE3 Weapons", QGVAR(SelectGrenadeFrag), localize STRING(SelectGrenadeFrag), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -88,7 +88,7 @@ if !(hasInterface) exitWith {}; {false}, [7, [false, false, false]], false] call cba_fnc_addKeybind; //6 Key -["ACE3 Weapons", QGVAR(SelectGrenadeOther), localize "STR_ACE_WeaponSelect_SelectGrenadeOther", +["ACE3 Weapons", QGVAR(SelectGrenadeOther), localize STRING(SelectGrenadeOther), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -102,7 +102,7 @@ if !(hasInterface) exitWith {}; {false}, [8, [false, false, false]], false] call cba_fnc_addKeybind; //7 Key -["ACE3 Weapons", QGVAR(HolsterWeapon), localize "STR_ACE_WeaponSelect_HolsterWeapon", +["ACE3 Weapons", QGVAR(HolsterWeapon), localize STRING(HolsterWeapon), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -116,7 +116,7 @@ if !(hasInterface) exitWith {}; {false}, [11, [false, false, false]], false] call cba_fnc_addKeybind; //0 Key -["ACE3 Vehicles", QGVAR(EngineOn), localize "STR_ACE_WeaponSelect_EngineOn", +["ACE3 Vehicles", QGVAR(EngineOn), localize STRING(EngineOn), { // Conditions: canInteract if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -130,7 +130,7 @@ if !(hasInterface) exitWith {}; {false}, [3, [false, false, false]], false] call cba_fnc_addKeybind; //2 Key -["ACE3 Vehicles", QGVAR(EngineOff), localize "STR_ACE_WeaponSelect_EngineOff", +["ACE3 Vehicles", QGVAR(EngineOff), localize STRING(EngineOff), { // Conditions: canInteract if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -144,7 +144,7 @@ if !(hasInterface) exitWith {}; {false}, [2, [false, false, false]], false] call cba_fnc_addKeybind; //1 Key -["ACE3 Vehicles", QGVAR(SelectMainGunNew), localize "STR_ACE_WeaponSelect_SelectMainGun", +["ACE3 Vehicles", QGVAR(SelectMainGunNew), localize STRING(SelectMainGun), { // Conditions: canInteract if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -158,7 +158,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 3 Key) -["ACE3 Vehicles", QGVAR(SelectMachineGunNew), localize "STR_ACE_WeaponSelect_SelectMachineGun", +["ACE3 Vehicles", QGVAR(SelectMachineGunNew), localize STRING(SelectMachineGun), { // Conditions: canInteract if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -172,7 +172,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 4 Key) -["ACE3 Vehicles", QGVAR(SelectMissilesNew), localize "STR_ACE_WeaponSelect_SelectMissiles", +["ACE3 Vehicles", QGVAR(SelectMissilesNew), localize STRING(SelectMissiles), { // Conditions: canInteract if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -186,7 +186,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 5 Key) -["ACE3 Vehicles", QGVAR(FireSmokeLauncher), localize "STR_ACE_WeaponSelect_FireSmokeLauncher", +["ACE3 Vehicles", QGVAR(FireSmokeLauncher), localize STRING(FireSmokeLauncher), { // Conditions: canInteract if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf b/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf index a75a11c202..d07768729d 100644 --- a/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf +++ b/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf @@ -37,7 +37,7 @@ if (_nextMuzzle != "") then { GVAR(CurrentGrenadeMuzzleFrag) = ""; GVAR(CurrentGrenadeMuzzleOther) = ""; if (GVAR(DisplayText)) then { - _text = [localize "STR_ACE_WeaponSelect_NoGrenadesLeft", [1,0,0]] call EFUNC(common,stringToColoredText); + _text = [localize STRING(NoGrenadesLeft), [1,0,0]] call EFUNC(common,stringToColoredText); [composeText [lineBreak, _text]] call EFUNC(common,displayTextStructured); }; }; diff --git a/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf b/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf index 0dee3e5c57..3ffae72300 100644 --- a/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf +++ b/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf @@ -36,7 +36,7 @@ if (_nextMuzzle != "") then { // There is a no muzzle with magazines --> select nothing GVAR(CurrentGrenadeMuzzleFrag) = ""; if (GVAR(DisplayText)) then { - _text = [localize "STR_ACE_WeaponSelect_NoFragsLeft", [1,0,0]] call EFUNC(common,stringToColoredText); + _text = [localize STRING(NoFragsLeft), [1,0,0]] call EFUNC(common,stringToColoredText); [composeText [lineBreak, _text]] call EFUNC(common,displayTextStructured); }; }; diff --git a/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf b/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf index 4ab65e5bf3..0fe6b1c204 100644 --- a/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf +++ b/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf @@ -36,7 +36,7 @@ if (_nextMuzzle != "") then { // There is a no muzzle with magazines --> select nothing GVAR(CurrentGrenadeMuzzleOther) = ""; if (GVAR(DisplayText)) then { - _text = [localize "STR_ACE_WeaponSelect_NoMiscGrenadeLeft", [1,0,0]] call EFUNC(common,stringToColoredText); + _text = [localize STRING(NoMiscGrenadeLeft), [1,0,0]] call EFUNC(common,stringToColoredText); [composeText [lineBreak, _text]] call EFUNC(common,displayTextStructured); }; }; diff --git a/addons/weather/CfgVehicles.hpp b/addons/weather/CfgVehicles.hpp index d2b5bddcba..8b7db2d5d3 100644 --- a/addons/weather/CfgVehicles.hpp +++ b/addons/weather/CfgVehicles.hpp @@ -2,7 +2,7 @@ class CfgVehicles { class ACE_Module; class GVAR(ModuleSettings): ACE_Module { scope = 2; - displayName = "$STR_ACE_Weather_Module_DisplayName"; + displayName = CSTRING(Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Wind_ca.paa)); category = "ACE"; function = QUOTE(DFUNC(initModuleSettings)); @@ -12,44 +12,44 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class enableServerController { - displayName = "$STR_ACE_Weather_enableServerController_DisplayName"; - description = "$STR_ACE_Weather_enableServerController_Description"; + displayName = CSTRING(enableServerController_DisplayName); + description = CSTRING(enableServerController_Description); typeName = "BOOL"; defaultValue = 1; }; class useACEWeather { - displayName = "$STR_ACE_Weather_useACEWeather_DisplayName"; - description = "$STR_ACE_Weather_useACEWeather_Description"; + displayName = CSTRING(useACEWeather_DisplayName); + description = CSTRING(useACEWeather_Description); typeName = "BOOL"; defaultValue = 1; }; class syncRain { - displayName = "$STR_ACE_Weather_syncRain_DisplayName"; - description = "$STR_ACE_Weather_syncRain_Description"; + displayName = CSTRING(syncRain_DisplayName); + description = CSTRING(syncRain_Description); typeName = "BOOL"; defaultValue = 1; }; class syncWind { - displayName = "$STR_ACE_Weather_syncWind_DisplayName"; - description = "$STR_ACE_Weather_syncWind_Description"; + displayName = CSTRING(syncWind_DisplayName); + description = CSTRING(syncWind_Description); typeName = "BOOL"; defaultValue = 1; }; class syncMisc { - displayName = "$STR_ACE_Weather_syncMisc_DisplayName"; - description = "$STR_ACE_Weather_syncMisc_Description"; + displayName = CSTRING(syncMisc_DisplayName); + description = CSTRING(syncMisc_Description); typeName = "BOOL"; defaultValue = 1; }; class serverUpdateInterval { - displayName = "$STR_ACE_Weather_serverUpdateInterval_DisplayName"; - description = "$STR_ACE_Weather_serverUpdateInterval_Description"; + displayName = CSTRING(serverUpdateInterval_DisplayName); + description = CSTRING(serverUpdateInterval_Description); typeName = "NUMBER"; defaultValue = 60; }; }; class ModuleDescription { - description = "$STR_ACE_Weather_Module_Description"; + description = CSTRING(Module_Description); }; }; }; \ No newline at end of file diff --git a/addons/weather/XEH_postInit.sqf b/addons/weather/XEH_postInit.sqf index 9f5d94f182..2b862ef1a5 100644 --- a/addons/weather/XEH_postInit.sqf +++ b/addons/weather/XEH_postInit.sqf @@ -25,7 +25,7 @@ GVAR(rain_period_start_time) = ACE_time; }; }; -["ACE3 Common", QGVAR(WindInfoKey), localize "STR_ACE_Weather_WindInfoKey", +["ACE3 Common", QGVAR(WindInfoKey), localize STRING(WindInfoKey), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/winddeflection/CfgVehicles.hpp b/addons/winddeflection/CfgVehicles.hpp index f7e2a33980..4720e2e150 100644 --- a/addons/winddeflection/CfgVehicles.hpp +++ b/addons/winddeflection/CfgVehicles.hpp @@ -2,7 +2,7 @@ class CfgVehicles { class ACE_Module; class GVAR(ModuleSettings): ACE_Module { scope = 2; - displayName = "$STR_ACE_Weather_windDeflection_DisplayName"; + displayName = CSTRING(windDeflection_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Wind_ca.paa)); category = "ACE"; function = QUOTE(DFUNC(initModuleSettings)); @@ -12,32 +12,32 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class enabled { - displayName = "$STR_ACE_Weather_deflectionModule_DisplayName"; - description = "$STR_ACE_Weather_deflectionModule_Description"; + displayName = CSTRING(deflectionModule_DisplayName); + description = CSTRING(deflectionModule_Description); typeName = "BOOL"; defaultValue = 1; }; class vehicleEnabled { - displayName = "$STR_ACE_Weather_vehicleEnabled_DisplayName"; - description = "$STR_ACE_Weather_vehicleEnabled_Description"; + displayName = CSTRING(vehicleEnabled_DisplayName); + description = CSTRING(vehicleEnabled_Description); typeName = "BOOL"; defaultValue = 1; }; class simulationInterval { - displayName = "$STR_ACE_Weather_simulationInterval_DisplayName"; - description = "$STR_ACE_Weather_simulationInterval_Description"; + displayName = CSTRING(simulationInterval_DisplayName); + description = CSTRING(simulationInterval_Description); typeName = "NUMBER"; defaultValue = 0.05; }; class simulationRadius { - displayName = "$STR_ACE_Weather_simulationRadius_DisplayName"; - description = "$STR_ACE_Weather_simulationRadius_Description"; + displayName = CSTRING(simulationRadius_DisplayName); + description = CSTRING(simulationRadius_Description); typeName = "NUMBER"; defaultValue = 3000; }; }; class ModuleDescription { - description = "$STR_ACE_Weather_windDeflection_Description"; + description = CSTRING(windDeflection_Description); }; }; }; \ No newline at end of file From 5cb095309435ed47bda9c4a3a047248614e3a31f Mon Sep 17 00:00:00 2001 From: Macusercom Date: Wed, 27 May 2015 19:11:32 +0200 Subject: [PATCH 070/252] Fixed German translations Fixed some typos and phrases --- addons/advanced_ballistics/stringtable.xml | 20 ++++++++++---------- addons/weather/stringtable.xml | 6 +++--- addons/winddeflection/stringtable.xml | 12 ++++++------ 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index 1d37742800..c1ccbe3d3e 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -46,7 +46,7 @@ Enables advanced ballistics for non local snipers (when using high power optics) - Aktiviert die erweiterte Ballistik für Nicht-lokale-Sniper (wenn Optiken mit hohem Zoom) + Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung) Enabled For Group Members @@ -72,17 +72,17 @@ Always enables advanced ballistics when a group member fires Aktywuje zaawansowaną balistykę dla wszystkich członków grupy - Erweiterte Ballistik immer aktiviert lassen, wenn ein Gruppenmitglieder schießt + Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt Disabled In FullAuto Mode Wył. podczas ognia auto. - Im Aut + Beim vollautomatischen Feuern deaktiviert Disables the advanced ballistics during full auto fire Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego - Deaktiviert die erweiterte Ballistik während Vollautomatik + Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern Enable Ammo Temperature Simulation @@ -92,7 +92,7 @@ Muzzle velocity varies with ammo temperature Prędkość wylotowa pocisku jest zależna od temperatury amunicji - Mün + Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit Enable Barrel Length Simulation @@ -102,17 +102,17 @@ Muzzle velocity varies with barrel length Prędkość wylotowa pocisku jest zależna od długości lufy - Länge des Laufs verändert Mündungsbeschleunigung + Länge des Laufs verändert Mündungsgeschwindigkeit Enable Bullet Trace Effect Efekt smugi pocisku - Leuchtspurgeschosse aktivieren + Geschossspureffekt aktivieren Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics) Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę) - Aktiviere Leuchtspurgeschosse für hohe Kaliber (nur sichtbar bei Verwendung von Visieren) + Aktiviere Geschossspureffekt für hohe Kaliber (bei Benutzung von Optiken mit starker Vergrößerung) Simulation Interval @@ -122,7 +122,7 @@ Defines the interval between every calculation step Określa interwał pomiędzy każdym krokiem kalkulacji - Gibt das Interval zwischen jeder Berechnung an + Legt das Intervall zwischen den Berechnungsschritten fest Simulation Radius @@ -132,7 +132,7 @@ Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków - Gibt den Radius an (in Metern) bei dem die erweiterte Ballistik um den Spieler auf Geschosse angewendet wird + Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml index 12612aad43..5bc687af38 100644 --- a/addons/weather/stringtable.xml +++ b/addons/weather/stringtable.xml @@ -21,17 +21,17 @@ Multiplayer synchronized ACE weather module Synchronizowana pogoda ACE - Synchronisiere ACE-Wettermodul im Multiplayer + ACE-Wettermodul (synchron im Multiplayer) Weather propagation Zmiany pogody - Wettervorhersage + Wetterübertragung Enables server side weather propagation Aktywuje zmiany pogody po stronie serwera - Aktiviere serverseitige Wettervorhersage + Aktiviere serverseitige Wetterübertragung ACE Weather diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index 5707797e76..177a3fa3bd 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -65,17 +65,17 @@ Wind Deflection Wpływ wiatru - Windböen + Windablenkung Wind Deflection Wpływ wiatru - Windböen + Windablenkung Enables wind deflection Aktywuje wpływ wiatru na trajektorię lotu pocisków - Aktiviert Windböen + Aktiviert Windablenkung Vehicle Enabled @@ -85,7 +85,7 @@ Enables wind deflection for static/vehicle gunners Aktywuje wpływ wiatru na trajektorię lotu pocisków dla broni statycznej i na pojazdach - Aktiviere Windböen für statische oder Fahrzeugschützen + Aktiviere Windablenkung für statische oder Fahrzeugschützen Simulation Interval @@ -105,12 +105,12 @@ Defines the radius around the player (in meters) at which projectiles are wind deflected Określa obszar naokoło gracza (w metrach), na którym pociski są znoszone przez wiatr - Gibt den Radius um den Spieler (in Metern) an, bei der Projektile vom Wind beeinflusst werden + Gibt den Radius (in Metern) um den Spieler an, in dem Projektile vom Wind beeinflusst werden Wind influence on projectiles trajectory Wpływ wiatru na trajektorię lotu pocisków - Wind hat Einfluss auf Projektilflugbahn + Windeinfluss auf die Geschossbahnen From 5f2bee09e444d47879e3d4576e132241a0694a6e Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 27 May 2015 14:09:06 -0500 Subject: [PATCH 071/252] Create Defuse Helpers on demand --- addons/explosives/XEH_postInit.sqf | 43 +------------- addons/explosives/XEH_preInit.sqf | 2 + .../functions/fnc_defuseExplosive.sqf | 6 -- .../functions/fnc_detonateExplosive.sqf | 6 -- .../explosives/functions/fnc_interactEH.sqf | 56 +++++++++++++++++++ .../functions/fnc_placeExplosive.sqf | 2 - 6 files changed, 61 insertions(+), 54 deletions(-) create mode 100644 addons/explosives/functions/fnc_interactEH.sqf diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index 5bff254613..01df02f87e 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -15,47 +15,10 @@ */ #include "script_component.hpp" -//Event system to add the defuse object to all explosive devices (defuse is local) -GVAR(explosivesHelped) = []; -GVAR(defuseOjbects) = []; - -["explosive_placed", { - PARAMS_1(_explosive); - if (_explosive in GVAR(explosivesHelped)) exitWith {}; - private ["_defuseHelper"]; - _defuseHelper = "ACE_DefuseObject" createVehicleLocal (getPos _explosive); - _defuseHelper attachTo [_explosive, [0,0,0]]; - _defuseHelper setVariable [QGVAR(Explosive),_explosive]; - TRACE_3("Added local defuse to helper",_explosive,(typeOf _explosive),_defuseHelper); - GVAR(explosivesHelped) pushBack _explosive; - GVAR(defuseOjbects) pushBack _defuseHelper; -}] call EFUNC(common,addEventHandler); - -//Start up a PFEH that scans all mines/explosives without defuseObjects attached and adds them -//Handles Editor Placed / Zeus / Scripted / JIP -[{ - private ["_modeAdd"]; - _modeAdd = (_this select 0) select 0; - if (_modeAdd) then { - TRACE_2("Adding Helpers",(count allMines),(count GVAR(explosivesHelped))); - { - TRACE_2("Explosive without helper",_explosive,(typeOf _explosive)); - ["explosive_placed", [_x]] call EFUNC(common,localEvent); - } forEach (allMines - GVAR(explosivesHelped)); - } else { - TRACE_2("Cleaning Helpers",(count allMines),(count GVAR(explosivesHelped))); - { - if (isNull _x) then { - deleteVehicle (GVAR(defuseObjects) select _forEachIndex); - }; - } forEach GVAR(explosivesHelped); - GVAR(explosivesHelped) = GVAR(explosivesHelped) - [objNull]; - GVAR(defuseOjbects) = GVAR(defuseOjbects) - [objNull]; - }; - (_this select 0) set [0, !_modeAdd]; -}, 5, [true]] call CBA_fnc_addPerFrameHandler; - if !(hasInterface) exitWith {}; + +["interactMenuOpened", {_this call FUNC(interactEH)}] call EFUNC(common,addEventHandler); + GVAR(PlacedCount) = 0; GVAR(Setup) = objNull; GVAR(pfeh_running) = false; diff --git a/addons/explosives/XEH_preInit.sqf b/addons/explosives/XEH_preInit.sqf index d010fd8d1e..863ab287a7 100644 --- a/addons/explosives/XEH_preInit.sqf +++ b/addons/explosives/XEH_preInit.sqf @@ -36,6 +36,8 @@ PREP(handleScrollWheel); PREP(hasExplosives); PREP(hasPlacedExplosives); +PREP(interactEH); + PREP(getDetonators); PREP(getPlacedExplosives); PREP(getSpeedDialExplosive); diff --git a/addons/explosives/functions/fnc_defuseExplosive.sqf b/addons/explosives/functions/fnc_defuseExplosive.sqf index 5abfabe60f..28a14b25a5 100644 --- a/addons/explosives/functions/fnc_defuseExplosive.sqf +++ b/addons/explosives/functions/fnc_defuseExplosive.sqf @@ -21,10 +21,4 @@ if (getNumber (ConfigFile >> "CfgAmmo" >> typeof _explosive >> "ACE_explodeOnDef [_unit, -1, [_explosive, 1], true] call FUNC(detonateExplosive); }; -{ - detach _x; - deleteVehicle _x; - false -} count (attachedObjects (_explosive)); - _unit action ["Deactivate", _unit, _explosive]; diff --git a/addons/explosives/functions/fnc_detonateExplosive.sqf b/addons/explosives/functions/fnc_detonateExplosive.sqf index 959ac0c347..bfdf4a4b92 100644 --- a/addons/explosives/functions/fnc_detonateExplosive.sqf +++ b/addons/explosives/functions/fnc_detonateExplosive.sqf @@ -26,12 +26,6 @@ _result = true; if (!_ignoreRange && {(_unit distance (_item select 0)) > _range}) exitWith {false}; -_helpers = attachedObjects (_item select 0); -{ - detach _x; - deleteVehicle _x; -} forEach _helpers; - if (getNumber (ConfigFile >> "CfgAmmo" >> typeof (_item select 0) >> "TriggerWhenDestroyed") == 0) then { private ["_exp", "_previousExp"]; _previousExp = _item select 0; diff --git a/addons/explosives/functions/fnc_interactEH.sqf b/addons/explosives/functions/fnc_interactEH.sqf new file mode 100644 index 0000000000..4e916edb82 --- /dev/null +++ b/addons/explosives/functions/fnc_interactEH.sqf @@ -0,0 +1,56 @@ +/* + * Author: PabstMirror + * When interact_menu starts rendering (from "interact_keyDown" event) + * Add defuse helpers to all nearby mines + * + * Arguments: + * Interact Menu Type (0 - world, 1 - self) + * + * Return Value: + * Nothing + * + * Example: + * [0] call ace_explosives_fnc_interactEH + * + * Public: Yes + */ +#include "script_component.hpp" + +PARAMS_1(_interactionType); + +//Ignore self-interaction menu +if (_interactionType != 0) exitWith {}; +//Ignore while mounted: +if ((vehicle ACE_player) != ACE_player) exitWith {}; +//Ignore if we don't have defuse kit +if (!("ACE_DefusalKit" in (items ACE_player))) exitWith {}; + +[{ + PARAMS_2(_args,_pfID); + EXPLODE_3_PVT(_args,_setPosition,_addedDefuseHelpers,_minesHelped); + + if (!EGVAR(interact_menu,keyDown)) then { + TRACE_1("Cleaning Defuse Helpers",(count _addedDefuseHelpers)); + {deleteVehicle _x;} forEach _addedDefuseHelpers; + [_pfID] call CBA_fnc_removePerFrameHandler; + } else { + private ["_defuseHelper"]; + // Prevent Rare Error when ending mission with interact key down: + if (isNull ace_player) exitWith {}; + + //If player moved >5 meters from last pos, then rescan + if (((getPosASL ace_player) distance _setPosition) > 5) then { + { + if (((_x distance ACE_player) < 15) && {!(_x in _minesHelped)}) then { + TRACE_2("Making Defuse Helper",(_x),(typeOf _x)); + _defuseHelper = "ACE_DefuseObject" createVehicleLocal (getPos _x); + _defuseHelper attachTo [_x, [0,0,0]]; + _defuseHelper setVariable [QGVAR(Explosive),_x]; + _addedDefuseHelpers pushBack _defuseHelper; + _minesHelped pushBack _x; + }; + } forEach allMines; + _args set [0, (getPosASL ace_player)]; + }; + }; +}, 0.5, [((getPosASL ace_player) vectorAdd [-100,0,0]), [], []]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/explosives/functions/fnc_placeExplosive.sqf b/addons/explosives/functions/fnc_placeExplosive.sqf index f4fcacb7b1..68580c2ba0 100644 --- a/addons/explosives/functions/fnc_placeExplosive.sqf +++ b/addons/explosives/functions/fnc_placeExplosive.sqf @@ -55,8 +55,6 @@ _triggerSpecificVars pushBack _triggerConfig; _explosive = createVehicle [_ammo, _pos, [], 0, "NONE"]; _explosive setPosATL _pos; -["explosive_placed", [_explosive]] call EFUNC(common,globalEvent); - if (!isNull _attachedTo) then { TRACE_1("Attaching Live Explosive",_attachedTo); _explosive attachTo [_attachedTo]; From 87db721d4f4376f92286710ed0c33083190250d2 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 27 May 2015 21:19:14 +0200 Subject: [PATCH 072/252] Stringtable fixes up to medical --- addons/advanced_ballistics/stringtable.xml | 54 ++-- addons/attach/stringtable.xml | 4 +- addons/ballistics/stringtable.xml | 268 ++++++++++---------- addons/explosives/stringtable.xml | 12 +- addons/flashsuppressors/stringtable.xml | 14 +- addons/frag/stringtable.xml | 20 +- addons/interact_menu/stringtable.xml | 12 +- addons/interaction/stringtable.xml | 8 +- addons/javelin/stringtable.xml | 6 +- addons/kestrel4500/stringtable.xml | 4 +- addons/laser/stringtable.xml | 8 +- addons/logistics_uavbattery/stringtable.xml | 14 +- addons/logistics_wirecutter/stringtable.xml | 12 +- addons/maptools/stringtable.xml | 2 +- 14 files changed, 219 insertions(+), 219 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index 57c0653ab5..3323e10c1d 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -1,7 +1,7 @@  - - + + Show Wind Info Pokaż inf. o wietrze Mostra indicazioni del vento @@ -13,7 +13,7 @@ Zobrazit informace o větru Mostrar Informação do Vento - + Show Protractor Pokaż kątomierz Mostra il rapportatore @@ -25,116 +25,116 @@ Zobrazit úhloměr Mostrar Transferidor - + Advanced Ballistics Zaawansowana balistyka Balística avanzada - + Advanced Ballistics Zaawansowana balistyka Balística avanzada - + Enables advanced ballistics Aktywuje zaawansowaną balistykę Activa la balística avanzada - + Enabled For Snipers Activada para francotiradores - + Enables advanced ballistics for non local snipers (when using high power optics) Activa la balística avanzada para francotiradores no locales (cuando se usa una mira telescópica) - + Enabled For Group Members Activada para miembros de grupo - + Enables advanced ballistics for non local group members Activada la balística avanzada para miembros de grupo no locales - + Enabled For Everyone Activada para todos - + Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer) Activada la balística avanzada para todos los jugadores no locales (activarlo puede degradar el rendimiento durante grandes tiroteos en multijugador). - + Always Enabled For Group Members Zawsze akt. dla czł. grupy Siempre activada para miembros de grupo - + Always enables advanced ballistics when a group member fires Aktywuje zaawansowaną balistykę dla wszystkich członków grupy Activada la balística avanzada siempre cuando miembros de grupo disparan - + Disabled In FullAuto Mode Wył. podczas ognia auto. Desactivada en modo automático - + Disables the advanced ballistics during full auto fire Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego Desactivada la balística avanzada durante el fuego automático - + Enable Ammo Temperature Simulation Symulacja temp. amunicji Activar simulación de temperatura de munición - + Muzzle velocity varies with ammo temperature Prędkość wylotowa pocisku jest zależna od temperatury amunicji La velocidad de salida varía con la temperatura de la munición - + Enable Barrel Length Simulation Symulacja długości lufy Habilitar la simulación de longitud del cañón - + Muzzle velocity varies with barrel length Prędkość wylotowa pocisku jest zależna od długości lufy La velocidad de salidal varía con la longitud del cañón - + Enable Bullet Trace Effect Efekt smugi pocisku Activar el efecto trazador de la bala - + Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics) Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę) Activa el efecto trazador de la balas de gran calibre (solo visible cuando se mira a través de una mira telescópica) - + Simulation Interval Interwał symulacji Intervalo de simulación - + Defines the interval between every calculation step Określa interwał pomiędzy każdym krokiem kalkulacji Define el intervalo entre cada cálculo - + Simulation Radius Zasięg symulacji Radio de simulación - + Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków Define el radio alrededor del jugador (en metros) en el cual se aplica la balística avanzada a los proyectiles - + Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki. diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml index 01e07c4096..299a1575ac 100644 --- a/addons/attach/stringtable.xml +++ b/addons/attach/stringtable.xml @@ -121,7 +121,7 @@ Nincs több hely В инвентаре нет места - + IR Strobe IR-Stroboskop Marcador IR @@ -133,7 +133,7 @@ Infravörös jeladó ИК-маяк - + IR Strobe allows you to signal your position through a pulsating beacon only visible with NVGs. Das IR-Stroboskop erlaubt es dir deine Position mit einem blinkenden Leuchtfeuer zu signalisieren, welches nur mit Nachtsichtgerät zu erkennen ist. Stroboskop światła podczerwieni umożliwia oznaczenie swojej pozycji pulsacyjnym światłem widocznym tylko przez optykę noktowizyjną i gogle noktowizyjne. diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml index 17c3238c66..c70c772cc0 100644 --- a/addons/ballistics/stringtable.xml +++ b/addons/ballistics/stringtable.xml @@ -1,8 +1,8 @@  - + - + 6.5mm 30Rnd Tracer IR-DIM Mag 6,5mm Nyomjelző IR-DIM 30-as Tár 6,5mm 30-Patronen-Magazin Leuchtspur IR-DIM @@ -14,7 +14,7 @@ Caricatore 6.5mm 30Rnd Traccianti IR-DIM Магазин из 30-ти 6,5 мм ИК-трассирующих - + 6.5mm IR-DIM 6,5mm IR-DIM 6,5mm IR-DIM @@ -26,7 +26,7 @@ 6.5mm IR-DIM 6,5 мм ИК-трассирующие - + Caliber: 6.5x39mm Tracer IR-DIM<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL Kaliber: 6,5x39mm Nyomjelző IR-DIM<br />Lövedékek: 30<br />Használható: MX/C/M/SW/3GL Kaliber: 6,5x39mm Leuchtspur IR-DIM<br />Patronen: 30<br />Eingesetzt von: MX/C/M/SW/3GL @@ -38,7 +38,7 @@ Calibro: 6.5x39mm Traccianti IR-DIM <br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL - + 6.5mm 30Rnd SD Mag 6,5mm Halk 30-as Tár 6,5mm 30-Patronen-Magazin SD @@ -50,7 +50,7 @@ Caricatore 6.5mm 30Rnd Sil. Магазин из 30-ти 6,5 мм дозвуковых - + 6.5mm SD 6,5mm Halk 6,5mm SD @@ -62,7 +62,7 @@ 6.5mm Sil. 6,5 мм дозвуковые - + Caliber: 6.5x39mm SD<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL Kaliber: 6,5x39mm Halk<br />Lövedékek: 30<br />Használható: MX/C/M/SW/3GL Kaliber: 6,5x39mm SD<br />Patronen: 30<br />Eingesetzt von: MX/C/M/SW/3GL @@ -74,7 +74,7 @@ Calibro: 6.5x39mm Sil.<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL - + 6.5mm 30Rnd AP Mag 6,5mm Páncéltörő 30-as Tár 6,5mm 30-Patronen-Magazin AP @@ -86,7 +86,7 @@ Caricatore 6.5mm 30Rnd AP Магазин из 30-ти 6,5 мм бронебойных - + 6.5mm AP 6,5mm Páncéltörő 6,5mm AP @@ -98,7 +98,7 @@ 6.5mm AP 6,5 мм бронебойные - + Caliber: 6.5x39mm AP<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL Kaliber: 6,5x39mm Páncéltörő<br />Lövedékek: 30<br />Használható: MX/C/M/SW/3GL Kaliber: 6,5x39mm AP<br />Patronen: 30<br />Eingesetzt von: MX/C/M/SW/3GL @@ -111,7 +111,7 @@ Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL - + 6.5mm 30Rnd Tracer IR-DIM Mag 6,5mm IR-DIM Nyomjelző 30-as Tár 6,5mm 30-Patronen-Magazin Leuchtspur IR-DIM @@ -123,7 +123,7 @@ Caricatore 6.5mm 30Rnd Traccianti IR-DIM Магазин из 30-ти 6,5 мм ИК-трассирующих - + 6.5mm IR-DIM 6,5mm IR-DIM 6,5mm IR-DIM @@ -135,7 +135,7 @@ 6.5mm IR-DIM 6,5 мм ИК-трассирующие - + Caliber: 6.5x39mm Tracer IR-DIM<br />Rounds: 30<br />Used in: Katiba Kaliber: 6,5x39mm Nyomjelző IR-DIM<br />Lövedékek: 30<br />Használható: Katiba Kaliber: 6,5x39mm Leuchtspur IR-DIM<br />Patronen: 30<br />Eingesetzt von: Katiba @@ -147,7 +147,7 @@ Calibro: 6.5x39mm Tracciant IR-DIM<br />Munizioni: 30<br />In uso su: Katiba Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: Katiba - + 6.5mm 30Rnd SD Mag 6,5mm Halk 30-as Tár 6,5mm 30-Patronen-Magazin SD @@ -159,7 +159,7 @@ Caricatore 6.5mm 30Rnd Sil. Магазин из 30-ти 6,5 мм дозвуковых - + 6.5mm SD 6,5mm Halk 6,5mm SD @@ -171,7 +171,7 @@ 6.5mm Sil. 6,5 мм дозвуковые - + Caliber: 6.5x39mm SD<br />Rounds: 30<br />Used in: Katiba Kaliber: 6,5x39mm Halk<br />Lövedékek: 30<br />Használható: Katiba Kaliber: 6,5x39mm SD<br />Patronen: 30<br />Eingesetzt von: Katiba @@ -183,7 +183,7 @@ Calibro: 6.5x39mm Sil.<br />Munizioni: 30<br />In uso su: Katiba Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: Katiba - + 6.5mm 30Rnd AP Mag 6,5mm Páncéltörő 30-as Tár 6,5mm 30-Patronen-Magazin AP @@ -195,7 +195,7 @@ Caricatore 6.5mm 30Rnd AP Магазин из 30-ти 6,5 мм бронебойных - + 6.5mm AP 6,5mm Páncéltörő 6,5mm AP @@ -207,7 +207,7 @@ 6.5mm AP 6,5 мм бронебойные - + Caliber: 6.5x39mm AP<br />Rounds: 30<br />Used in: Katiba Kaliber: 6,5x39mm Páncéltörő<br />Lövedékek: 30<br />Használható: Katiba Kaliber: 6,5x39mm AP<br />Patronen: 30<br />Eingesetzt von: Katiba @@ -220,7 +220,7 @@ Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: Katiba - + 5.56mm 30rnd Tracer IR-DIM Mag 5,56mm Nyomjelző IR-DIM 30-as Tár 5,56mm 30-Patronen-Magazin Leuchtspur IR-DIM @@ -232,7 +232,7 @@ Caricatore 5.56mm 30rnd Traccianti IR-DIM Магазин из 30-ти 5,56 мм ИК-трассирующих - + 5.56mm IR-DIM 5,56mm IR-DIM 5,56mm IR-DIM @@ -244,7 +244,7 @@ 5.56mm IR-DIM 5,56 мм ИК-трассирующие - + Caliber: 5.56x45mm Tracer IR-DIM<br />Rounds: 30<br />Used in: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR Kaliber: 5,56x45mm Nyomjelző IR-DIM<br />Lövedékek: 30<br />Használható: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR Kaliber: 5,56x45mm Leuchtspur IR-DIM<br />Patronen: 30<br />Eingesetzt von: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR @@ -257,7 +257,7 @@ Калибр: 5,56x45 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - + 7.62mm 20rnd Tracer Mag 7,62mm Nyomjelző IR-DIM 20-as Tár 7,62mm 20-Patronen-Magazin Leuchtspur @@ -269,7 +269,7 @@ Caricatore 7.62mm 20Rnd Traccianti Магазин из 20-ти 7,62 мм трассирующих - + 7.62mm Tracer 7,62mm Nyomjelző 7,62mm Leuchtspur @@ -281,7 +281,7 @@ 7.62mm Traccianti 7,62 мм трассирущие - + Caliber: 7.62x51mm Tracer<br />Rounds: 20<br />Used in: Mk18 ABR Kaliber: 7,62x51mm Nyomjelző<br />Lövedékek: 20<br />Használható: Mk18 ABR Kaliber: 7,62x51mm Leuchtspur<br />Patronen: 20<br />Eingesetzt von: EBR @@ -293,7 +293,7 @@ Calibro: 7.62x51mm Traccianti<br />Munizioni: 20<br />In uso su: Mk18 ABR Калибр: 7,62x51 мм трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR - + 7.62mm 20rnd Tracer IR-DIM Mag 7,62mm Nyomjelző IR-DIM 20-as Tár 7,62mm 20-Patronen-Magazin Leuchtspur IR-DIM @@ -305,7 +305,7 @@ Caricatore 7.62mm 20rnd Traccianti IR-DIM Магазин из 20-ти 7,62 мм ИК-трассирующих - + 7.62mm IR-DIM 7,62mm IR-DIM 7,62mm IR-DIM @@ -317,7 +317,7 @@ 7.62mm IR-DIM 7,62 мм ИК-трассирующие - + Caliber: 7.62x51mm Tracer IR-DIM<br />Rounds: 20<br />Used in: Mk18 ABR Kaliber: 7,62x51mm Nyomjelző IR-DIM<br />Lövedékek: 20<br />Használható: Mk18 ABR Kaliber: 7,62x51mm Leuchtspur IR-DIM<br />Patronen: 20<br />Eingesetzt von: EBR @@ -329,7 +329,7 @@ Calibro: 7.62x51mm Traccianti IR-DIM<br />Munizioni: 20<br />In uso su: Mk18 ABR Калибр: 7,62x51 мм ИК-трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR - + 7.62mm 20Rnd SD Mag 7,62mm Halk 20-as Tár 7,62mm 20-Patronen-Magazin SD @@ -341,7 +341,7 @@ Caricatore 7.62mm 20Rnd Sil. Магазин из 20-ти 7,62 мм дозвуковых - + 7.62mm SD 7,62mm Halk 7,62mm SD @@ -353,7 +353,7 @@ 7.62mm Sil. 7,62 мм дозвуковые - + Caliber: 7.62x51mm SD<br />Rounds: 20<br />Used in: Mk18 ABR Kaliber: 7,62x51mm Halk<br />Lövedékek: 20<br />Használható: Mk18 ABR Kaliber: 7,62x51mm SD<br />Patronen: 20<br />Eingesetzt von: EBR @@ -366,7 +366,7 @@ Калибр: 7,62x51 мм дозвуковые<br />Патронов: 20<br />Используются с: Mk18 ABR - + .338 NM 130Rnd Tracer Belt .338 NM 130-Patronen-Gurt Leuchtspur Taśma .338 NM 130rd Smugacz @@ -378,7 +378,7 @@ Cinto de munição .338 NM com 130 cartuchos .338 NM 130-lövedékes nyomkövető heveder - + .338 NM Tracer .338 NM Leuchtspur .338 NM Tracer @@ -390,7 +390,7 @@ .338 NM Traçante .338 NM nyomkövető - + Caliber: .338 Norma Magnum Tracer<br />Rounds: 130<br />Used in: SPMG Kaliber: .338 Norma Magnum Leuchtspur<br />Patronen: 130<br />Eingesetzt von: SPMG Kaliber: .338 Norma Magnum Smugacz<br />Pociski: 130<br />Używany w: SPMG @@ -402,7 +402,7 @@ Calibre: .338 Norma Magnum Traçante<br />Cartuchos: 130<br />Usado em: SPMG Kaliber: .338 Norma Magnum nyomkövető<br />Lövedékek: 130<br />Használható: SPMG - + .338 NM 130Rnd IR-DIM Belt .338 NM 130-Patronen-Gurt Leuchtspur IR-DIM Taśma .338 NM 130rd IR-DIM @@ -414,7 +414,7 @@ Cinto de munição traçante .338 NM IR-DIM com 130 cartuchos .338 NM 130-lövedékes infravörös nyomkövető heveder - + .338 NM IR-DIM .338 LM IR-DIM .338 NM IR-DIM @@ -426,7 +426,7 @@ .338 NM IR-DIM .338 NM infravörös nyomkövető - + Caliber: .338 Norma Magnum Tracer IR-DIM<br />Rounds: 130<br />Used in: SPMG Kaliber: .338 Norma Magnum Leuchtspur IR-DIM<br />Patronen: 130<br />Eingesetzt von: SPMG Kaliber: .338 Norma Magnum Smugacz IR-DIM<br />Pociski: 130<br />Używany w: SPMG @@ -438,7 +438,7 @@ Calibre: .338 Norma Magnum Traçante IR-DIM<br />Cartuchos: 130<br />Usado em: SPMG Kaliber: .338 Norma Magnum infravörös nyomkövető<br />Lövedékek: 130<br />Használható: SPMG - + .338 NM 130Rnd AP Belt .338 NM 130-Patronen-Gurt Hartkern Taśma .338 NM 130rd AP @@ -450,7 +450,7 @@ Cinto de munição .338 NM com 130 cartuchos AP .338 NM 130-lövedékes páncéltörő heveder - + .338 NM AP .338 NM AP .338 NM AP @@ -462,7 +462,7 @@ .338 NM AP .338 NM páncéltörő - + Caliber: .338 Norma Magnum AP<br />Rounds: 130<br />Used in: SPMG Kaliber: .338 Norma Magnum Hartkern<br />Patronen: 130<br />Eingesetzt von: SPMG Kaliber: .338 Norma Magnum AP<br />Pociski: 130<br />Używane w: SPMG @@ -475,7 +475,7 @@ Kaliber: .338 Norma Magnum páncéltörő<br />Lövedékek: 130<br />Használható: SPMG - + 9.3mm 10Rnd Tracer Mag 9,3mm 10-Patronen-Magazin Leuchtspur Magazynek 9.3mm 10rd Smugacz @@ -487,7 +487,7 @@ Carregador de 10 cartuchos 9.3mm traçantes 9,3mm 10-lövedékes nyomkövető tár - + 9.3mm Tracer 9,3mm Leuchtspur 9,3mm Smugacz @@ -499,7 +499,7 @@ 9.3mm Traçante 9,3mm nyomkövető - + Caliber: 9.3x64mm Tracer<br />Rounds: 10<br />Used in: Cyrus Kaliber: 9,3x64mm Leuchtspur<br />Patronen: 10<br />Eingesetzt von: Cyrus Kaliber: 9,3x64mm Smugacz<br />Pociski: 10<br />Używany w: Cyrus @@ -511,7 +511,7 @@ Calibre: 9.3x64mm Traçante<br />Cartuchos: 10<br />Usado em: Cyrus Kaliber: 9,3x64mm nyomkövető<br />Lövedékek: 10<br />Használható: Cyrus - + 9.3mm 10Rnd Tracer IR-DIM Mag 9,3mm 10-Patronen-Magazin Leuchtspur IR-DIM Magazynek 9,3mm 10rd Smugacz IR-DIM @@ -523,7 +523,7 @@ Carregador de 10 cartuchos 9.3mm traçantes IR-DIM 9,3mm 10-lövedékes infravörös nyomkövető tár - + 9.3mm IR-DIM 9,3mm IR-DIM 9,3mm IR-DIM @@ -535,7 +535,7 @@ 9.3mm IR-DIM 9,3mm infravörös nyomkövető - + Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 10<br />Used in: Cyrus Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Patronen: 10<br />Eingesetzt von: Cyrus Kaliber: 9,3x64mm Smugacz IR-DIM<br />Pociski: 10<br />Używany w: Cyrus @@ -548,7 +548,7 @@ Kaliber: 9,3x64mm infravörös nyomkövető<br />Lövedékek: 10<br /> Használható: Cyrus - + 9.3mm 150Rnd Tracer Belt 9,3mm 150-Patronen-Gurt Leuchtspur Taśma 9,3mm 150rd Smugacz @@ -560,7 +560,7 @@ Cinto de munição traçante 9.3mm com 150 cartuchos 9,3mm 150-lövedékes nyomkövető heveder - + 9.3mm Tracer 9,3mm Leuchtspur 9,3mm Smugacz @@ -572,7 +572,7 @@ 9.3mm Traçante 9,3mm nyomkövető - + Caliber: 9.3x64mm Tracer<br />Rounds: 150<br />Used in: Navid Kaliber: 9,3x64mm Leuchtspur<br />Patronen: 150<br />Eingesetzt von: Navid Kaliber: 9,3x64mm Smugacz<br />Pociski: 150<br />Używane w: Navid @@ -584,7 +584,7 @@ Calibre: 9.3x64mm Traçante<br />Cartuchos: 150<br />Usado em: Navid Kaliber: 9,3x64mm nyomkövető<br />Lövedékek: 150<br />Használható: Navid - + 9.3mm 150Rnd Tracer IR-DIM Belt 9,3mm 150-Patronen-Gurt Leuchtspur IR-DIM Taśma 9,3mm 150rd Smugacz IR-DIM @@ -596,7 +596,7 @@ Cinto de munição traçante 9.3mm IR-DIM com 150 cartuchos 9,3mm 150-lövedékes infravörös nyomkövető heveder - + 9.3mm IR-DIM 9,3mm IR-DIM 9,3mm IR-DIM @@ -608,7 +608,7 @@ 9.3mm IR-DIM 9,3mm infravörös nyomkövető - + Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 150<br />Used in: Navid Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Patronen: 150<br />Eingesetzt von: Navid Kaliber: 9,3x64mm Smugacz IR-DIM<br />Pociski: 150<br />Używane w: Navid @@ -620,7 +620,7 @@ Calibre: 9.3x64mm Traçante IR-DIM<br />Cartuchos: 150<br />Usado em: Navid Kaliber: 9,3x64mm infravörös nyomkövető<br />Lövedékek: 150<br />Használható: Navid - + 9.3mm 150Rnd AP Belt 9,3mm 150-Patronen-Gurt Hartkern Taśma 9,3mm 150rd AP @@ -632,7 +632,7 @@ Cinto de munição 9.3mm AP com 150 cartuchos 9,3mm 150-lövedékes páncéltörő heveder - + 9.3mm AP 9,3mm AP 9,3mm AP @@ -644,7 +644,7 @@ 9.3mm AP 9,3mm páncéltörő - + Caliber: 9.3x64mm AP<br />Rounds: 150<br />Used in: Navid Kaliber: 9,3x64mm Hartkern<br />Patronen: 150<br />Eingesetzt von: Navid Kaliber: 9,3x64mm AP<br />Pociski: 150<br />Używane w: Navid @@ -656,7 +656,7 @@ Calibre: 9.3x64mm AP<br />Cartuchos: 150<br />Usado em: Navid Kaliber: 9,3x64mm páncéltörő<br />Lövedékek: 150<br />Használható: Navid - + 9x19mm 16Rnd Mag Magazynek 9x19mm 16rd Ch. 9x19mm 16Cps @@ -668,7 +668,7 @@ Carregador de 16 cartuchos 9x19mm 9x19mm 16-lövedékes tár - + 9x19mm 9x19mm 9x19mm @@ -680,7 +680,7 @@ 9x19mm 9x19mm - + 9x19mm 30Rnd Mag Magazynek 9x19mm 16rd Ch. 9x19mm 30Cps @@ -692,7 +692,7 @@ Carregador de 16 cartuchos 9x19mm 9x19mm 16-lövedékes tár - + 9x19mm 30Rnd Mag Magazynek 9x19mm 30rd Ch. 9x19mm 30Cps @@ -704,7 +704,7 @@ Carregador de 30 cartuchos 9x19mm 9x19mm 30-lövedékes tár - + 9x19mm 9x19mm 9x19mm @@ -716,7 +716,7 @@ 9x19mm 9x19mm - + 9x19mm 30Rnd Mag Magazynek 9x19mm 30rd Ch. 9x19mm 30Cps @@ -728,7 +728,7 @@ Carregador de 30 cartuchos 9x19mm 9x19mm 30-lövedékes tár - + 7.62x54mm 10Rnd Tracer Mag Magazynek 7,62x54mm 10rd Smugacz Ch. 7.62x54mm 10Rnd Traçante @@ -740,7 +740,7 @@ Carregador com 10 cartuchos 7.62x54mm Traçante 7,62x54mm 10-lövedékes nyomkövető tár - + 7.62mm 7,62mm 7.62mm @@ -752,7 +752,7 @@ 7.62mm 7,62mm - + 7.62x54mm 10Rnd Tracer Mag Magazynek 7,62x54mm 10rd Smugacz Ch. 7.62x54mm 10Cps Traçante @@ -764,7 +764,7 @@ Carregador com 10 cartuchos 7.62x54mm Traçante 7,62x54mm 10-lövedékes nyomkövető tár - + 6.5mm 100Rnd Tracer IR-DIM Mag Magazynek 6,5mm 100rd Smugacz IR-DIM Ch. 6.5mm 100Rnd Traçante IR-DIM @@ -776,7 +776,7 @@ Carregador com 100 cartuchos 6.5mm IR-DIM Traçante 6,5mm 100-lövedékes infravörös nyomkövető tár - + 6.5mm IR-DIM 6,5mm IR-DIM 6.5mm IR-DIM @@ -788,7 +788,7 @@ 6.5mm IR-DIM 6,5mm infravörös nyomkövető - + 6.5mm 100Rnd Tracer IR-DIM Mag<br />Rounds: 100<br />Used in: MX LSW Magazynek 6,5mm 100rd Smugacz IR-DIM Ch. 6.5mm 100Rnd Traçante IR-DIM<br />Cartouches: 100<br />Utilisé avec: MX LSW @@ -800,7 +800,7 @@ Carregador 6.5mm 100 Cartuchos Traçantes IR-DIM<br />Cartuchos: 100<br />Usado em: MX LSW 6.5mm 100-lövedékes infravörös nyomkövető tár<br />Lövedékek: 100<br />Használható: MX LSW - + 6.5mm 200Rnd Tracer IR-DIM Belt Magazynek 6,5mm 200rd Smugacz IR-DIM Bande 6.5mm 200Rnd Traçante IR-DIM @@ -812,7 +812,7 @@ Cinto de munição traçante 6.5mm IR-DIM com 200 cartuchos 6,5mm 200-lövedékes infravörös nyomkövető heveder - + 6.5mm IR-DIM 6,5mm IR-DIM 6.5mm IR-DIM @@ -824,7 +824,7 @@ 6.5mm IR-DIM 6,5mm infravörös nyomkövető - + 6.5mm 200Rnd Tracer IR-DIM Belt<br />Rounds: 200<br />Used in: Stoner 99 LMG Magazynek 6,5mm 200rd Smugacz IR-DIM Bande 6.5mm 200Cps Traçante IR-DIM<br />Cartouches: 200<br />Utilisé avec: Stoner 99 LMG @@ -836,7 +836,7 @@ Cinto de munição traçante 6.5mm IR-DIM com 200 cartuchos<br />Cartuchos: 200<br />Usado em: Stoner 99 LMG 6.5mm 200-lövedékes infravörös nyomkövető heveder<br />Lövedékek: 200<br />Használható: Stoner 99 LMG - + 5.56mm 30Rnd Mag (Mk262) Magazynek 5,56mm 30rd Mk262 5.56mm 30Cps (Mk262) @@ -848,7 +848,7 @@ Carregador 5.56mm com 30 cartuchos (Mk262) 5,56mm 30-lövedékes tár (Mk262) - + 5.56mm Mk262 5,56mm Mk262 5.56mm Mk262 @@ -860,7 +860,7 @@ 5.56mm Mk262 5,56mm Mk262 - + Caliber: 5.56x45mm NATO (Mk262)<br />Rounds: 30 Kaliber: 5,56x45mm NATO (Mk262)<br />Pociski: 30 Calibre: 5.56x45mm NATO (Mk262)<br />Cartouches: 30 @@ -872,7 +872,7 @@ Calibre: 5.56x45mm NATO (Mk262)<br/>Cartuchos: 30 Kaliber: 5,56x45mm NATO (Mk262)<br />Lövedékek: 30 - + 5.56mm 30Rnd Mag (Mk318) Magazynek 5,56mm 30rd (Mk318) Ch. 5.56mm 30Cps (Mk318) @@ -884,7 +884,7 @@ Carregador 5.56mm com 30 cartuchos (Mk318) 5,56mm 30-lövedékes tár (Mk318) - + 5.56mm Mk318 5,56mm Mk318 5.56mm Mk318 @@ -896,7 +896,7 @@ 5.56mm Mk318 5,56mm Mk318 - + Caliber: 5.56x45mm NATO (Mk318)<br />Rounds: 30 Kaliber: 5,56x45mm NATO (Mk318)<br />Pociski: 30 Calibre: 5.56x45mm NATO (Mk318)<br />Cartouches: 30 @@ -908,7 +908,7 @@ Calibre: 5.56x45mm NATO (Mk318)<br/>Cartuchos: 30 Kaliber: 5,56x45mm NATO (Mk318)<br />Lövedékek: 30 - + 5.56mm 30Rnd Mag (M995 AP) Magazynek 5,56mm 30rd (M995 AP) Ch. 5.56mm 30Cps (M995 AP) @@ -920,7 +920,7 @@ Carregador 5.56mm com 30 cartuchos (M995 AP) 5,56mm 30-lövedékes tár (M995 páncéltörő) - + 5.56mm AP 5,56mm AP 5.56mm AP @@ -932,7 +932,7 @@ 5.56mm M995 AP 5,56mm páncéltörő - + Caliber: 5.56x45mm NATO (M995 AP)<br />Rounds: 30 Kaliber: 5,56x45mm NATO (M995 AP)<br />Pociski: 30 Calibre: 5.56x45mm NATO (M995 AP)<br />Cartouches: 30 @@ -944,7 +944,7 @@ Calibre: 5.56x45mm NATO (M995 AP)<br/>Cartuchos: 30 Kaliber: 5,56x45mm NATO (M995 páncéltörő)<br />Lövedékek: 30 - + 7.62mm 10Rnd Mag (M118LR) Magazynek 7,62mm 10rd (M118LR) Ch. 7.62mm 10Cps (M118LR) @@ -956,7 +956,7 @@ Carregador 7.62mm com 10 cartuchos (M118LR) 7,62mm 10-lövedékes tár (M118LR) - + 7.62mm M118LR 7,62mm M118LR 7.62mm M118LR @@ -968,7 +968,7 @@ 7.62mm M118LR 7,62mm M118LR - + Caliber: 7.62x51mm NATO (M118LR)<br />Rounds: 10 Kaliber: 7,62x51mm NATO (M118LR)<br />Pociski: 10 Calibre: 7.62x51mm NATO (M118LR)<br />Cartouches: 10 @@ -980,7 +980,7 @@ Calibre: 7.26x51mm NATO (M118LR)<br/>Cartuchos: 10 Kaliber: 7,62x51mm NATO (M118LR)<br />Lövedékek: 10 - + 7.62mm 20Rnd Mag (M118LR) Magazynek 7,62mm 20rd (M118LR) Ch. 7.62mm 20Cps (M118LR) @@ -992,7 +992,7 @@ Carregador 7.62mm com 20 cartuchos (M118LR) 7,62mm 20-lövedékes tár (M118LR) - + 7.62mm M118LR 7,62mm M118LR 7.62mm M118LR @@ -1004,7 +1004,7 @@ 7.62mm M118LR 7,62mm M118LR - + Caliber: 7.62x51mm NATO (M118LR)<br />Rounds: 20 Kaliber: 7,62x51mm NATO (M118LR)<br />Pociski: 20 Calibre: 7.62x51mm NATO (M118LR)<br />Cartouches: 20 @@ -1016,7 +1016,7 @@ Calibre: 7.26x51mm NATO (M118LR)<br/>Cartuchos: 20 Kaliber: 7,62x51mm NATO (M118LR)<br />Lövedékek: 20 - + 7.62mm 10Rnd Mag (Mk316 Mod 0) Magazynek 7,62mm 10rd (Mk316 Mod 0) Ch. 7.62mm 10Cps (Mk316 Mod 0) @@ -1028,7 +1028,7 @@ Carregador 7.62mm com 10 cartuchos (Mk316 Mod 0) 7,62mm 10-lövedékes tár (Mk316 Mod 0) - + 7.62mm Mk316 7,62mm Mk316 7.62mm Mk316 @@ -1040,7 +1040,7 @@ 7.62mm Mk316 7,62mm Mk316 - + Caliber: 7.62x51mm NATO (Mk316 Mod 0)<br />Rounds: 10 Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Pociski: 10 Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 10 @@ -1052,7 +1052,7 @@ Calibre: 7.26x51mm NATO (Mk316 Mod 0)<br/>Cartuchos: 10 Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Lövedékek: 10 - + 7.62mm 20Rnd Mag (Mk316 Mod 0) Magazynek 7,62mm 20rd (Mk316 Mod 0) Ch. 7.62mm 20Cps (Mk316 Mod 0) @@ -1064,7 +1064,7 @@ Carregador 7.62mm com 20 cartuchos (Mk316 Mod 0) 7,62mm 20-lövedékes tár (Mk316 Mod 0) - + 7.62mm Mk316 7,62mm Mk316 7.62mm Mk316 @@ -1076,7 +1076,7 @@ 7.62mm Mk316 7,62mm Mk316 - + Caliber: 7.62x51mm NATO (Mk316 Mod 0)<br />Rounds: 20 Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Pociski: 20 Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 20 @@ -1088,7 +1088,7 @@ Calibre: 7.26x51mm NATO (Mk316 Mod 0)<br/>Cartuchos: 20 Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Lövedékek: 20 - + 7.62mm 10Rnd Mag (Mk319 Mod 0) Magazynek 7,62mm 10rd (Mk319 Mod 0) Ch. 7.62mm 10Cps (Mk319 Mod 0) @@ -1100,7 +1100,7 @@ Carregador 7.62mm com 10 cartuchos (Mk319 Mod 0) 7,62mm 10-lövedékes tár (Mk319 Mod 0) - + 7.62mm Mk319 7,62mm Mk319 7.62mm Mk319 @@ -1112,7 +1112,7 @@ 7.62mm Mk319 7,62mm Mk319 - + Caliber: 7.62x51mm NATO (Mk319 Mod 0)<br />Rounds: 10 Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Pociski: 10 Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 10 @@ -1124,7 +1124,7 @@ Calibre: 7.26x51mm NATO (Mk319 Mod 0)<br/>Cartuchos: 10 Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Lövedékek: 10 - + 7.62mm 20Rnd Mag (Mk319 Mod 0) Magazynek 7,62mm 20rd (Mk319 Mod 0) Ch. 7.62mm 20Cps (Mk319 Mod 0) @@ -1136,7 +1136,7 @@ Carregador 7.62mm com 20 cartuchos (Mk319 Mod 0) 7,62mm 20-lövedékes tár (Mk319 Mod 0) - + 7.62mm Mk319 7,62mm Mk319 7.62mm Mk319 @@ -1148,7 +1148,7 @@ 7.62mm Mk319 7,62mm Mk319 - + Caliber: 7.62x51mm NATO (Mk319 Mod 0)<br />Rounds: 20 Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Pociski: 20 Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 20 @@ -1160,7 +1160,7 @@ Calibre: 7.26x51mm NATO (Mk319 Mod 0)<br/>Cartuchos: 20 Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Lövedékek: 20 - + 7.62mm 10Rnd Mag (M993 AP) Magazynek 7,62mm 10rd (M993 AP) Ch. 7.62mm 10Cps (M993 AP) @@ -1172,7 +1172,7 @@ Carregador 7.62mm com 10 cartuchos (M993 AP) 7,62mm 10-lövedékes tár (M993 páncéltörő) - + 7.62mm AP 7,62mm AP 7.62mm AP @@ -1184,7 +1184,7 @@ 7.62mm AP 7,62mm páncéltörő - + Caliber: 7.62x51mm NATO (M993 AP)<br />Rounds: 10 Kaliber: 7,62x51mm NATO (M993 AP)<br />Pociski: 10 Calibre: 7.62x51mm NATO (M993 AP)<br />Cartouches: 10 @@ -1196,7 +1196,7 @@ Calibre: 7.26x51mm NATO (M993 AP)<br/>Cartuchos: 10 Kaliber: 7,62x51mm NATO (M993 páncéltörő)<br />Lövedékek: 10 - + 7.62mm 20Rnd Mag (M993 AP) Magazynek 7,62mm 20rd (M993 AP) Ch. 7.62mm 20Cps (M993 AP) @@ -1208,7 +1208,7 @@ Carregador 7.62mm com 20 cartuchos (M993 AP) 7,62mm 20-lövedékes tár (M993 páncéltörő) - + 7.62mm AP 7,62mm AP 7.62mm AP @@ -1220,7 +1220,7 @@ 7.62mm AP 7,62mm páncéltörő - + Caliber: 7.62x51mm NATO (M993 AP)<br />Rounds: 20 Kaliber: 7,62x51mm NATO (M993 AP)<br />Pociski: 20 Calibre: 7.62x51mm NATO (M993 AP)<br />Cartouches: 20 @@ -1232,7 +1232,7 @@ Calibre: 7.26x51mm NATO (M993 AP)<br/>Cartuchos: 20 Kaliber: 7,62x51mm NATO (M993 páncéltörő)<br />Lövedékek: 20 - + 7.62mm 20Rnd Mag (Mk248 Mod 0) Magazynek 7,62mm 20rd (Mk248 Mod 0) Ch. 7.62mm 20Cps (Mk248 Mod 0) @@ -1244,7 +1244,7 @@ Carregador 7.62mm com 20 cartuchos (Mk248 Mod 0) 7,62mm 20-lövedékes tár (Mk248 Mod 0) - + 7.62mm Mk248 7,62mm Mk248 7.62mm Mk248 @@ -1256,7 +1256,7 @@ 7.62mm Mk248 7,62mm Mk248 - + Caliber: 7.62x67mm NATO (Mk248 Mod 0)<br />Rounds: 20 Kaliber: 7,62x67mm NATO (Mk248 Mod 0)<br />Pociski: 20 Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Cartouches: 20 @@ -1268,7 +1268,7 @@ Calibre: 7.26x67mm NATO (Mk248 Mod 0)<br/>Cartuchos: 20 Kaliber: 7,62x51mm NATO (Mk248 Mod 0)<br />Lövedékek: 20 - + 7.62mm 20Rnd Mag (Mk248 Mod 1) Magazynek 7,62mm 20rd (Mk248 Mod 1) Ch. 7.62mm 20Cps (Mk248 Mod 1) @@ -1280,7 +1280,7 @@ Carregador 7.62mm com 20 cartuchos (Mk248 Mod 1) 7,62mm 20-lövedékes tár (Mk248 Mod 1) - + 7.62mm Mk248 7,62mm Mk248 7.62mm Mk248 @@ -1292,7 +1292,7 @@ 7.62mm Mk248 7,62mm Mk248 - + Caliber: 7.62x67mm NATO (Mk248 Mod 1)<br />Rounds: 20 Kaliber: 7,62x67mm NATO (Mk248 Mod 1)<br />Pociski: 20 Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Cartouches: 20 @@ -1304,7 +1304,7 @@ Calibre: 7.26x67mm NATO (Mk248 Mod 1)<br/>Cartuchos: 20 Kaliber: 7,62x51mm NATO (Mk248 Mod 1)<br />Lövedékek: 20 - + 7.62mm 20Rnd Mag (Berger Hybrid OTM) Magazynek 7,62mm 20rd (Berger Hybrid OTM) Ch. 7.62 20Cps (Berger Hybrid OTM) @@ -1316,7 +1316,7 @@ Carregador 7.62mm com 20 cartuchos (Berger Hybrid OTM) 7,62mm 20-lövedékes tár (Berger Hybrid OTM) - + 7.62mm OTM 7,62mm OTM 7.62mm OTM @@ -1328,7 +1328,7 @@ 7.62mm OTM 7,62mm OTM - + Caliber: 7.62x67mm NATO (Berger Hybrid OTM)<br />Rounds: 20 Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Pociski: 20 Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Cartouches: 20 @@ -1340,7 +1340,7 @@ Calibre: 7.26x67mm NATO (Berger Hybrid OTM)<br/>Cartuchos: 20 Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Lövedékek: 20 - + 6.5x47mm 30Rnd Mag (HPBT Scenar) Ch. 6.5x47mm 30Cps (HPBT Scenar) Cargador de 30 balas de 6.5x47mm (HPBT Scenar) @@ -1352,7 +1352,7 @@ Carregador 6.5x47mm com 30 cartuchos (HPBT Scenar) 6,5x47mm 30-lövedékes tár (HPBT Scenar) - + 6.5mm Lapua 6.5mm Lapua 6.5mm Lapua @@ -1364,7 +1364,7 @@ 6.5mm Lapua 6,5mm Lapua - + Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 30<br />Used in: MXM Calibre: 6.5x47mm (HPBT Scenar)<br />Cartouches: 30 Calibre: 6.5x47mm (HPBT Scenar)<br />Balas: 30<br />Se usa en: MXM @@ -1376,7 +1376,7 @@ Calibre: 6.5x47mm (HPBT Scenar)<br/>Cartuchos: 30<br/>Usado em: MXM Kaliber: 6,5x47mm (HPBT Scenar)<br />Lövedékek: 30<br />Használható: MXM - + 6.5mm Creedmor 30Rnd Mag Magazynek 6,5mm Creedmor 30rd 6.5mm Creedmor 30Rnd Mag @@ -1388,7 +1388,7 @@ Carregador 6.5mm com 30 cartuchos Creedmor 6,5mm Creedmor 30-lövedékes tár - + 6.5mm CM 6.5mm CM 6.5mm CM @@ -1400,7 +1400,7 @@ 6.5mm CM 6,5mm CM - + Caliber: 6.5x47mm Creedmor<br />Rounds: 30<br />Used in: MXM Kaliber: 6,5x47mm Creedmor<br />Pociski: 30<br />Używany w: MXM Kaliber: 6,5x47mm Creedmor<br />Patronen: 30<br />Eingesetzt von: MXM @@ -1412,7 +1412,7 @@ Calibre: 6.5x47mm Creedmor<br/>Cartuchos: 30<br/>Usado em: MXM Kaliber: 6,5x47mm Creedmor<br />Lövedékek: 30<br />Használható: MXM - + .338 10Rnd Mag (300gr Sierra MatchKing HPBT) Ch. .338 10 Cps (300gr Sierra MatchKing HPBT) Cargador de 10 balas de 8.6x70mm (300gr Sierra MatchKing HPBT) @@ -1424,7 +1424,7 @@ Carregador .338 (300gr Sierra MatchKing HPBT) com 10 cartuchos .338 10-lövedékes tár (300gr Sierra MatchKing HPBT) - + .338 HPBT .338 HPBT .338 HPBT @@ -1436,7 +1436,7 @@ .338 HPBT .338 HPBT - + Caliber: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Rounds: 10 Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Cartouches: 10 Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Balas: 10 @@ -1448,7 +1448,7 @@ Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br/>Cartuchos: 10 Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Lövedékek: 10 - + .338 10Rnd Mag (API526) Ch. .338 10Cps (API526) Cargador de 10 balas de .338 (API526) @@ -1460,7 +1460,7 @@ Carregador .338 (API526) com 10 cartuchos .338 10-lövedékes tár (API526) - + .338 AP .338 AP .338 AP @@ -1472,7 +1472,7 @@ .338 AP .338 páncéltörő - + Caliber: 8.6x70mm (API526)<br />Rounds: 10 Calibre: 8.6x70mm (API526)<br />Cartouches: 10 Calibre: 8.6x70mm (API526)<br />Balas: 10 @@ -1484,7 +1484,7 @@ Calibre: 8.6x70mm (API526)<br/>Cartuchos: 10 Kaliber: 8,6x70mm (API526)<br />Lövedékek: 10 - + 12.7x99mm 5Rnd Mag Ch. 12.7x99mm 5Cps Cargador de 5 balas de 12.7x99mm @@ -1496,7 +1496,7 @@ Carregador 12.7x99mm com 5 cartuchos 12,7x99mm 5-lövedékes tár - + 12.7mm 12.7mm 12.7mm @@ -1508,7 +1508,7 @@ 12.7mm 12,7mm - + Caliber: 12.7x99mm<br />Rounds: 5 Calibre: 12.7x99mm<br />Cartouches: 5 Calibre: 12.7x99mm<br />Balas: 5 @@ -1520,7 +1520,7 @@ Calibre: 12.7x99mm<br/>Cartuchos: 5 Kaliber: 12,7x99mm<br />Lövedékek: 5 - + 12.7x99mm API 5Rnd Mag Ch. 12.7x99mm API 5Cps Cargador de 5 balas de 12.7x99mm API @@ -1532,7 +1532,7 @@ Carregador 12.7x99mm API com 5 cartuchos 12,7x99mm 5-lövedékes tár (páncéltörő-gyújtó) - + 12.7mm API 12.7mm API 12.7mm API @@ -1544,7 +1544,7 @@ 12.7mm API 12,7mm páncéltörő-gyújtó - + Caliber: 12.7x99mm API<br />Rounds: 5 Calibre: 12.7x99mm API<br />Cartouches: 5 Calibre: 12.7x99mm API<br />Balas: 5 @@ -1556,7 +1556,7 @@ Calibre: 12.7x99mm API<br/>Cartuchos: 5 Kaliber: 12,7x99mm API<br />Lövedékek: 5 - + 12.7x99mm 5Rnd Mag (AMAX) Ch. 12.7x99mm 5Cps (AMAX) Cargador de 5 balas de 12.7x99mm (AMAX) @@ -1568,7 +1568,7 @@ Carregador 12.7x99mm (AMAX) com 5 cartuchos 12,7x99mm 5-lövedékes tár (AMAX) - + 12.7mm 12.7mm 12.7mm @@ -1580,7 +1580,7 @@ 12.7mm 12,7mm - + Caliber: 12.7x99mm (AMAX)<br />Rounds: 5 Calibre: 12.7x99mm (AMAX)<br />Cartouches: 5 Calibre: 12.7x99mm (AMAX)<br />Balas: 5 @@ -1592,7 +1592,7 @@ Calibre: 12.7x99mm (AMAX)<br/>Cartuchos: 5 Kaliber: 12,7x99mm (AMAX)<br />Lövedékek: 5 - + [ACE] Ammo Supply Crate [ACE] Skrzynka z amunicją [ACE] Caja de suministros de munición diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index f80a0e784c..716400c973 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -505,32 +505,32 @@ Raccogli Pegar - + Explosive System System ładunków wybuchowych Sistema de explosivos - + Require specialists? Wymagaj specjalistów? ¿Requiere especialista? - + Require explosive specialists to disable explosives? Default: No Wymagać saperów do rozbrajania ładunków wybuchowych? Domyślnie: Nie Requiere especialista en explosivos para desactivar explosivos?. Por defecto: No - + Punish non-specialists? Karaj nie-specjalistów? ¿Penalizar a los no especialistas? - + Increase the time it takes to complete actions for non-specialists? Default: Yes Zwiększyć ilość wymaganego czasu do ukończenia akcji dla nie-specjalistów? Domyślnie: Tak Aumenta el tiempo que lleva completar acciones para los no especialstas?. Por defecto: Si - + Moduł ten pozwala dostosować opcje związane z ładunkami wybuchowymi, ich podkładaniem oraz rozbrajaniem. diff --git a/addons/flashsuppressors/stringtable.xml b/addons/flashsuppressors/stringtable.xml index 509c16ddce..f075f1aa34 100644 --- a/addons/flashsuppressors/stringtable.xml +++ b/addons/flashsuppressors/stringtable.xml @@ -1,7 +1,7 @@  - + Flash Suppressor (6.5 mm) Lángrejtő (6,5 mm) Mündungsfeuerdämpfer (6,5 mm) @@ -13,7 +13,7 @@ Пламегаситель (6,5 мм) Bocacha (6,5 mm) - + Flash Suppressor (7.62 mm) Lángrejtő (7,62 mm) Mündungsfeuerdämpfer (7,62 mm) @@ -25,7 +25,7 @@ Пламегаситель (7,62 мм) Bocacha (7,62 mm) - + Flash Suppressor (5.56 mm) Lángrejtő (5,56 mm) Mündungsfeuerdämpfer (5,56 mm) @@ -37,7 +37,7 @@ Пламегаситель (5,56 мм) Bocacha (5,56 mm) - + Flash Suppressor (.45 ACP) Lángrejtő (.45 ACP) Mündungsfeuerdämpfer (.45 ACP) @@ -49,7 +49,7 @@ Пламегаситель (.45 ACP) Bocacha (.45 ACP) - + Flash Suppressor (9 mm) Lángrejtő (9 mm) Mündungsfeuerdämpfer (9 mm) @@ -61,7 +61,7 @@ Пламегаситель (9 мм) Bocacha (9 mm) - + Flash Suppressor (.338) Lángrejtő (.338) Mündungsfeuerdämpfer (.338) @@ -73,7 +73,7 @@ Пламегаситель (.338) Bocacha (.338) - + Flash Suppressor (9.3 mm) Lángrejtő (9,3 mm) Mündungsfeuerdämpfer (9,3 mm) diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index 9e2e88aa4b..19acc9d81b 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -1,42 +1,42 @@  - + Fragmentation Simulation Simulación de fragmentación - + Enable the ACE Fragmentation Simulation Activa la simulación de fragmentación ACE - + Spalling Simulation Simulación de astillamiento - + Enable the ACE Spalling Simulation Activa la simulación de astillamiento ACE - + Maximum Projectiles Tracked Máximos proyectiles rastreados - + This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once) Este ajuste controla la cantidad máxima de proyectiles del sistema de fragmentación y astillamiento de los que se hará un seguimiento en cualquier momento dado. Si se disparan más proyectiles, no serán rastreados. Baja esta opción si no deseas una bajada de FPS en escenarios con muchos proyectiles (>200 proyectiles en el aire a la vez) - + Maximum Projectiles Per Frame Máximos proyectiles por cuadro - + The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further. - + (SP Only) Frag/Spall Debug Tracing (Solo SP) Seguimiento de depuración de Fragmentación/Astillamiento - + (SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only. (Solo SP) Requiere un reinicio misión/editor. Permite el seguimiento visual de la fragmentación y astillamientos de los proyectiles en modo SP. diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 8f60fa6879..45d994e522 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -133,7 +133,7 @@ Cselekvés - Árnyék min. Interação - Min. de Sombra - + Keep cursor centered Garder le curseur au centre Центрировать курсор @@ -145,7 +145,7 @@ Manter o cursor centralizado Mantieni il cursore centrato - + Keeps cursor centered and pans the option menu around. Useful if screen size is limited. Udržuje kurzor na středu. Užitečné, pokud je velikost obrazovky omezena. Garde le curseur au milieu et dispose le menu des options autour. Utile si la taille de l'écran est limitée. @@ -169,7 +169,7 @@ Cselekvés végrehajtása a menügomb elengedésekor Esegui l'azione quando rilasci il tasto menu - + Interaction Text Size Velikost textu interakce Menü-Schriftgröße @@ -181,7 +181,7 @@ Cselekvő szöveg mérete Dimensione del testo d'interazione - + Interaction Text Shadow Stín textu interakce Menü-Hintergrundschatten @@ -193,7 +193,7 @@ Cselekvő szöveg árnyéka Ombra del testo d'interazione - + Allows controlling the text's shadow. Outline ignores custom shadow colors. Umožňuje změnit stíny textu v menu interakce. Barva stínu je u tahu písma ignorována. Stellt den Hintergrundschatten ein. Die Einstellung 'Kontur' ignoriert die Farbe des Schattens. @@ -205,7 +205,7 @@ Hozzáférést biztosít a szöveg árnyékának kezeléséhez. A körvonal nem veszi figyelembe az egyedi árnyékszíneket. Permette di controllare l'ombra del testo. L'impostazione "Contorno" ignora il colore dell'ombra. - + Outline Kontura Kontur diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 6c999b679a..b4dafad983 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -793,22 +793,22 @@ Passeggeri Passageiros - + Interaction System System interakcji Sistema de interacción - + Enable Team Management Wł. zarządzanie drużyną Habilitar gestión de equipos - + Should players be allowed to use the Team Management Menu? Default: Yes Czy gracze mogą korzystać z menu zarządzania drużyną? Domyślnie: Tak ¿Deben tener permitido los jugadores el uso del menu de gestión de equipos? Por defecto: Si - + Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn. diff --git a/addons/javelin/stringtable.xml b/addons/javelin/stringtable.xml index 0557968115..e826263100 100644 --- a/addons/javelin/stringtable.xml +++ b/addons/javelin/stringtable.xml @@ -1,7 +1,7 @@  - - + + Lock Target (Hold) Ziel aufschalten Захватить цель (удерживать) @@ -13,7 +13,7 @@ Fijar objetivo (Mantener) Travar Alvo(Segurar) - + Cycle Fire Mode Wechsle Feuermodus Переключение режимов огня diff --git a/addons/kestrel4500/stringtable.xml b/addons/kestrel4500/stringtable.xml index e584b9120c..3ad9e8824f 100644 --- a/addons/kestrel4500/stringtable.xml +++ b/addons/kestrel4500/stringtable.xml @@ -1,7 +1,7 @@  - + Kestrel 4500NV Kestrel 4500NV Kestrel 4500NV @@ -13,7 +13,7 @@ Kestrel 4500NV Kestrel 4500NV - + Kestrel 4500 Pocket Weather Tracker Anemomentr skrzydełkowy Kestrel 4500 Карманная метеостанция Kestrel 4500NV diff --git a/addons/laser/stringtable.xml b/addons/laser/stringtable.xml index 8ea28398e0..4a478096d0 100644 --- a/addons/laser/stringtable.xml +++ b/addons/laser/stringtable.xml @@ -1,7 +1,7 @@  - - + + Laser Code Lasercode Kod lasera @@ -13,7 +13,7 @@ Laser kód Codice laser - + Laser - Cycle Code Up Lasercode + Laser - Następny kod @@ -25,7 +25,7 @@ Laser - Kód + Codice laser + - + Laser - Cycle Code Down Lasercode - Laser - Poprzedni kod diff --git a/addons/logistics_uavbattery/stringtable.xml b/addons/logistics_uavbattery/stringtable.xml index 8c0bd56675..5b3a219a30 100644 --- a/addons/logistics_uavbattery/stringtable.xml +++ b/addons/logistics_uavbattery/stringtable.xml @@ -1,7 +1,7 @@  - - + + Drone is full Drohne ist voll El VANT está lleno @@ -13,7 +13,7 @@ Il drone è pieno БПЛА полностью заряжен - + You need a UAV Battery Du brauchst eine UAV-Batterie Necesitas una batería para VANT @@ -25,7 +25,7 @@ Hai bisogno di una Batteria UAV Требуется аккумулятор для БПЛА - + Recharge Aufladen Recargar @@ -37,7 +37,7 @@ Ricarica Зарядить - + UAV Battery UAV-Batterie Batería para VANT @@ -49,7 +49,7 @@ Batteria UAV Аккумулятор БПЛА - + Used to refuel Carried UAV's Verwendet zum Aufladen von tragbaren UAVs Usada para reabastecer el VANT @@ -61,7 +61,7 @@ Usata per ricaricare la Batteria dell'UAV Используется для зарядки переносных БПЛА - + Recharging ... Aufladen ... Recargando ... diff --git a/addons/logistics_wirecutter/stringtable.xml b/addons/logistics_wirecutter/stringtable.xml index b9e4023765..085971264c 100644 --- a/addons/logistics_wirecutter/stringtable.xml +++ b/addons/logistics_wirecutter/stringtable.xml @@ -1,7 +1,7 @@  - - + + Wirecutter Pince coupante Drahtschneider @@ -13,7 +13,7 @@ Trancia Cortador de Arame - + Wirecutter Schneidet Draht. Cortador de cables @@ -25,7 +25,7 @@ Trancia da ferro Cortador de Arame - + Cut Fence Zaun schneiden Cortar alambrado @@ -37,7 +37,7 @@ Drótkerítés átvágása Разрезать забор - + Cutting Fences / Wires ... Zaun / Draht schneiden ... Cortando alambrado / cables ... @@ -49,7 +49,7 @@ Drótok elvágása ... Разрезаем забор / провода ... - + Fence cut Zaun geschnitten Alambrado cortado diff --git a/addons/maptools/stringtable.xml b/addons/maptools/stringtable.xml index d9bdcb02c5..07b2e5dc88 100644 --- a/addons/maptools/stringtable.xml +++ b/addons/maptools/stringtable.xml @@ -1,6 +1,6 @@  - + Map Tools Herramientas de mapa From 6f6f2a55f034ee1bfb03dcdae422098bfe84673d Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 27 May 2015 21:43:30 +0200 Subject: [PATCH 073/252] Stringtable fixes except medical --- addons/microdagr/stringtable.xml | 66 +++---- addons/missileguidance/ACE_Settings.hpp | 4 +- addons/missileguidance/CfgAmmo.hpp | 16 +- addons/missileguidance/stringtable.xml | 16 +- addons/missionmodules/stringtable.xml | 2 +- addons/mk6mortar/stringtable.xml | 26 +-- addons/nametags/ACE_Settings.hpp | 4 +- addons/nametags/stringtable.xml | 14 +- addons/optics/stringtable.xml | 20 +-- addons/optionsmenu/CfgVehicles.hpp | 10 +- addons/optionsmenu/stringtable.xml | 26 +-- addons/overheating/stringtable.xml | 4 +- addons/reload/stringtable.xml | 4 +- addons/respawn/CfgVehicles.hpp | 10 +- addons/respawn/stringtable.xml | 12 +- addons/vehiclelock/stringtable.xml | 22 +-- addons/vehicles/stringtable.xml | 6 +- addons/weaponselect/stringtable.xml | 4 +- addons/winddeflection/stringtable.xml | 222 ++++++++++++------------ 19 files changed, 243 insertions(+), 245 deletions(-) diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index 16d27464bd..d6f55aca64 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -1,7 +1,7 @@  - - + + MicroDAGR GPS MicroDAGR GPS GPS MicroDAGR @@ -13,7 +13,7 @@ GPS MicroDAGR GPS MicroDAGR - + MicroDAGR advanced GPS receiver MicroDAGR - Fortgeschrittener GPS-Empfänger Receptor avanzado GPS MicroDAGR @@ -25,7 +25,7 @@ Ricevitore GPS avanzato MicroDAGR Recepitor GPS avançado MicroDAGR - + Angular Unit: Unidad angular: Угловые единицы: @@ -37,7 +37,7 @@ Unità angolare: Unidade Angular: - + Mils Mil Mils @@ -49,7 +49,7 @@ Mils Mils: - + Show Waypoints On Map: Zeige Wegpunkte auf Karte Mostrar puntos de ruta en el mapa: @@ -61,7 +61,7 @@ Mostra waypoint sulla mappa: Mostrar Waypoints no mapa: - + Degrees Grad Grados @@ -73,7 +73,7 @@ Gradi Graus - + On Zapnuto Allumé @@ -85,7 +85,7 @@ Encendido Be - + Off Vypnuto Eteint @@ -97,7 +97,7 @@ Apagado Ki - + Enter Grid Cords: Introducir coordenadas de cuadrícula: Введите сеточные координаты: @@ -109,7 +109,7 @@ Introduci griglia coordinate: Digite as Ccords. do Grid - + Name of [%1] Name von [%1] Nombre de [%1] @@ -121,7 +121,7 @@ Nome di [%1] Nome do [%1] - + MGRS-New UTMREF-NEU Nuevo-MGRS @@ -133,7 +133,7 @@ Nuovo MGRS MGRS-Novo - + WGD WGD WGD @@ -145,7 +145,7 @@ WGD WGD - + Range: Distancia: Distanz: @@ -157,7 +157,7 @@ Distanza: Distância: - + Compass Direction Kompass Richtung Dirección de la brújula @@ -169,7 +169,7 @@ Azimut Direção na bússula - + Mark Markieren Marca @@ -181,7 +181,7 @@ Marca Marca - + Waypoints Puntos de ruta Wegpunkte @@ -193,7 +193,7 @@ waypoints Waypoints - + Connect To Conectar a Подключиться к @@ -205,7 +205,7 @@ Collega a Conectar à - + Settings Paramètres Einstellungen @@ -217,7 +217,7 @@ Impostaizoni Opções - + SetWP WP setzen Fijar PR @@ -229,7 +229,7 @@ Definisci WayPoints Definir WP - + Add Hinzufügen Añadir @@ -241,7 +241,7 @@ Aggiungi Adicionar - + Delete Smazat Supprimer @@ -253,7 +253,7 @@ Borrar Törlés - + Toggle MicroDAGR Display Mode MicoDAGR Anzeigemodus wechseln Cambiar modo de pantalla del MicroDAGR @@ -265,7 +265,7 @@ Alterna modalità display MicroDAGR Alternar Modo de Display do MicroDAGR - + Show MicoDAGR Zeige MicroDAGR Mostrar MicroDAGR @@ -277,7 +277,7 @@ Mostra MicroDAGR Mostrar MicroDAGR - + Configure MicroDAGR Konfiguriere MicroDAGR Configurar MicroDAGR @@ -289,7 +289,7 @@ ConfiguraMicroDAGR Configurar MicroDAGR - + Close MicroDAGR Schließe MicroDAGR Cerrar MicroDAGR @@ -301,37 +301,37 @@ Chiudi MicroDAGR Fechar MicroDAGR - + MicroDAGR Map Fill Wypełnienie mapy MicroDAGR Relleno del mapa MicroDAGR - + MicroDAGR Map Fill Wypełnienie mapy MicroDAGR Relleno del mapa MicroDAGR - + How much map data is filled on MicroDAGR's Jak duża część informacji mapy jest załadowana do MicroDAGR? Cuanta información está disponible en el mapa del MicroDAG - + Full Satellite + Buildings Pełna satelitarna + budynki Satelite completo + Edificios - + Topographical + Roads Topograficzna + drogi Topografico + Carreteras - + None (Cannot use map view) Żadna (wyłącza ekran mapy) Nada (No se puede el mapa) - + Controls how much data is filled on the microDAGR items. Less data restricts the map view to show less on the minimap.<br />Source: microDAGR.pbo Moduł ten pozwala kontrolować jak duża ilość informacji jest załadowana do przedmiotów MicroDAGR. Mniejsza ilość danych ogranicza widok mapy pokazując mniej rzeczy na minimapie.<br />Źródło: microDAGR.pbo Controla la cantidad de información disponible en el microDAGR. Menos datos limitan la vista del mapa a mostrar menos en el minimapa.<br />Fuente: microDAGR.pbo diff --git a/addons/missileguidance/ACE_Settings.hpp b/addons/missileguidance/ACE_Settings.hpp index 9a2c81c2bf..2ec3326a98 100644 --- a/addons/missileguidance/ACE_Settings.hpp +++ b/addons/missileguidance/ACE_Settings.hpp @@ -3,8 +3,8 @@ class ACE_Settings { value = 2; typeName = "SCALAR"; isClientSettable = 1; - displayName = "$STR_ACE_MissileGuidance"; + displayName = CSTRING(Title); description = CSTRING(Desc); - values[] = {"$STR_ACE_MissileGuidance_Off", "$STR_ACE_MissileGuidance_PlayerOnly", "$STR_ACE_MissileGuidance_PlayerAndAi"}; + values[] = {CSTRING(Off), CSTRING(PlayerOnly), CSTRING(PlayerAndAi)}; }; }; \ No newline at end of file diff --git a/addons/missileguidance/CfgAmmo.hpp b/addons/missileguidance/CfgAmmo.hpp index d277b31e2a..779d2a82eb 100644 --- a/addons/missileguidance/CfgAmmo.hpp +++ b/addons/missileguidance/CfgAmmo.hpp @@ -69,19 +69,19 @@ class CfgAmmo { }; class ACE_Hydra70_DAGR : M_PG_AT { - displayName = CSTRING(DAGR); - displayNameShort = CSTRING(DAGR_Short); + displayName = CSTRING(Hydra70_DAGR); + displayNameShort = CSTRING(Hydra70_DAGR_Short); - description = CSTRING(DAGR); - descriptionShort = CSTRING(DAGR_Desc); + description = CSTRING(Hydra70_DAGR_Desc); + descriptionShort = CSTRING(Hydra70_DAGR_Desc); }; class ACE_Hellfire_AGM114K : ACE_Hydra70_DAGR { - displayName = CSTRING(AGM114K); - displayNameShort = CSTRING(AGM114K_Short); + displayName = CSTRING(Hellfire_AGM114K); + displayNameShort = CSTRING(Hellfire_AGM114K_Short); - description = CSTRING(AGM114K_desc); - descriptionShort = CSTRING(AGM114K_desc); + description = CSTRING(Hellfire_AGM114K_desc); + descriptionShort = CSTRING(Hellfire_AGM114K_desc); // @TODO: placeholder model to at least make it look different model = "\A3\Weapons_F\Ammo\Missile_AT_03_fly_F"; diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index 2b0b60664b..9c8ddde87b 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -1,7 +1,7 @@  - - + + Advanced Missile Guidance Guiado Avanzado de Misiles Guidage avancé de missile @@ -25,7 +25,7 @@ Orientação avançada de mísseis ou OAM, fornece vários aprimoramentos para travamento de mísseis e disparos. Também é um sistema requerido para disparar armas que utilizem mísseis. Pokočilé navádění raket (AMG) poskytuje několik vylepšení pro lepší zaměření a následnou střelbu. Je to prvek vyžadovaný u typu zbraní jako jsou rakety. - + Hydra-70 DAGR Missile Misil Hydra-70 DAGR Hydra-70 DAGR @@ -37,7 +37,7 @@ Hydra-70 DAGR rakéta Hydra-70 DAGR - + DAGR DAGR DAGR @@ -49,7 +49,7 @@ DAGR DAGR - + Hydra-70 DAGR Laser Guided Missile Misil guiado por láser Hydra-70 DAGR Missile à guidage laser Hydra-70 DAGR @@ -61,7 +61,7 @@ Hydra-70 DAGR lézer-irányított rakéta Управляемая ракета лазерного наведения Hydra-70 DAGR - + Hellfire II AGM-114K Missile Misil Hellfire II AGM-114K Hellfire II AGM-114K @@ -73,7 +73,7 @@ Hellfire II AGM-114K rakéta Hellfire II AGM-114K - + AGM-114K AGM-114K AGM-114K @@ -85,7 +85,7 @@ AGM-114K AGM-114K - + Hellfire II AGM-114K Laser Guided Missile Misil guiado por láser Hellfire II AGM-114K Missile à guidage laser Hellfire II AGM-114K diff --git a/addons/missionmodules/stringtable.xml b/addons/missionmodules/stringtable.xml index d577db8899..ed923d2afc 100644 --- a/addons/missionmodules/stringtable.xml +++ b/addons/missionmodules/stringtable.xml @@ -1,6 +1,6 @@  - + ACE Mission Modules ACE Moduły misji diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index 563e14d68f..ff37742681 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -1,7 +1,7 @@  - - + + 82mm Rangetable 82mm Distanztabelle Tabela strzelnicza 82mm @@ -13,7 +13,7 @@ 82mm Rangetable Tavola di tiro 82mm - + Range Table for the MK6 82mm Mortar Distanztabelle für den Mk6 82mm Mortar Tabela strzelnicza dla moździerza 82mm MK6 @@ -25,7 +25,7 @@ Rangetable pro MK6 82mm minomet Tavola di tiro per il mortaio calibro 82mm MK6 - + Open 82mm Rangetable Öffne 82mm Distanztabelle Otwórz tabelę strzelniczą 82mm @@ -37,7 +37,7 @@ Otevřít 82mm Rangetable Apri la tavola di tiro 82mm - + Charge Ladung Charge @@ -49,42 +49,42 @@ Nabít Carica - + MK6 Settings Moździerz MK6 - Ustawienia Ajustes MK6 - + Air Resistance Opór powietrza Resistencia al aire - + For Player Shots, Model Air Resistance and Wind Effects Modeluj opór powietrza oraz wpływ wiatru na tor lotu pocisku dla strzałów z moździerza MK6 przez graczy Para disparos del jugador, modelo de resistencia al aire y efectos de viento - + Allow MK6 Computer Komputer MK6 Habilitar ordenador del MK6 - + Show the Computer and Rangefinder (these NEED to be removed if you enable air resistance) Zezwól na komputer i dalmierz (opcja ta MUSI zostać wyłączona jeżeli aktywowałeś opór powietrza) Muestra el ordenador y el medidor de distancia (DEBEN ser quitados si se activa la resistecia al aire) - + Allow MK6 Compass Kompas MK6 Habilitar brujula del MK6 - + Show the MK6 Digital Compass Pokaż kompas MK6 Muestra la brujula digital en el MK6 - + Moduł ten pozwala dostosować ustawienia moździerza MK6. diff --git a/addons/nametags/ACE_Settings.hpp b/addons/nametags/ACE_Settings.hpp index a4e1892a4a..416e0a8c72 100644 --- a/addons/nametags/ACE_Settings.hpp +++ b/addons/nametags/ACE_Settings.hpp @@ -11,7 +11,7 @@ class ACE_Settings { isClientSettable = 1; displayName = CSTRING(ShowPlayerNames); description = CSTRING(ShowPlayerNames_Desc); - values[] = {"$STR_ACE_Common_Disabled", "$STR_ACE_Common_Enabled", "$STR_ACE_Common_OnlyCursor", "$STR_ACE_Common_OnlyOnKeypress", "$STR_ACE_Common_OnlyCursorAndKeyPress"}; + values[] = {CSTRING(Disabled), CSTRING(Enabled), CSTRING(OnlyCursor), CSTRING(OnlyOnKeypress), CSTRING(OnlyCursorAndKeyPress)}; }; class GVAR(showPlayerRanks) { value = 1; @@ -42,7 +42,7 @@ class ACE_Settings { isClientSettable = 1; displayName = CSTRING(ShowSoundWaves); description = CSTRING(ShowSoundWaves_Desc); - values[] = {"$STR_ACE_Common_Disabled", "$STR_ACE_Common_NameTagSettings", "$STR_ACE_Common_AlwaysShowAll"}; + values[] = {CSTRING(Disabled), CSTRING(NameTagSettings), CSTRING(AlwaysShowAll)}; }; class GVAR(PlayerNamesViewDistance) { value = 5; diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 5108557182..bc47d5970f 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -173,37 +173,37 @@ Moduł ten pozwala dostosować ustawienia i zasięg wyświetlania imion. - + Disabled Wyłączone Desactivado - + Enabled Włączone Activado - + Only Cursor Tylko pod kursorem Solo cursor - + Only On Keypress Tylko po wciśnięciu klawisza Solo al pulsar tecla - + Only Cursor and KeyPress Tylko pod kursorem i po wciśnięciu klawisza En cursor y al pulsar tecla - + Use Nametag settings Użyj ustawień imion Usar ajustes de etiquetas de nombre - + Always Show All Zawsze pokazuj wszystkie Mostrar siempre todo diff --git a/addons/optics/stringtable.xml b/addons/optics/stringtable.xml index f9964c4310..a6818a90d3 100644 --- a/addons/optics/stringtable.xml +++ b/addons/optics/stringtable.xml @@ -1,7 +1,7 @@  - + RCO (2D) RCO (2D) RCO (2D) @@ -13,7 +13,7 @@ RCO (2D) RCO (2D) - + RCO (PIP) RCO (PIP) RCO (PIP) @@ -25,7 +25,7 @@ RCO (PIP) RCO (PIP) - + ARCO (2D) ARCO (2D) ARCO (2D) @@ -37,7 +37,7 @@ ARCO (2D) ARCO (2D) - + ARCO (PIP) ARCO (PIP) ARCO (PIP) @@ -49,7 +49,7 @@ ARCO (PIP) ARCO (PIP) - + MRCO (2D) MRCO (2D) MRCO (2D) @@ -61,7 +61,7 @@ MRCO (2D) MRCO (2D) - + MRCO (PIP) MRCO (PIP) MRCO (PIP) @@ -73,7 +73,7 @@ MRCO (PIP) MRCO (PIP) - + MOS (2D) MOS (2D) MOS (2D) @@ -85,7 +85,7 @@ MOS (2D) MOS (2D) - + MOS (PIP) MOS (PIP) MOS (PIP) @@ -97,7 +97,7 @@ MOS (PIP) MOS (PIP) - + LRPS (2D) LRPS (2D) LRPS (2D) @@ -109,7 +109,7 @@ MPLD (2D) LRPS (2D) - + LRPS (PIP) LRPS (PIP) LRPS (PIP) diff --git a/addons/optionsmenu/CfgVehicles.hpp b/addons/optionsmenu/CfgVehicles.hpp index 52895acb66..4a0b4010a5 100644 --- a/addons/optionsmenu/CfgVehicles.hpp +++ b/addons/optionsmenu/CfgVehicles.hpp @@ -2,7 +2,7 @@ class CfgVehicles { class ACE_Module; class ACE_moduleAllowConfigExport: ACE_Module { scope = 2; - displayName = "$STR_AllowConfigExport_Module_DisplayName"; + displayName = CSTRING(AllowConfigExport_Module_DisplayName); //icon = ""; category = "ACE"; function = QUOTE(DFUNC(moduleAllowConfigExport)); @@ -12,15 +12,15 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class allowconfigurationExport { - displayName = "$STR_AllowConfigExport_allowconfigurationExport_DisplayName"; - description = "$STR_AllowConfigExport_allowconfigurationExport_Description"; + displayName = CSTRING(AllowConfigExport_allowconfigurationExport_DisplayName); + description = CSTRING(AllowConfigExport_allowconfigurationExport_Description); typeName = "BOOL"; defaultValue = 1; }; }; class ModuleDescription { - description = "$STR_AllowConfigExport_Module_Description"; + description = CSTRING(AllowConfigExport_Module_Description); sync[] = {}; }; }; -}; \ No newline at end of file +}; diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 7ad035cd82..7f59830b75 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -169,7 +169,7 @@ Numero Número - + Uknown input type Unbekannter Eingabetyp Tipo de entrada desconocida @@ -229,7 +229,7 @@ Parametri esportati alla clipboard Opções exportadas para o clipboard. - + Option Menu UI Scaling Menu option: taille de l'UI Skalowanie UI menu ustawień @@ -241,57 +241,57 @@ Escalar o menu de opções Proporzioni della interfaccia utente - + Allow Config Export [ACE] Pozwól na eksport ustawień [ACE] [ACE] Permitir exportar configuración - + Allow Zezwól Permitir - + Allow export of all settings to a server config formatted. Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera. Permitir la exportación de todos los ajustes de configuración a un servidor con formato. - + When allowed, you have access to the settings modification and export in SP. Clicking export will place the formated config on your clipboard. Jeżeli ustawione na zezwól, wtedy będziesz mieć dostęp do ekranu modyfikacji wszystich ustawień i zmiennych ACE, a także będziesz mieć możliwość eksportu tychże ustawień do formatu rozpoznawalnego przez userconfig serwera. Kliknięcie opcji Eksportuj skopiuje wszystkie ustawienia do schowka. Działa tylko w trybie SP. Cuando esta permitido, se tiene acceso a los ajustes de modificación y exportación en SP. Pulsar en exportar copiara la configuración al portapapeles. - + Hide Ukryj Ocultar - + Top right, downwards Po prawej u góry, w dół Arriba a la derecha, hacia abajo - + Top right, to the left Po prawej u góry, do lewej Arriba a la derecha, hacia la izquierda - + Top left, downwards Po lewej u góry, w dół Arriba a la izquierda, hacia abajo - + Top left, to the right Po lewej u góry, do prawej Arriba a la izquierda, hacia la derecha - + Top Góra Arriba - + Bottom Dół Abajo diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index 491b587fc2..28dc8b95c7 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -1,7 +1,7 @@  - + Display text on jam Zeige Text bei Ladehemmung Mostrar texto al encasquillarse @@ -13,7 +13,7 @@ Mostrar texto quando trava acontecer Visualizza testo in caso di inceppamento - + Display a notification whenever your weapon gets jammed Zeige einen Hinweis, wenn die Waffe eine Ladehemmung hat. Mostrar notificación cada vez que el arma se encasquille diff --git a/addons/reload/stringtable.xml b/addons/reload/stringtable.xml index 9e3cf6c1b0..fc0c534e93 100644 --- a/addons/reload/stringtable.xml +++ b/addons/reload/stringtable.xml @@ -1,7 +1,7 @@  - + Check ammo on weapon reload Prüfe Munition beim Nachladen Comprobar munición al recargar el arma @@ -13,7 +13,7 @@ Controlla le munizioni ricaricando Conferir munição ao recarregar a arma - + Check the ammo in your new magazine on magazine reload. Prüfe nachgeladenes Magazin Comprueba la munición del nuevo cargador al recargar. diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp index 21d934c4fd..c47e91d27a 100644 --- a/addons/respawn/CfgVehicles.hpp +++ b/addons/respawn/CfgVehicles.hpp @@ -35,7 +35,7 @@ class CfgVehicles { class ACE_ModuleFriendlyFire: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = CSTRING(Module_DisplayName); + displayName = CSTRING(FriendlyFire_Module_DisplayName); function = QFUNC(moduleFriendlyFire); scope = 2; isGlobal = 1; @@ -43,14 +43,14 @@ class CfgVehicles { class Arguments {}; class ModuleDescription: ModuleDescription { - description = CSTRING(Module_Description); + description = CSTRING(FriendlyFire_Module_Description); }; }; class ACE_ModuleRallypoint: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = CSTRING(Module_DisplayName); + displayName = CSTRING(Rallypoint_Module_DisplayName); function = QFUNC(moduleRallypoint); scope = 2; isGlobal = 1; @@ -58,7 +58,7 @@ class CfgVehicles { class Arguments {}; class ModuleDescription: ModuleDescription { - description = CSTRING(Module_Description); + description = CSTRING(Rallypoint_Module_Description); }; }; @@ -67,7 +67,7 @@ class CfgVehicles { class CAManBase : Man { class ACE_SelfActions { class ACE_MoveRallypoint { - displayName = CSTRING(MoveRallypoint); + displayName = CSTRING(Rallypoint_MoveRallypoint); condition = QUOTE([ARR_2(_player, side group _player)] call FUNC(canMoveRallypoint)); statement = QUOTE([ARR_2(_player, side group _player)] call FUNC(moveRallypoint)); showDisabled = 0; diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index 3a3abb6560..fe4b363c1c 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -1,6 +1,6 @@  - + Deploy in 5 seconds ... Déploiement dans 5 secondes ... @@ -174,25 +174,25 @@ Moduł ten pozwala dostosować ustawienia odrodzenia (respawnu). - + Friendly Fire Messages Wiadomości Friendly Fire Mensajes de fuego amigo - + Użycie tego modułu na misji spowoduje wyświetlenie wiadomości na czacie w przypadku, kiedy zostanie popełniony friendly fire - wyświetlona zostanie wtedy wiadomość kto kogo zabił. - + Rallypoint System System punktu zbiórki Sistema de punto de reunión - + Moduł ten pozwala zastosować na misji "punkt zbiórki", do którego można szybko przeteleportować się z "bazy". Wymaga postawienia odpowiednich obiektów na mapie - bazy oraz flagi. Obydwa dostępne są w kategorii Puste -> ACE Odrodzenie. - + Move Rallypoint Przenieś punkt zbiórki Mover punto de reunión diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml index 7987e3b916..f12b571f49 100644 --- a/addons/vehiclelock/stringtable.xml +++ b/addons/vehiclelock/stringtable.xml @@ -1,7 +1,7 @@  - + Unlock Vehicle Fahrzeug aufschließen Abrir vehículo @@ -13,7 +13,7 @@ Sblocca il veicolo Destravar veículo - + Lock Vehicle Fahrzeug abschließen Cerrar vehículo @@ -25,7 +25,7 @@ Chiudi il veicolo a chiave Travar Veículo - + Lockpick Vehicle Fahrzeug knacken Forzar vehículo @@ -37,7 +37,7 @@ Scassina veicolo Usar mixa no Veículo - + Picking Lock.... Schloss knacken... Forzando cerradura... @@ -49,7 +49,7 @@ Scassino il veicolo.... Usando Mixa... - + A custom key that will open a specific vehicle. Ein Schlüssel der ein bestimmtes Fahrzeug aufschließt. Una llave concreta abrirá un vehículo concreto. @@ -61,7 +61,7 @@ Una chiave personalizzata che apre determinati veicoli. Uma chave específica que abre um veículo específico. - + A Master Key will open any lock, no matter what! Ein Generalschlüssel der jedes Schloss öffnet... Una llave maestra abrirá cualquier cierre, no importa cual! @@ -73,7 +73,7 @@ Un passe-partout che apre qualsiasi serratura! Uma chave mestre irá abrir qualquer fechadura, não importa qual! - + A lockpick set that can pick the locks of most vehicles. Ein Dietrich der die meisten Fahrzeugschlösser knacken kann... Un set de ganzúas que puede abrir las cerraduras de la mayoría vehículos. @@ -85,7 +85,7 @@ Un grimardello per forzare la maggior parte dei veicoli Um set de chave mixas que pode abrir a maioria dos veículos. - + A key that should open most WEST vehicles. Ein Schlüssel der die meisten westlichen Fahrzeuge öffnen sollte... Una llave que abrirá la mayoría de vehículos occidentales. @@ -97,7 +97,7 @@ Una chiave che apre la maggior parte dei veicoli occidentali Uma chave que abre a maioria dos veículos ocidentais - + A key that should open most EAST vehicle. Ein Schlüssel der die meisten östlichen Fahrzeuge öffnen sollte... Una llave que abrirá la mayoría de vehículos orientales. @@ -109,7 +109,7 @@ Una chaive che apre la maggior parte dei veicoli orientali Uma chave que abre a maioria dos veículos orientais - + A key that should open most INDEP vehicle. Ein Schlüssel der die meisten Fahrzeuge der Aufständischen öffnen sollte... Una llave que abrirá la mayoría de vehículos independientes. @@ -121,7 +121,7 @@ Una chaive che apre la maggior parte dei veicoli degli indipendenti Uma chave que abre a maioria dos veículos independentes - + A key that should open most CIV vehicle. Ein Schlüssel der die meisten zivilen Fahrzeuge öffnen sollte... Una llave que abrirá la mayoría de vehículos civiles. diff --git a/addons/vehicles/stringtable.xml b/addons/vehicles/stringtable.xml index 603f2563dc..5d9ffb0535 100644 --- a/addons/vehicles/stringtable.xml +++ b/addons/vehicles/stringtable.xml @@ -1,7 +1,7 @@  - + Speed Limiter on Begrenzer an Limitador de velocidad activado @@ -13,7 +13,7 @@ Limitador de Velocidade Ativo Limitatore Attivo - + Speed Limiter off Begrenzer aus Limitador de velocidad desactivado @@ -25,7 +25,7 @@ Limitador de Velocidade Desativado Limitatore Non Attivo - + Speed Limiter Begrenzer Limitador de velocidad diff --git a/addons/weaponselect/stringtable.xml b/addons/weaponselect/stringtable.xml index 810fda21c9..ea76984097 100644 --- a/addons/weaponselect/stringtable.xml +++ b/addons/weaponselect/stringtable.xml @@ -1,7 +1,7 @@  - + Display text on grenade throw Zeige Text beim Granatwurf Mostrar texto al lanzar una granada @@ -13,7 +13,7 @@ Mostra indicazioni nel lancio granate Mostrat texto ao lançar granada - + Display a hint or text on grenade throw. Zeige Hinweis oder Text beim Granatwurf Muestra una notificación o texto al lanzar una granada diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index 212c1dbd11..d38bcf8283 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -1,117 +1,115 @@  - - - Wind Information - Informacje o wietrze - Información del viento - Информация о ветре - Informace o větru - Vent - Windinformationen - Szélinformáció - Informazioni sul vento - Informação do vento - - - Direction: %1 - Kierunek: %1 - Dirección: %1 - Направление: %1° - Směr: %1 - Direction %1 - Windrichtung: %1 - Irány: %1 - Direzione: %1° - Direção: %1 - - - Speed: %1 m/s - Prędkość: %1 - Velocidad: %1 m/s - Скорость: %1 м/с - Rychlost: %1 m/s - Vitesse %1 m/s - Geschwindigkeit: %1 m/s - Sebesség: %1 m/s - Velocità: %1 m/s - Velocidade: %1 m/s - - - Weather Information - Informacje o pogodzie - Información Meteorológica - Информация о погоде - Informace o počasí - Météo - Wetterinformationen - Időjárás-Információ - Meteo - Informação Meteorológica - - - Humidity: %1% - Wilgotność: %1 - Humedad: %1% - Влажность: %1% - Vlhkost: %1% - Humidité: %1% - Luftfeuchtigkeit: %1 - Páratartalom: %1% - Umidità: %1% - Humidade: %1% - - - Wind Deflection - Wpływ wiatru - Desviación por viento - - - Wind Deflection - Wpływ wiatru - Desviación por viento - - - Enables wind deflection - Aktywuje wpływ wiatru na trajektorię lotu pocisków - Activa la desviación por viento - - - Vehicle Enabled - Włączone dla pojazdów - Habilitada en vehículos - - - Enables wind deflection for static/vehicle gunners - Aktywuje wpływ wiatru na trajektorię lotu pocisków dla broni statycznej i na pojazdach - Habilita la desviación por viento para artilleros estaticos/de vehículos - - - Simulation Interval - Interwał symulacji - Intervalo de simulación - - - Defines the interval between every calculation step - Określa interwał pomiędzy każdym krokiem kalkulacji - Define el intervalo entre cada calculo - - - Simulation Radius - Zasięg symulacji - Radio de simulación - - - Defines the radius around the player (in meters) at which projectiles are wind deflected - Określa obszar naokoło gracza (w metrach), na którym pociski są znoszone przez wiatr - Define el radio alrededor del jugador (en metros) en el cual los proyectiles son desviados por el viento - - - Wind influence on projectiles trajectory - Wpływ wiatru na trajektorię lotu pocisków - Influencia del viento en la trayectoria de proyectiles - - + + Wind Information + Informacje o wietrze + Información del viento + Информация о ветре + Informace o větru + Vent + Windinformationen + Szélinformáció + Informazioni sul vento + Informação do vento + + + Direction: %1 + Kierunek: %1 + Dirección: %1 + Направление: %1° + Směr: %1 + Direction %1 + Windrichtung: %1 + Irány: %1 + Direzione: %1° + Direção: %1 + + + Speed: %1 m/s + Prędkość: %1 + Velocidad: %1 m/s + Скорость: %1 м/с + Rychlost: %1 m/s + Vitesse %1 m/s + Geschwindigkeit: %1 m/s + Sebesség: %1 m/s + Velocità: %1 m/s + Velocidade: %1 m/s + + + Weather Information + Informacje o pogodzie + Información Meteorológica + Информация о погоде + Informace o počasí + Météo + Wetterinformationen + Időjárás-Információ + Meteo + Informação Meteorológica + + + Humidity: %1% + Wilgotność: %1 + Humedad: %1% + Влажность: %1% + Vlhkost: %1% + Humidité: %1% + Luftfeuchtigkeit: %1 + Páratartalom: %1% + Umidità: %1% + Humidade: %1% + + + Wind Deflection + Wpływ wiatru + Desviación por viento + + + Wind Deflection + Wpływ wiatru + Desviación por viento + + + Enables wind deflection + Aktywuje wpływ wiatru na trajektorię lotu pocisków + Activa la desviación por viento + + + Vehicle Enabled + Włączone dla pojazdów + Habilitada en vehículos + + + Enables wind deflection for static/vehicle gunners + Aktywuje wpływ wiatru na trajektorię lotu pocisków dla broni statycznej i na pojazdach + Habilita la desviación por viento para artilleros estaticos/de vehículos + + + Simulation Interval + Interwał symulacji + Intervalo de simulación + + + Defines the interval between every calculation step + Określa interwał pomiędzy każdym krokiem kalkulacji + Define el intervalo entre cada calculo + + + Simulation Radius + Zasięg symulacji + Radio de simulación + + + Defines the radius around the player (in meters) at which projectiles are wind deflected + Określa obszar naokoło gracza (w metrach), na którym pociski są znoszone przez wiatr + Define el radio alrededor del jugador (en metros) en el cual los proyectiles son desviados por el viento + + + Wind influence on projectiles trajectory + Wpływ wiatru na trajektorię lotu pocisków + Influencia del viento en la trayectoria de proyectiles + \ No newline at end of file From 1c58ff823d06fc61af84cc63eccfa8704ef76213 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 27 May 2015 21:58:35 +0200 Subject: [PATCH 074/252] Stringtable fixes medical --- addons/medical/CfgVehicles.hpp | 176 ++++++++++++++++----------------- addons/medical/stringtable.xml | 166 +++++++++++++++---------------- 2 files changed, 171 insertions(+), 171 deletions(-) diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 53767abf19..a60df99438 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -11,7 +11,7 @@ class CfgVehicles { class ACE_Module; class ACE_moduleMedicalSettings: ACE_Module { scope = 2; - displayName = CSTRING(Module_DisplayName); + displayName = CSTRING(MedicalSettings_Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(DFUNC(moduleMedicalSettings)); @@ -21,74 +21,74 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class level { - displayName = CSTRING(level_DisplayName); - description = CSTRING(level_Description); + displayName = CSTRING(MedicalSettings_level_DisplayName); + description = CSTRING(MedicalSettings_); typeName = "NUMBER"; class values { class normal { - name = CSTRING(basic); + name = CSTRING(MedicalSettings_basic); value = 1; default = 1; }; class full { - name = CSTRING(advanced); + name = CSTRING(MedicalSettings_advanced); value = 2; }; }; }; class medicSetting { - displayName = CSTRING(medicSetting_DisplayName); - description = CSTRING(medicSetting_Description); + displayName = CSTRING(MedicalSettings_medicSetting_DisplayName); + description = CSTRING(MedicalSettings_medicSetting_Description); typeName = "NUMBER"; class values { class disable { - name = CSTRING(medicSetting_disable); + name = CSTRING(MedicalSettings_medicSetting_disable); value = 0; }; class normal { - name = CSTRING(basic); + name = CSTRING(MedicalSettings_basic); value = 1; default = 1; }; class full { - name = CSTRING(advanced); + name = CSTRING(MedicalSettings_advanced); value = 2; }; }; }; class allowLitterCreation { - displayName = CSTRING(allowLitterCreation_DisplayName); - description = CSTRING(allowLitterCreation_Description); + displayName = CSTRING(MedicalSettings_allowLitterCreation_DisplayName); + description = CSTRING(MedicalSettings_allowLitterCreation_Description); typeName = "BOOL"; defaultValue = 1; }; class litterCleanUpDelay { - displayName = CSTRING(litterCleanUpDelay_DisplayName); - description = CSTRING(litterCleanUpDelay_Description); + displayName = CSTRING(MedicalSettings_litterCleanUpDelay_DisplayName); + description = CSTRING(MedicalSettings_litterCleanUpDelay_Description); typeName = "NUMBER"; defaultValue = 1800; }; class enableScreams { - displayName = CSTRING(enableScreams_DisplayName); - description = CSTRING(enableScreams_Description); + displayName = CSTRING(MedicalSettings_enableScreams_DisplayName); + description = CSTRING(MedicalSettings_enableScreams_Description); typeName = "BOOL"; defaultValue = 1; }; class playerDamageThreshold { - displayName = CSTRING(playerDamageThreshold_DisplayName); - description = CSTRING(playerDamageThreshold_Description); + displayName = CSTRING(MedicalSettings_playerDamageThreshold_DisplayName); + description = CSTRING(MedicalSettings_playerDamageThreshold_Description); typeName = "NUMBER"; defaultValue = 1; }; class AIDamageThreshold { - displayName = CSTRING(AIDamageThreshold_DisplayName); - description = CSTRING(AIDamageThreshold_Description); + displayName = CSTRING(MedicalSettings_AIDamageThreshold_DisplayName); + description = CSTRING(MedicalSettings_AIDamageThreshold_Description); typeName = "NUMBER"; defaultValue = 1; }; class enableUnconsciousnessAI { - displayName = CSTRING(enableUnconsciousnessAI_DisplayName); - description = CSTRING(enableUnconsciousnessAI_Description); + displayName = CSTRING(MedicalSettings_enableUnconsciousnessAI_DisplayName); + description = CSTRING(MedicalSettings_enableUnconsciousnessAI_Description); typeName = "NUMBER"; class values { class disable { @@ -107,39 +107,39 @@ class CfgVehicles { }; }; class preventInstaDeath { - displayName = CSTRING(preventInstaDeath_DisplayName); - description = CSTRING(preventInstaDeath_Description); + displayName = CSTRING(MedicalSettings_preventInstaDeath_DisplayName); + description = CSTRING(MedicalSettings_preventInstaDeath_Description); typeName = "BOOL"; defaultValue = 0; }; class bleedingCoefficient { - displayName = CSTRING(bleedingCoefficient_DisplayName); - description = CSTRING(bleedingCoefficient_Description); + displayName = CSTRING(MedicalSettings_bleedingCoefficient_DisplayName); + description = CSTRING(MedicalSettings_bleedingCoefficient_Description); typeName = "NUMBER"; defaultValue = 1; }; class painCoefficient { - displayName = CSTRING(painCoefficient_DisplayName); - description = CSTRING(painCoefficient_Description); + displayName = CSTRING(MedicalSettings_painCoefficient_DisplayName); + description = CSTRING(MedicalSettings_painCoefficient_Description); typeName = "NUMBER"; defaultValue = 1; }; class keepLocalSettingsSynced { - displayName = CSTRING(keepLocalSettingsSynced_DisplayName); - description = CSTRING(keepLocalSettingsSynced_Description); + displayName = CSTRING(MedicalSettings_keepLocalSettingsSynced_DisplayName); + description = CSTRING(MedicalSettings_keepLocalSettingsSynced_Description); typeName = "BOOL"; defaultValue = 1; }; }; class ModuleDescription { - description = CSTRING(Module_Description); + description = CSTRING(MedicalSettings_Module_Description); sync[] = {}; }; }; class ACE_moduleAdvancedMedicalSettings: ACE_Module { scope = 2; - displayName = CSTRING(Module_DisplayName); + displayName = CSTRING(AdvancedMedicalSettings_Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(FUNC(moduleAdvancedMedicalSettings)); @@ -150,8 +150,8 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class enableFor { - displayName = CSTRING(enableFor_DisplayName); - description = CSTRING(enableFor_Description); + displayName = CSTRING(AdvancedMedicalSettings_enableFor_DisplayName); + description = CSTRING(AdvancedMedicalSettings_enableFor_Description); typeName = "NUMBER"; class values { class playableUnits { @@ -166,30 +166,30 @@ class CfgVehicles { }; }; class enableAdvancedWounds { - displayName = CSTRING(enableAdvancedWounds_DisplayName); - description = CSTRING(enableAdvancedWounds_Description); + displayName = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_DisplayName); + description = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_Description); typeName = "BOOL"; defaultValue = 0; }; class enableVehicleCrashes { - displayName = CSTRING(enableVehicleCrashes_DisplayName); - description = CSTRING(enableVehicleCrashes_Description); + displayName = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_DisplayName); + description = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_Description); typeName = "BOOL"; defaultValue = 1; }; class medicSetting_PAK { - displayName = CSTRING(medicSetting_PAK_DisplayName); - description = CSTRING(medicSetting_PAK_Description); + displayName = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_DisplayName); + description = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_Description); typeName = "NUMBER"; class values { - class anyone { name = CSTRING(anyone); value = 0; }; - class Medic { name = CSTRING(Medic); value = 1; default = 1; }; - class Special { name = CSTRING(Special); value = 2; }; + class anyone { name = CSTRING(AdvancedMedicalSettings_anyone); value = 0; }; + class Medic { name = CSTRING(AdvancedMedicalSettings_Medic); value = 1; default = 1; }; + class Special { name = CSTRING(AdvancedMedicalSettings_Special); value = 2; }; }; }; class consumeItem_PAK { - displayName = CSTRING(consumeItem_PAK_DisplayName); - description = CSTRING(consumeItem_PAK_Description); + displayName = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_DisplayName); + description = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_Description); typeName = "NUMBER"; class values { @@ -198,33 +198,33 @@ class CfgVehicles { }; }; class useLocation_PAK { - displayName = CSTRING(useLocation_PAK_DisplayName); - description = CSTRING(useLocation_PAK_Description); + displayName = CSTRING(AdvancedMedicalSettings_useLocation_PAK_DisplayName); + description = CSTRING(AdvancedMedicalSettings_useLocation_PAK_Description); typeName = "NUMBER"; class values { - class anywhere { name = CSTRING(anywhere); value = 0; }; - class vehicle { name = CSTRING(vehicle); value = 1; }; - class facility { name = CSTRING(facility); value = 2; }; - class vehicleAndFacility { name = CSTRING(vehicleAndFacility); value = 3; default = 1; }; - class disabled { name = CSTRING(disabled); value = 4;}; + class anywhere { name = CSTRING(AdvancedMedicalSettings_anywhere); value = 0; }; + class vehicle { name = CSTRING(AdvancedMedicalSettings_vehicle); value = 1; }; + class facility { name = CSTRING(AdvancedMedicalSettings_facility); value = 2; }; + class vehicleAndFacility { name = CSTRING(AdvancedMedicalSettings_vehicleAndFacility); value = 3; default = 1; }; + class disabled { name = CSTRING(AdvancedMedicalSettings_disabled); value = 4;}; }; }; class medicSetting_SurgicalKit: medicSetting_PAK { - displayName = CSTRING(medicSetting_SurgicalKit_DisplayName); - description = CSTRING(medicSetting_SurgicalKit_Description); + displayName = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName); + description = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_Description); }; class consumeItem_SurgicalKit: consumeItem_PAK { - displayName = CSTRING(consumeItem_SurgicalKit_DisplayName); - description = CSTRING(consumeItem_SurgicalKit_Description); + displayName = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName); + description = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_Description); }; class useLocation_SurgicalKit: useLocation_PAK { - displayName = CSTRING(useLocation_SurgicalKit_DisplayName); - description = CSTRING(useLocation_SurgicalKit_Description); + displayName = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName); + description = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_Description); }; }; class ModuleDescription { - description = CSTRING(Module_Description); + description = CSTRING(AdvancedMedicalSettings_Module_Description); sync[] = {}; }; }; @@ -232,7 +232,7 @@ class CfgVehicles { class ACE_moduleReviveSettings: ACE_Module { scope = 2; - displayName = CSTRING(Module_DisplayName); + displayName = CSTRING(ReviveSettings_Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(DFUNC(moduleReviveSettings)); @@ -242,8 +242,8 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class enableRevive { - displayName = CSTRING(enableRevive_DisplayName); - description = CSTRING(enableRevive_Description); + displayName = CSTRING(ReviveSettings_enableRevive_DisplayName); + description = CSTRING(ReviveSettings_enableRevive_Description); typeName = "NUMBER"; defaultValue = 0; class values { @@ -253,26 +253,26 @@ class CfgVehicles { }; }; class maxReviveTime { - displayName = CSTRING(maxReviveTime_DisplayName); - description = CSTRING(maxReviveTime_Description); + displayName = CSTRING(ReviveSettings_maxReviveTime_DisplayName); + description = CSTRING(ReviveSettings_maxReviveTime_Description); typeName = "NUMBER"; defaultValue = 120; }; class amountOfReviveLives { - displayName = CSTRING(amountOfReviveLives_DisplayName); - description = CSTRING(amountOfReviveLives_Description); + displayName = CSTRING(ReviveSettings_amountOfReviveLives_DisplayName); + description = CSTRING(ReviveSettings_amountOfReviveLives_Description); typeName = "NUMBER"; defaultValue = -1; }; }; class ModuleDescription { - description = CSTRING(Module_Description); + description = CSTRING(ReviveSettings_Module_Description); sync[] = {}; }; }; class ACE_moduleAssignMedicRoles: Module_F { scope = 2; - displayName = CSTRING(Module_DisplayName); + displayName = CSTRING(AssignMedicRoles_Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(FUNC(moduleAssignMedicRoles)); @@ -283,41 +283,41 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class EnableList { - displayName = CSTRING(EnableList_DisplayName); - description = CSTRING(EnableList_Description); + displayName = CSTRING(AssignMedicRoles_EnableList_DisplayName); + description = CSTRING(AssignMedicRoles_EnableList_Description); defaultValue = ""; typeName = "STRING"; }; class role { - displayName = CSTRING(role_DisplayName); - description = CSTRING(role_Description); + displayName = CSTRING(AssignMedicRoles_role_DisplayName); + description = CSTRING(AssignMedicRoles_role_Description); typeName = "NUMBER"; class values { class none { - name = CSTRING(role_none); + name = CSTRING(AssignMedicRoles_role_none); value = 0; }; class medic { - name = CSTRING(role_medic); + name = CSTRING(AssignMedicRoles_role_medic); value = 1; default = 1; }; class doctor { - name = CSTRING(role_doctor); + name = CSTRING(AssignMedicRoles_role_doctor); value = 2; }; }; }; }; class ModuleDescription { - description = CSTRING(Module_Description); + description = CSTRING(AssignMedicRoles_Module_Description); sync[] = {}; }; }; class ACE_moduleAssignMedicVehicle: Module_F { scope = 2; - displayName = CSTRING(Module_DisplayName); + displayName = CSTRING(AssignMedicVehicle_Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(FUNC(moduleAssignMedicalVehicle)); @@ -328,14 +328,14 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class EnableList { - displayName = CSTRING(EnableList_DisplayName); - description = CSTRING(EnableList_Description); + displayName = CSTRING(AssignMedicVehicle_EnableList_DisplayName); + description = CSTRING(AssignMedicVehicle_EnableList_Description); defaultValue = ""; typeName = "STRING"; }; class enabled { - displayName = CSTRING(enabled_DisplayName); - description = CSTRING(enabled_Description); + displayName = CSTRING(AssignMedicVehicle_enabled_DisplayName); + description = CSTRING(AssignMedicVehicle_enabled_Description); typeName = "NUMBER"; class values { @@ -352,13 +352,13 @@ class CfgVehicles { }; }; class ModuleDescription { - description = CSTRING(Module_Description); + description = CSTRING(AssignMedicVehicle_Module_Description); sync[] = {}; }; }; class ACE_moduleAssignMedicalFacility: Module_F { scope = 2; - displayName = CSTRING(Module_DisplayName); + displayName = CSTRING(AssignMedicalFacility_Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(FUNC(moduleAssignMedicalFacility)); @@ -369,13 +369,13 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class enabled { - displayName = CSTRING(enabled_DisplayName); - description = CSTRING(enabled_Description); + displayName = CSTRING(AssignMedicalFacility_enabled_DisplayName); + description = CSTRING(AssignMedicalFacility_enabled_Description); typeName = "BOOL"; }; }; class ModuleDescription { - description = CSTRING(Module_Description); + description = CSTRING(AssignMedicalFacility_Module_Description); sync[] = {}; }; }; @@ -898,7 +898,7 @@ class CfgVehicles { class ACE_medicalSupplyCrate: NATO_Box_Base { scope = 2; accuracy = 1000; - displayName = "$STR_ACE_medicalSupplyCrate"; + displayName = CSTRING(medicalSupplyCrate); model = PATHTOF(data\ace_medcrate.p3d); author = "$STR_ACE_Common_ACETeam"; class TransportItems { @@ -933,7 +933,7 @@ class CfgVehicles { }; }; class ACE_medicalSupplyCrate_advanced: ACE_medicalSupplyCrate { - displayName = CSTRING(advanced); + displayName = CSTRING(medicalSupplyCrate_advanced); class TransportItems { class ACE_fieldDressing { name = "ACE_fieldDressing"; diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 6be791a7ca..25b3952a0b 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -2706,102 +2706,102 @@ ACE Opcje medyczne Médico ACE - + Medical Settings [ACE] Ustawienia medyczne [ACE] Ajustes médicos [ACE] - + Medical Level Poziom medyczny Nivel médico - + What is the medical simulation level? Jaki jest poziom symulacji medycznej? ¿Cuál es el nivel de simulación médica? - + Basic Podstawowy Básico - + Advanced Zaawansowany Avanzado - + Medics setting Poziom medyków Configuración médica - + What is the level of detail prefered for medics? Jaki jest poziom detali medycznych wyświetlanych dla medyków? ¿Cuál es el nivel de detalle preferido para los médicos? - + Disable medics Wyłącz medyków Desactivar médicos - + Enable Litter Aktywuj odpadki Activar restos médicos - + Enable litter being created upon treatment Twórz odpadki medyczne podczas leczenia Activar los restos médicos que se crean en el tratamiento - + Life time of litter objects Długość życia odpadków Tiempo de vida de los restos médicos - + How long should litter objects stay? In seconds. -1 is forever. Ile czasu musi upłynąć, aby odpadki zaczęły znikać? W sekundach. -1 dla nieskończoności. ¿Por cuánto tiempo deben permanecer los restos médicos? En segundos. -1 es para siempre. - + Enable Screams Aktywuj wrzaski Activar gritos - + Enable screaming by injuried units Aktywuj wrzeszczenie z bólu przez ranne jednostki Activar gritos para unidades heridas - + Player Damage Próg obrażeń graczy Daño de jugador - + What is the damage a player can take before being killed? Jaki jest próg obrażeń, jakie gracz może otrzymać zanim zostanie zabity? ¿Cuál es el daño que un jugador puede sufrir antes de morir? - + AI Damage Próg obrażeń AI Daño IA - + What is the damage an AI can take before being killed? Jaki jest próg obrażeń, jakie AI może otrzymać zanim zostanie zabite? ¿Cuál es el daño que la IA puede sufrir antes de morir? - + AI Unconsciousness Nieprzytomność AI Inconsciencia IA - + Allow AI to go unconscious Czy AI może być nieprzytomne od odniesionych obrażeń? Permita a la IA caer inconsciente @@ -2816,47 +2816,47 @@ Włączone Desactivado - + Prevent instant death Wył. natychmiast. śmierć Prevenir muerte instantánea - + Have a unit move to unconscious instead of death Spraw, aby jednostka została przeniesiona do stanu nieprzytomności zamiast ginąć na miejscu od śmiertelnych obrażeń Mover una unidad a inconsciente en vez de a muerta - + Bleeding coefficient Mnożnik krwawienia Coeficiente de sangrado - + Coefficient to modify the bleeding speed Mnożnik modyfikujący prędkość wykrwawiania się Coeficiente para modificar la velocidad de sangrado - + Pain coefficient Mnożnik bólu Coeficiente de dolor - + Coefficient to modify the pain intensity Mnożnik modyfikujący intensywność bólu Coeficiente para modificar la intensidad del dolor - + Sync status Synchronizuj status Sincronizador estado - + Keep unit status synced. Recommended on. Utrzymuj synchronizację statusu jednostek. Zalecane zostawienie tej opcji włączonej. Mantener el estado de la unidad sincronizado. Recomendado activado - + Provides a medical system for both players and AI. Moduł ten dostarcza system medyczny dla graczy oraz AI. Proporciona un sistema médico para jugadores e IA. @@ -2886,271 +2886,271 @@ Gracze oraz AI Jugadors e IA - + Enable Advanced wounds Akt. zaawansowane rany Activa heridas avanzadas - + Allow reopening of bandaged wounds? Pozwól na otwieranie się zabandażowanych ran? Permitir la reapertura de las heridas vendadas? - + Vehicle Crashes Obrażenia od kolizji Accidentes de vehículos - + Do units take damage from a vehicle crash? Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów? ¿Las unidades reciben daño de un accidente de tráfico? - + Allow PAK Ust. apteczek osobistych Permitir EPA - + Who can use the PAK for full heal? Kto może skorzystać z apteczki osobistej w celu pełnego uleczenia? ¿Quién puede utilizar el EPA para una cura completa? - + Anyone Wszyscy Nadie - + Medics only Tylko medycy Solo médicos - + Doctors only Tylko doktorzy Solo doctores - + Remove PAK on use Usuń apteczkę po użyciu Eliminar EPA después del uso - + Should PAK be removed on usage? Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu? El EPA será eliminado después de usarlo - + Locations PAK Ogr. apteczek osobistych Ubicacions del EPA - + Where can the personal aid kit be used? Gdzie można korzystać z apteczek osobistych? ¿Dónde se puede utilizar el equipo de primeros auxilios? - + Anywhere Wszędzie Donde sea - + Medical vehicles Pojazdy medyczne Vehiculos médicos - + Medical facility Budynki medyczne Centro médico - + Vehicles & facility Pojazdy i budynki medyczne Vehículos y centros - + Disabled Wyłączone Desactivado - + Allow Surgical kit (Adv) Ust. zestawu chirurg. Permitir equipo quirúrgico (Avanzado) - + Who can use the surgical kit? Kto może skorzystać z zestawu chirurgicznego w celu zszycia ran? ¿Quién puede utilizar el equipo quirúrgico? - + Remove Surgical kit (Adv) Usuń zest. chir. po użyciu Eliminar equipo quirúrgico (Avanzado) - + Should Surgical kit be removed on usage? Czy zestaw chirurgiczny powinien zniknąć z ekwipunku po jego użyciu? Eliminar el equipo quirúrgico después del uso - + Locations Surgical kit (Adv) Ogr. zestawu chirurg. Ubicaciones del equipo quirúrgico (Avanzado) - + Where can the Surgical kit be used? Gdzie można korzystać z zestawu chirurgicznego? Dónde se puede utilizar el equipo quirúrgico - + Configure the treatment settings from ACE Medical Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE Configure las opciones de tratamiento del ACE Médico - + Revive Settings [ACE] Ustawienia wskrzeszania [ACE] Sistema de resucitado [ACE] - + Enable Revive Aktywuj wskrzeszanie Habilitar resucitado - + Enable a basic revive system Aktywuj podstawowy system wskrzeszania Habilitar un sistema básico de resucitado - + Max Revive time Maks. czas agonii Tiempo máximo de resucitado - + Max amount of seconds a unit can spend in revive state Maksymalna długość agonii w sekundach (czas na wskrzeszenie) Cantidad máxima de segundos que una unidad puede gastar en estado de resucitación - + Max Revive lives Maks. ilość wskrzeszeń Vidas máximas de resucitado - + Max amount of lives a unit. 0 or -1 is disabled. Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć. Cantidad máxima de vidas por unidad. 0 o -1 es desactivado. - + Provides a medical system for both players and AI. Moduł ten aktywuje podstawowy system wskrzeszania. Jednostka po otrzymaniu śmiertelnych obrażeń przechodzi do stanu agonii, która trwa określoną długość czasu. W tym czasie aby wskrzesić i jednocześnie odratować jednostkę należy opatrzeć jej rany i wykonać RKO. Proporciona un sistema médico para jugadores e IA. - + Set Medic Class [ACE] Ustaw klasę medyka [ACE] Establecer case médica [ACE] - + List Lista Lista - + List of unit names that will be classified as medic, separated by commas. Lista nazw jednostek, które są sklasyfikowane jako medycy, oddzielone przecinkami. Lista de los nombres de las unidades que se clasifican como médico, separados por comas. - + Is Medic Klasa medyczna Es médico - + - + None Żadna Nada - + Regular medic Zwykły medyk Médico regular - + Doctor (Only Advanced Medics) Doktor (tylko zaawansowani medycy) Doctor (Solo medicina avanzada) - + Assigns the ACE medic class to a unit Moduł ten przypisuje klasę medyka ACE do jednostek. Asigna la clase médico ACE a una unidad - + Set Medical Vehicle [ACE] Ustaw pojazd medyczny [ACE] Establecer vehículos médicos [ACE] - + List Lista Lista - + List of vehicles that will be classified as medical vehicle, separated by commas. Lista nazw pojazdów, które są sklasyfikowane jako pojazdy medyczne, oddzielone przecinkami. Lista de los vehículos que se clasifican como vehículo médicos, separados por comas. - + Is Medical Vehicle Jest pojazdem med. Es vehículo médico - + Whatever or not the objects in the list will be a medical vehicle. Czy pojazdy z tej listy są pojazdami medycznymi. Cualquiera de la lista o fuera de ella será un vehículo médico. - + Assigns the ACE medic class to a unit Moduł ten pozwala na przypisanie danym pojazdom statusu pojazdów medycznych. Wewnątrz takiego pojazdu można wykonywać zaawansowane zabiegi medyczne. Asigna la clase médico ACE a una unidad - + Set Medical Facility [ACE] Ustaw budynek medyczny [ACE] Establece el centro médico [ACE] - + Is Medical Facility Jest budynkiem med. Es centro médico - + Registers an object as a medical facility Przypisuje danemu obiektowi status budynku medycznego Registra un objeto como un centro médico - + Defines an object as a medical facility. This allows for more advanced treatments. Can be used on buildings and vehicles. Moduł ten pozwala przypisać status budynku medycznego danemu obiektowi. Budynek taki pozwala na wykonywanie zaawansowanych zabiegów medycznych. Może być użyte na pojazdach i budynkach. Define un objeto como un centro médico. Esto permite tratamientos más avanzados. Se puede utilizar en edificios y vehículos. - + [ACE] Medical Supply Crate (Basic) [ACE] Skrzynka z zapasami medycznymi (podstawowa) [ACE] Caja de suministros médicos (Básica) - + [ACE] Medical Supply Crate (Advanced) [ACE] Skrzynka z zapasami medycznymi (zaawansowana) [ACE] Caja de suministros médicos (Avanzada) From a99c02ff02410c50e719ee2a7c8c563de019efa1 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 27 May 2015 22:02:03 +0200 Subject: [PATCH 075/252] Added ESTRING and ECSTRING for external module references --- addons/main/script_macros.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index 77ad0199f1..9e92a2525d 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -23,7 +23,9 @@ #define PATHTOEF(var1,var2) PATHTOF_SYS(PREFIX,var1,var2) #define STRING(var1) QUOTE(TRIPLES(STR,ADDON,var1)) +#define ESTRING(var1,var2) QUOTE(TRIPLES(STR,DOUBLES(PREFIX,var1),var2)) #define CSTRING(var1) QUOTE(TRIPLES($STR,ADDON,var1)) +#define ECSTRING(var1,var2) QUOTE(TRIPLES($STR,DOUBLES(PREFIX,var1),var2)) #define GETVAR_SYS(var1,var2) getVariable [ARR_2(QUOTE(var1),var2)] #define SETVAR_SYS(var1,var2) setVariable [ARR_2(QUOTE(var1),var2)] From 0b0f7274d7ab8504292ca72aad5577bbebeace96 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 27 May 2015 22:04:41 +0200 Subject: [PATCH 076/252] Applied ESTRING and ECSTRING macros --- addons/attach/CfgWeapons.hpp | 2 +- addons/ballistics/CfgMagazines.hpp | 64 +++++++++---------- addons/ballistics/CfgVehicles.hpp | 4 +- addons/captives/CfgVehicles.hpp | 2 +- addons/disposable/CfgMagazines.hpp | 4 +- addons/disposable/CfgWeapons.hpp | 2 +- addons/explosives/CfgModule.hpp | 2 +- addons/flashsuppressors/CfgWeapons.hpp | 14 ++-- addons/grenades/CfgMagazines.hpp | 14 ++-- addons/hearing/CfgVehicles.hpp | 2 +- addons/interaction/CfgVehicles.hpp | 2 +- addons/laserpointer/CfgWeapons.hpp | 6 +- addons/logistics_wirecutter/CfgWeapons.hpp | 2 +- addons/map/CfgVehicles.hpp | 4 +- addons/medical/CfgVehicles.hpp | 42 ++++++------ addons/microdagr/CfgVehicles.hpp | 4 +- addons/microdagr/CfgWeapons.hpp | 2 +- addons/missionmodules/CfgVehicles.hpp | 2 +- addons/mk6mortar/CfgVehicles.hpp | 2 +- addons/mk6mortar/CfgWeapons.hpp | 2 +- addons/nametags/CfgVehicles.hpp | 2 +- addons/nightvision/CfgWeapons.hpp | 10 +-- addons/optics/CfgWeapons.hpp | 22 +++---- addons/optionsmenu/CfgVehicles.hpp | 2 +- addons/parachute/CfgVehicles.hpp | 2 +- addons/parachute/CfgWeapons.hpp | 2 +- addons/reloadlaunchers/functions/fnc_load.sqf | 2 +- addons/respawn/CfgVehicles.hpp | 18 +++--- addons/switchunits/CfgVehicles.hpp | 2 +- addons/vector/CfgVehicles.hpp | 2 +- addons/vector/CfgWeapons.hpp | 2 +- addons/vehiclelock/CfgVehicles.hpp | 4 +- addons/vehiclelock/CfgWeapons.hpp | 2 +- addons/viewdistance/CfgVehicles.hpp | 2 +- addons/weather/CfgVehicles.hpp | 2 +- addons/winddeflection/CfgVehicles.hpp | 2 +- 36 files changed, 128 insertions(+), 128 deletions(-) diff --git a/addons/attach/CfgWeapons.hpp b/addons/attach/CfgWeapons.hpp index 82276bdc66..3ad2591f63 100644 --- a/addons/attach/CfgWeapons.hpp +++ b/addons/attach/CfgWeapons.hpp @@ -5,7 +5,7 @@ class CfgWeapons { class ACE_IR_Strobe_Item: ACE_ItemCore { ACE_attachable = "ACE_IR_Strobe_Effect"; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); scope = 2; displayName = CSTRING(IrStrobe_Name); descriptionShort = CSTRING(IrStrobe_Description); diff --git a/addons/ballistics/CfgMagazines.hpp b/addons/ballistics/CfgMagazines.hpp index 283ae07c26..e368381333 100644 --- a/addons/ballistics/CfgMagazines.hpp +++ b/addons/ballistics/CfgMagazines.hpp @@ -12,7 +12,7 @@ class CfgMagazines { initSpeed = 760; }; class ACE_100Rnd_65x39_caseless_mag_Tracer_Dim: 100Rnd_65x39_caseless_mag_Tracer { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_65x39_Caseless_Tracer_Dim"; displayName = CSTRING(100Rnd_65x39_caseless_mag_Tracer_DimName); displayNameShort = CSTRING(100Rnd_65x39_caseless_mag_Tracer_DimNameShort); @@ -23,7 +23,7 @@ class CfgMagazines { initSpeed = 760; }; class ACE_200Rnd_65x39_cased_Box_Tracer_Dim: 200Rnd_65x39_cased_Box { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_65x39_Caseless_Tracer_Dim"; displayName = CSTRING(200Rnd_65x39_cased_Box_Tracer_DimName); displayNameShort = CSTRING(200Rnd_65x39_cased_Box_Tracer_DimNameShort); @@ -32,7 +32,7 @@ class CfgMagazines { }; class 30Rnd_65x39_caseless_mag_Tracer; class ACE_30Rnd_65x39_caseless_mag_Tracer_Dim: 30Rnd_65x39_caseless_mag_Tracer { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_65x39_Caseless_Tracer_Dim"; displayName = CSTRING(30Rnd_65x39_caseless_mag_Tracer_DimName); displayNameShort = CSTRING(30Rnd_65x39_caseless_mag_Tracer_DimNameShort); @@ -40,7 +40,7 @@ class CfgMagazines { }; class 30Rnd_65x39_caseless_green_mag_Tracer; class ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim: 30Rnd_65x39_caseless_green_mag_Tracer { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_65x39_Caseless_green_Tracer_Dim"; displayName = CSTRING(30Rnd_65x39_caseless_green_mag_Tracer_DimName); displayNameShort = CSTRING(30Rnd_65x39_caseless_green_mag_Tracer_DimNameShort); @@ -50,7 +50,7 @@ class CfgMagazines { class 30Rnd_556x45_Stanag: CA_Magazine { }; class ACE_30Rnd_556x45_Stanag_M995_AP_mag: 30Rnd_556x45_Stanag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_556x45_Ball_M995_AP"; displayName = CSTRING(30Rnd_556x45_Stanag_M995_AP_mag_Name); displayNameShort = CSTRING(30Rnd_556x45_Stanag_M995_AP_mag_NameShort); @@ -58,7 +58,7 @@ class CfgMagazines { initSpeed = 865; }; class ACE_30Rnd_556x45_Stanag_Mk262_mag: 30Rnd_556x45_Stanag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_556x45_Ball_Mk262"; displayName = CSTRING(30Rnd_556x45_Stanag_Mk262_mag_Name); displayNameShort = CSTRING(30Rnd_556x45_Stanag_Mk262_mag_NameShort); @@ -66,7 +66,7 @@ class CfgMagazines { initSpeed = 832; }; class ACE_30Rnd_556x45_Stanag_Mk318_mag: 30Rnd_556x45_Stanag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_556x45_Ball_Mk318"; displayName = CSTRING(30Rnd_556x45_Stanag_Mk318_mag_Name); displayNameShort = CSTRING(30Rnd_556x45_Stanag_Mk318_mag_NameShort); @@ -76,7 +76,7 @@ class CfgMagazines { class 30Rnd_556x45_Stanag_Tracer_Red: 30Rnd_556x45_Stanag { }; class ACE_30Rnd_556x45_Stanag_Tracer_Dim: 30Rnd_556x45_Stanag_Tracer_Red { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_B_556x45_Ball_Tracer_Dim"; displayName = CSTRING(30Rnd_556x45_mag_Tracer_DimName); displayNameShort = CSTRING(30Rnd_556x45_mag_Tracer_DimNameShort); @@ -97,7 +97,7 @@ class CfgMagazines { initSpeed = 833; }; class ACE_20Rnd_762x51_Mag_Tracer: 20Rnd_762x51_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "B_762x51_Tracer_Red"; displayName = CSTRING(20Rnd_762x51_mag_TracerName); displayNameShort = CSTRING(20Rnd_762x51_mag_TracerNameShort); @@ -106,7 +106,7 @@ class CfgMagazines { }; class ACE_20Rnd_762x51_Mag_Tracer_Dim: ACE_20Rnd_762x51_Mag_Tracer { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_B_762x51_Tracer_Dim"; displayName = CSTRING(20Rnd_762x51_mag_Tracer_DimName); displayNameShort = CSTRING(20Rnd_762x51_mag_Tracer_DimNameShort); @@ -114,7 +114,7 @@ class CfgMagazines { }; class ACE_20Rnd_762x51_Mag_SD: 20Rnd_762x51_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_762x51_Ball_Subsonic"; displayName = CSTRING(20Rnd_762x51_mag_SDName); displayNameShort = CSTRING(20Rnd_762x51_mag_SDNameShort); @@ -123,7 +123,7 @@ class CfgMagazines { }; class ACE_10Rnd_762x51_M118LR_Mag: 10Rnd_762x51_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_762x51_Ball_M118LR"; count = 10; displayName = CSTRING(10Rnd_762x51_M118LR_Mag_Name); @@ -132,7 +132,7 @@ class CfgMagazines { initSpeed = 780; }; class ACE_10Rnd_762x51_Mk316_Mod_0_Mag: 10Rnd_762x51_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_762x51_Ball_Mk316_Mod_0"; count = 10; displayName = CSTRING(10Rnd_762x51_Mk316_Mod_0_Mag_Name); @@ -141,7 +141,7 @@ class CfgMagazines { initSpeed = 790; }; class ACE_10Rnd_762x51_Mk319_Mod_0_Mag: 10Rnd_762x51_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_762x51_Ball_Mk319_Mod_0"; count = 10; displayName = CSTRING(10Rnd_762x51_Mk319_Mod_0_Mag_Name); @@ -150,7 +150,7 @@ class CfgMagazines { initSpeed = 900; }; class ACE_10Rnd_762x51_M993_AP_Mag: 10Rnd_762x51_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_762x51_Ball_M993_AP"; count = 10; displayName = CSTRING(10Rnd_762x51_M993_AP_Mag_Name); @@ -159,7 +159,7 @@ class CfgMagazines { initSpeed = 920; }; class ACE_20Rnd_762x51_M118LR_Mag: 20Rnd_762x51_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_762x51_Ball_M118LR"; displayName = CSTRING(20Rnd_762x51_M118LR_Mag_Name); displayNameShort = CSTRING(20Rnd_762x51_M118LR_Mag_NameShort); @@ -167,7 +167,7 @@ class CfgMagazines { initSpeed = 780; }; class ACE_20Rnd_762x51_Mk316_Mod_0_Mag: 20Rnd_762x51_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_762x51_Ball_Mk316_Mod_0"; count = 20; displayName = CSTRING(20Rnd_762x51_Mk316_Mod_0_Mag_Name); @@ -176,7 +176,7 @@ class CfgMagazines { initSpeed = 790; }; class ACE_20Rnd_762x51_Mk319_Mod_0_Mag: 20Rnd_762x51_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_762x51_Ball_Mk319_Mod_0"; displayName = CSTRING(20Rnd_762x51_Mk319_Mod_0_Mag_Name); displayNameShort = CSTRING(20Rnd_762x51_Mk319_Mod_0_Mag_NameShort); @@ -184,7 +184,7 @@ class CfgMagazines { initSpeed = 900; }; class ACE_20Rnd_762x51_M993_AP_Mag: 20Rnd_762x51_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_762x51_Ball_M993_AP"; count = 20; displayName = CSTRING(20Rnd_762x51_M993_AP_Mag_Name); @@ -193,7 +193,7 @@ class CfgMagazines { initSpeed = 920; }; class ACE_20Rnd_762x67_Mk248_Mod_0_Mag: 20Rnd_762x51_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_762x67_Ball_Mk248_Mod_0"; displayName = CSTRING(20Rnd_762x67_Mk248_Mod_0_Mag_Name); displayNameShort = CSTRING(20Rnd_762x67_Mk248_Mod_0_Mag_NameShort); @@ -201,7 +201,7 @@ class CfgMagazines { initSpeed = 900; }; class ACE_20Rnd_762x67_Mk248_Mod_1_Mag: 20Rnd_762x51_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_762x67_Ball_Mk248_Mod_1"; displayName = CSTRING(20Rnd_762x67_Mk248_Mod_1_Mag_Name); displayNameShort = CSTRING(20Rnd_762x67_Mk248_Mod_1_Mag_NameShort); @@ -209,7 +209,7 @@ class CfgMagazines { initSpeed = 880; }; class ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag: 20Rnd_762x51_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_762x67_Ball_Berger_Hybrid_OTM"; displayName = CSTRING(20Rnd_762x67_Berger_Hybrid_OTM_Mag_Name); displayNameShort = CSTRING(20Rnd_762x67_Berger_Hybrid_OTM_Mag_NameShort); @@ -217,14 +217,14 @@ class CfgMagazines { initSpeed = 832; }; class ACE_30Rnd_65x47_Scenar_mag: 30Rnd_65x39_caseless_mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_65x47_Ball_Scenar"; displayName = CSTRING(30Rnd_65x47_Scenar_mag_Name); displayNameShort = CSTRING(30Rnd_65x47_Scenar_mag_NameShort); descriptionShort = CSTRING(30Rnd_65x47_Scenar_mag_Description); }; class ACE_30Rnd_65_Creedmor_mag: 30Rnd_65x39_caseless_mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_65_Creedmor_Ball"; displayName = CSTRING(30Rnd_65_Creedmor_mag_Name); displayNameShort = CSTRING(30Rnd_65_Creedmor_mag_NameShort); @@ -232,7 +232,7 @@ class CfgMagazines { }; class 10Rnd_338_Mag; class ACE_10Rnd_338_300gr_HPBT_Mag: 10Rnd_338_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_338_Ball"; displayName = CSTRING(10Rnd_338_300gr_HPBT_Mag_Name); displayNameShort = CSTRING(10Rnd_338_300gr_HPBT_Mag_NameShort); @@ -240,7 +240,7 @@ class CfgMagazines { initSpeed = 800; }; class ACE_10Rnd_338_API526_Mag: 10Rnd_338_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_338_Ball_API526"; displayName = CSTRING(10Rnd_338_API526_Mag_Name); displayNameShort = CSTRING(10Rnd_338_API526_Mag_NameShort); @@ -250,7 +250,7 @@ class CfgMagazines { class 5Rnd_127x108_Mag; class ACE_5Rnd_127x99_Mag: 5Rnd_127x108_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "B_127x99_Ball"; displayName = CSTRING(5Rnd_127x99_Mag_Name); displayNameShort = CSTRING(5Rnd_127x99_Mag_NameShort); @@ -258,7 +258,7 @@ class CfgMagazines { initSpeed = 900; }; class ACE_5Rnd_127x99_API_Mag: 5Rnd_127x108_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_127x99_API"; displayName = CSTRING(5Rnd_127x99_API_Mag_Name); displayNameShort = CSTRING(5Rnd_127x99_API_Mag_NameShort); @@ -266,7 +266,7 @@ class CfgMagazines { initSpeed = 900; }; class ACE_5Rnd_127x99_AMAX_Mag: 5Rnd_127x108_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_127x99_Ball_AMAX"; displayName = CSTRING(5Rnd_127x99_AMAX_Mag_Name); displayNameShort = CSTRING(5Rnd_127x99_AMAX_Mag_NameShort); @@ -279,7 +279,7 @@ class CfgMagazines { initSpeed = 450; }; class ACE_30Rnd_9x19_mag: 30Rnd_9x21_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_9x19_Ball"; displayName = CSTRING(30Rnd_9x19_mag_Name); displayNameShort = CSTRING(30Rnd_9x19_mag_NameShort); @@ -311,7 +311,7 @@ class CfgMagazines { initSpeed = 450; }; class ACE_16Rnd_9x19_mag: 16Rnd_9x21_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_9x19_Ball"; displayName = CSTRING(16Rnd_9x19_mag_Name); displayNameShort = CSTRING(16Rnd_9x19_mag_NameShort); @@ -323,7 +323,7 @@ class CfgMagazines { initSpeed = 800; }; class ACE_10Rnd_762x54_Tracer_mag: 10Rnd_762x54_Mag { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_762x54_Ball_7T2"; displayName = CSTRING(10Rnd_762x54_Tracer_mag_Name); displayNameShort = CSTRING(10Rnd_762x54_Tracer_mag_NameShort); diff --git a/addons/ballistics/CfgVehicles.hpp b/addons/ballistics/CfgVehicles.hpp index c5bbb46a11..622dd7d0d1 100644 --- a/addons/ballistics/CfgVehicles.hpp +++ b/addons/ballistics/CfgVehicles.hpp @@ -2,7 +2,7 @@ class CfgVehicles { class Sign_F; class ACE_TargetWall: Sign_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); scope = 0; class Eventhandlers { init = QUOTE(_this call COMPILE_FILE(scripts\initTargetWall)); @@ -192,7 +192,7 @@ class CfgVehicles { accuracy = 1000; displayName = CSTRING(AmmoSupplyCrate_DisplayName); model = "\A3\weapons_F\AmmoBoxes\AmmoBox_F"; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); class TransportMagazines { MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_SD,4); MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M993_AP_Mag,4); diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index e0fff7c06c..2ff432d692 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -159,7 +159,7 @@ class CfgVehicles { }; class GVAR(ModuleSurrender): Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(ModuleSurrender_DisplayName); //Make Unit Surrender function = QUOTE(DFUNC(moduleSurrender)); diff --git a/addons/disposable/CfgMagazines.hpp b/addons/disposable/CfgMagazines.hpp index 5e2c926514..484fa36238 100644 --- a/addons/disposable/CfgMagazines.hpp +++ b/addons/disposable/CfgMagazines.hpp @@ -1,7 +1,7 @@ class CfgMagazines { class NLAW_F; class ACE_PreloadedMissileDummy: NLAW_F { // The dummy magazine - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); scope = 1; scopeArsenal = 1; displayName = CSTRING(PreloadedMissileDummy); @@ -13,7 +13,7 @@ class CfgMagazines { count = 0; }; class ACE_UsedTube_F: NLAW_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); displayName = CSTRING(UsedTube); descriptionShort = CSTRING(UsedTubeDescription); displayNameShort = "-"; diff --git a/addons/disposable/CfgWeapons.hpp b/addons/disposable/CfgWeapons.hpp index 724658dcc0..0ca6763d63 100644 --- a/addons/disposable/CfgWeapons.hpp +++ b/addons/disposable/CfgWeapons.hpp @@ -7,7 +7,7 @@ class CfgWeapons { class ACE_launch_NLAW_Used_F: launch_NLAW_F { // the used tube should be a sub class of the disposable launcher scope = 1; ACE_isUsedLauncher = 1; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); displayName = CSTRING(UsedTube); descriptionShort = CSTRING(UsedTubeDescription); magazines[] = {"ACE_FiredMissileDummy"}; // This will disable the used launcher class from being fired again. diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index 1e1f9bd62e..939f8821b2 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -3,7 +3,7 @@ class Module_F: Logic { class ModuleDescription {}; }; class ACE_ModuleExplosive: Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(Module_DisplayName); function = QUOTE(FUNC(module)); diff --git a/addons/flashsuppressors/CfgWeapons.hpp b/addons/flashsuppressors/CfgWeapons.hpp index 12ab5be2ab..198fec7316 100644 --- a/addons/flashsuppressors/CfgWeapons.hpp +++ b/addons/flashsuppressors/CfgWeapons.hpp @@ -230,7 +230,7 @@ class CfgWeapons { class InventoryMuzzleItem_Base_F; class ACE_muzzle_mzls_H: ItemCore { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_muzzle_mzls_H"; htMin = 1; htMax = 600; @@ -283,7 +283,7 @@ class CfgWeapons { }; class ACE_muzzle_mzls_B: ACE_muzzle_mzls_H { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_muzzle_mzls_B"; displayName = CSTRING(muzzle_mzls_B); picture = "\A3\weapons_F\Data\UI\gear_acca_mzls_h_ca.paa"; @@ -329,7 +329,7 @@ class CfgWeapons { }; class ACE_muzzle_mzls_L: ACE_muzzle_mzls_H { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_muzzle_mzls_L"; displayName = CSTRING(muzzle_mzls_L); picture = "\A3\weapons_F\Data\UI\gear_acca_mzls_l_ca.paa"; @@ -375,7 +375,7 @@ class CfgWeapons { }; class ACE_muzzle_mzls_smg_01: ACE_muzzle_mzls_H { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_muzzle_mzls_smg_01"; displayName = CSTRING(muzzle_mzls_smg_01); picture = "\A3\weapons_F\Data\UI\gear_acca_mzls_l_ca.paa"; @@ -421,7 +421,7 @@ class CfgWeapons { }; class ACE_muzzle_mzls_smg_02: ACE_muzzle_mzls_H { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_muzzle_mzls_smg_02"; displayName = CSTRING(muzzle_mzls_smg_02); picture = "\A3\weapons_F\Data\UI\gear_acca_mzls_l_ca.paa"; @@ -467,7 +467,7 @@ class CfgWeapons { }; class ACE_muzzle_mzls_338: ACE_muzzle_mzls_H { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_muzzle_mzls_338"; displayName = CSTRING(muzzle_mzls_338); picture = "\A3\weapons_F\Data\UI\gear_acca_mzls_h_ca.paa"; @@ -513,7 +513,7 @@ class CfgWeapons { }; class ACE_muzzle_mzls_93mmg: ACE_muzzle_mzls_H { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_muzzle_mzls_93mmg"; displayName = CSTRING(muzzle_mzls_93mmg); picture = "\A3\weapons_F\Data\UI\gear_acca_mzls_h_ca.paa"; diff --git a/addons/grenades/CfgMagazines.hpp b/addons/grenades/CfgMagazines.hpp index c90bba9d94..31e80dc545 100644 --- a/addons/grenades/CfgMagazines.hpp +++ b/addons/grenades/CfgMagazines.hpp @@ -9,7 +9,7 @@ class CfgMagazines { initSpeed = 22; }; class ACE_HandFlare_White: ACE_HandFlare_Base { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); scope = 2; ammo = "ACE_F_Hand_White"; displayname = CSTRING(M127A1_White_Name); @@ -19,7 +19,7 @@ class CfgMagazines { picture = "\A3\Weapons_F\Data\UI\gear_flare_white_ca.paa"; }; class ACE_HandFlare_Red: ACE_HandFlare_Base { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); scope = 2; ammo = "ACE_F_Hand_Red"; displayname = CSTRING(M127A1_Red_Name); @@ -29,7 +29,7 @@ class CfgMagazines { picture = "\A3\Weapons_F\Data\UI\gear_flare_red_ca.paa"; }; class ACE_HandFlare_Green: ACE_HandFlare_Base { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); scope = 2; ammo = "ACE_F_Hand_Green"; displayname = CSTRING(M127A1_Green_Name); @@ -39,7 +39,7 @@ class CfgMagazines { picture = "\A3\Weapons_F\Data\UI\gear_flare_green_ca.paa"; }; class ACE_HandFlare_Yellow: ACE_HandFlare_Base { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); scope = 2; ammo = "ACE_F_Hand_Yellow"; displayname = CSTRING(M127A1_Yellow_Name); @@ -49,7 +49,7 @@ class CfgMagazines { picture = "\A3\Weapons_F\Data\UI\gear_flare_yellow_ca.paa"; }; class ACE_M84: HandGrenade { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "ACE_G_M84"; displayname = CSTRING(M84_Name); descriptionshort = CSTRING(M84_Description); @@ -61,12 +61,12 @@ class CfgMagazines { class 3Rnd_UGL_FlareGreen_F; class 6Rnd_GreenSignal_F: 3Rnd_UGL_FlareGreen_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "F_40mm_Green"; initSpeed = 120; }; class 6Rnd_RedSignal_F: 6Rnd_GreenSignal_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); ammo = "F_40mm_Red"; initSpeed = 120; }; diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index e5cf6968c7..eb1586a6bc 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -96,7 +96,7 @@ class CfgVehicles { class Module_F; class ACE_ModuleHearing: Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(Module_DisplayName); function = QFUNC(moduleHearing); diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index f1572d6367..f29e69baa9 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -2,7 +2,7 @@ class CfgVehicles { class Module_F; class ACE_ModuleInteraction: Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(Module_DisplayName); function = "ACE_Interaction_fnc_moduleInteraction"; diff --git a/addons/laserpointer/CfgWeapons.hpp b/addons/laserpointer/CfgWeapons.hpp index 57f36c80d2..608d025a01 100644 --- a/addons/laserpointer/CfgWeapons.hpp +++ b/addons/laserpointer/CfgWeapons.hpp @@ -22,7 +22,7 @@ class CfgWeapons { ACE_laserpointer = 1; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_acc_pointer_red"; scope = 1; displayName = CSTRING(red); @@ -71,7 +71,7 @@ class CfgWeapons { ACE_nextModeClass = "ACE_acc_pointer_green"; ACE_modeDescription = CSTRING(IRLaser); - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_acc_pointer_green"; scope = 1; displayName = CSTRING(green); @@ -83,7 +83,7 @@ class CfgWeapons { ACE_laserpointer = 2; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_acc_pointer_green"; scope = 2; displayName = CSTRING(green); diff --git a/addons/logistics_wirecutter/CfgWeapons.hpp b/addons/logistics_wirecutter/CfgWeapons.hpp index e4cd605b8c..31de39cf2c 100644 --- a/addons/logistics_wirecutter/CfgWeapons.hpp +++ b/addons/logistics_wirecutter/CfgWeapons.hpp @@ -3,7 +3,7 @@ class CfgWeapons { class ACE_ItemCore; class ACE_wirecutter: ACE_ItemCore { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); displayName = CSTRING(wirecutterName); descriptionShort = CSTRING(wirecutterDescription); model = "\A3\weapons_F\ammo\mag_univ.p3d"; diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp index a6ce8b29dc..ad41480827 100644 --- a/addons/map/CfgVehicles.hpp +++ b/addons/map/CfgVehicles.hpp @@ -1,7 +1,7 @@ class CfgVehicles { class Module_F; class ACE_ModuleMap: Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(Module_DisplayName); function = QFUNC(moduleMap); @@ -40,7 +40,7 @@ class CfgVehicles { }; class ACE_ModuleBlueForceTracking: Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(BFT_Module_DisplayName); function = QFUNC(blueForceTrackingModule); diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index a60df99438..a098394cbd 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -18,7 +18,7 @@ class CfgVehicles { functionPriority = 1; isGlobal = 1; isTriggerActivated = 0; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); class Arguments { class level { displayName = CSTRING(MedicalSettings_level_DisplayName); @@ -147,7 +147,7 @@ class CfgVehicles { isGlobal = 2; isTriggerActivated = 0; isDisposable = 0; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); class Arguments { class enableFor { displayName = CSTRING(AdvancedMedicalSettings_enableFor_DisplayName); @@ -239,7 +239,7 @@ class CfgVehicles { functionPriority = 1; isGlobal = 1; isTriggerActivated = 0; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); class Arguments { class enableRevive { displayName = CSTRING(ReviveSettings_enableRevive_DisplayName); @@ -280,7 +280,7 @@ class CfgVehicles { isGlobal = 2; isTriggerActivated = 0; isDisposable = 0; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); class Arguments { class EnableList { displayName = CSTRING(AssignMedicRoles_EnableList_DisplayName); @@ -325,7 +325,7 @@ class CfgVehicles { isGlobal = 2; isTriggerActivated = 0; isDisposable = 0; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); class Arguments { class EnableList { displayName = CSTRING(AssignMedicVehicle_EnableList_DisplayName); @@ -366,7 +366,7 @@ class CfgVehicles { isGlobal = 2; isTriggerActivated = 0; isDisposable = 0; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); class Arguments { class enabled { displayName = CSTRING(AssignMedicalFacility_enabled_DisplayName); @@ -714,7 +714,7 @@ class CfgVehicles { scope = 2; scopeCurator = 2; displayName = $STR_ACE_Medical_Bandage_Basic_Display; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); vehicleClass = "Items"; class TransportItems { class ACE_fieldDressing { @@ -727,7 +727,7 @@ class CfgVehicles { scope = 2; scopeCurator = 2; displayName = $STR_ACE_Medical_Packing_Bandage_Display; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); vehicleClass = "Items"; class TransportItems { class ACE_packingBandage { @@ -740,7 +740,7 @@ class CfgVehicles { scope = 2; scopeCurator = 2; displayName = $STR_ACE_Medical_Bandage_Elastic_Display; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); vehicleClass = "Items"; class TransportItems { class ACE_elasticBandage { @@ -753,7 +753,7 @@ class CfgVehicles { scope = 2; scopeCurator = 2; displayName = $STR_ACE_Medical_Tourniquet_Display; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); vehicleClass = "Items"; class TransportItems { class ACE_tourniquet { @@ -766,7 +766,7 @@ class CfgVehicles { scope = 2; scopeCurator = 2; displayName = $STR_ACE_Medical_Morphine_Display; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); vehicleClass = "Items"; class TransportItems { class ACE_morphine { @@ -779,7 +779,7 @@ class CfgVehicles { scope = 2; scopeCurator = 2; displayName = $STR_ACE_Medical_Atropine_Display; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); vehicleClass = "Items"; class TransportItems { class ACE_atropine { @@ -792,7 +792,7 @@ class CfgVehicles { scope = 2; scopeCurator = 2; displayName = $STR_ACE_Medical_Epinephrine_Display; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); vehicleClass = "Items"; class TransportItems { class ACE_epinephrine { @@ -805,7 +805,7 @@ class CfgVehicles { scope = 2; scopeCurator = 2; displayName = $STR_ACE_Medical_Plasma_IV; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); vehicleClass = "Items"; class TransportItems { class ACE_plasmaIV { @@ -819,7 +819,7 @@ class CfgVehicles { scope = 2; scopeCurator = 2; displayName = $STR_ACE_Medical_Blood_IV; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); vehicleClass = "Items"; class TransportItems { class ACE_bloodIV { @@ -832,7 +832,7 @@ class CfgVehicles { scope = 2; scopeCurator = 2; displayName = $STR_ACE_Medical_Saline_IV; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); vehicleClass = "Items"; class TransportItems { class ACE_salineIV { @@ -845,7 +845,7 @@ class CfgVehicles { scope = 2; scopeCurator = 2; displayName = $STR_ACE_Medical_QuikClot_Display; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); vehicleClass = "Items"; class TransportItems { class ACE_quikClot { @@ -858,7 +858,7 @@ class CfgVehicles { scope = 2; scopeCurator = 2; displayName = $STR_ACE_Medical_Aid_Kit_Display; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); vehicleClass = "Items"; class TransportItems { class ACE_personalAidKit { @@ -871,7 +871,7 @@ class CfgVehicles { scope = 2; scopeCurator = 2; displayName = $STR_ACE_Medical_SurgicalKit_Display; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); vehicleClass = "Items"; class TransportItems { class ACE_surgicalKit { @@ -884,7 +884,7 @@ class CfgVehicles { scope = 2; scopeCurator = 2; displayName = $STR_ACE_Medical_Bodybag_Display; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); vehicleClass = "Items"; class TransportItems { class ACE_bodyBag { @@ -900,7 +900,7 @@ class CfgVehicles { accuracy = 1000; displayName = CSTRING(medicalSupplyCrate); model = PATHTOF(data\ace_medcrate.p3d); - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); class TransportItems { class ACE_fieldDressing { name = "ACE_fieldDressing"; diff --git a/addons/microdagr/CfgVehicles.hpp b/addons/microdagr/CfgVehicles.hpp index c4e3897b18..669e0417f9 100644 --- a/addons/microdagr/CfgVehicles.hpp +++ b/addons/microdagr/CfgVehicles.hpp @@ -42,7 +42,7 @@ class CfgVehicles { class ModuleDescription {}; }; class GVAR(dagrModule): Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(Module_DisplayName); function = QFUNC(moduleMapFill); @@ -79,7 +79,7 @@ class CfgVehicles { scope = 2; scopeCurator = 2; displayName = CSTRING(itemName); - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); vehicleClass = "Items"; icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa)); class TransportItems { diff --git a/addons/microdagr/CfgWeapons.hpp b/addons/microdagr/CfgWeapons.hpp index 16cf7c5a59..9776f1c615 100644 --- a/addons/microdagr/CfgWeapons.hpp +++ b/addons/microdagr/CfgWeapons.hpp @@ -3,7 +3,7 @@ class CfgWeapons { class InventoryItem_Base_F; class ACE_microDAGR: ACE_ItemCore { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); scope = 2; displayName = CSTRING(itemName); descriptionShort = CSTRING(itemDescription); diff --git a/addons/missionmodules/CfgVehicles.hpp b/addons/missionmodules/CfgVehicles.hpp index 80ecd6fa80..ebf0b04f66 100644 --- a/addons/missionmodules/CfgVehicles.hpp +++ b/addons/missionmodules/CfgVehicles.hpp @@ -15,7 +15,7 @@ class CfgVehicles { functionPriority = 1; isGlobal = 1; isTriggerActivated = 0; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); class Arguments { class soundFiles { displayName = CSTRING(AmbianceSounds_soundFiles_DisplayName); diff --git a/addons/mk6mortar/CfgVehicles.hpp b/addons/mk6mortar/CfgVehicles.hpp index e910baa645..aca60f7e0c 100644 --- a/addons/mk6mortar/CfgVehicles.hpp +++ b/addons/mk6mortar/CfgVehicles.hpp @@ -48,7 +48,7 @@ class CfgVehicles { class ModuleDescription {}; }; class GVAR(module): Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(Module_DisplayName); function = QFUNC(moduleInit); diff --git a/addons/mk6mortar/CfgWeapons.hpp b/addons/mk6mortar/CfgWeapons.hpp index 0e53d2016d..97952af2d1 100644 --- a/addons/mk6mortar/CfgWeapons.hpp +++ b/addons/mk6mortar/CfgWeapons.hpp @@ -3,7 +3,7 @@ class CfgWeapons { class InventoryItem_Base_F; class ACE_RangeTable_82mm: ACE_ItemCore { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); scope = 2; displayName = CSTRING(rangetable_name); descriptionShort = CSTRING(rangetable_description); diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index 74bae81363..de1db9ec80 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -4,7 +4,7 @@ class CfgVehicles { class ModuleDescription {}; }; class ACE_ModuleNameTags : Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(Module_DisplayName); function = QFUNC(moduleNameTags); diff --git a/addons/nightvision/CfgWeapons.hpp b/addons/nightvision/CfgWeapons.hpp index ed3a1d71b5..8a053a3262 100644 --- a/addons/nightvision/CfgWeapons.hpp +++ b/addons/nightvision/CfgWeapons.hpp @@ -14,7 +14,7 @@ class CfgWeapons { }; class ACE_NVG_Gen1: NVGoggles_OPFOR { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); modelOptics = "\A3\weapons_f\reticle\optics_night"; displayName = CSTRING(NVG_Gen1); ACE_NightVision_grain = 2.25; @@ -22,7 +22,7 @@ class CfgWeapons { ACE_NightVision_radBlur = 0.004; }; class ACE_NVG_Gen2: NVGoggles_INDEP { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); modelOptics = "\A3\weapons_f\reticle\optics_night"; displayName = CSTRING(NVG_Gen2); ACE_NightVision_grain = 1.5; @@ -30,7 +30,7 @@ class CfgWeapons { ACE_NightVision_radBlur = 0.002; }; /*class ACE_NVG_Gen3: NVGoggles { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); modelOptics = "\A3\weapons_f\reticle\optics_night"; displayName = CSTRING(NVG_Gen3); ACE_NightVision_grain = 0.75; @@ -38,7 +38,7 @@ class CfgWeapons { ACE_NightVision_radBlur = 0.001; };*/ class ACE_NVG_Gen4: NVGoggles { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); modelOptics = "\A3\weapons_f\reticle\optics_night"; displayName = CSTRING(NVG_Gen4); ACE_NightVision_grain = 0.0; @@ -46,7 +46,7 @@ class CfgWeapons { ACE_NightVision_radBlur = 0.0; }; class ACE_NVG_Wide: NVGoggles { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); modelOptics = QUOTE(PATHTOF(models\ACE_nvg_wide_optics)); displayName = CSTRING(NVG_FullScreen); ACE_NightVision_grain = 0.75; diff --git a/addons/optics/CfgWeapons.hpp b/addons/optics/CfgWeapons.hpp index 67e70e030c..11fdb1f427 100644 --- a/addons/optics/CfgWeapons.hpp +++ b/addons/optics/CfgWeapons.hpp @@ -31,7 +31,7 @@ class CfgWeapons { }; /*class ACE_optic_DMS: optic_DMS { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_DMS"; scope = 1; displayName = "LOCALIZE ACE DMS"; @@ -71,7 +71,7 @@ class CfgWeapons { GVAR(ReticleDay) = QUOTE(PATHTOF(reticles\hamr-reticle65_ca.paa)); GVAR(ReticleNight) = QUOTE(PATHTOF(reticles\hamr-reticle65Illum_ca.paa)); - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_Hamr_2D"; displayName = CSTRING(hamr); weaponInfoType = "ACE_RscWeapon_Hamr"; @@ -96,7 +96,7 @@ class CfgWeapons { }; class ACE_optic_Hamr_PIP: ACE_optic_Hamr_2D { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_Hamr_PIP"; //scopeArsenal = 1; displayName = CSTRING(hamr_pip); @@ -121,7 +121,7 @@ class CfgWeapons { GVAR(ReticleDay) = QUOTE(PATHTOF(reticles\arco-reticle65_ca.paa)); GVAR(ReticleNight) = QUOTE(PATHTOF(reticles\arco-reticle65Illum_ca.paa)); - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_Arco_2D"; displayName = CSTRING(arco); weaponInfoType = "ACE_RscWeapon_Arco"; @@ -145,7 +145,7 @@ class CfgWeapons { }; class ACE_optic_Arco_PIP: ACE_optic_Arco_2D { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_Arco_PIP"; //scopeArsenal = 1; displayName = CSTRING(arco_pip); @@ -170,7 +170,7 @@ class CfgWeapons { GVAR(ReticleDay) = QUOTE(PATHTOF(reticles\mrco-reticle556_ca.paa)); GVAR(ReticleNight) = QUOTE(PATHTOF(reticles\mrco-reticle556Illum_ca.paa)); - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_MRCO_2D"; displayName = CSTRING(valdada); weaponInfoType = "ACE_RscWeapon_MRCO"; @@ -194,7 +194,7 @@ class CfgWeapons { }; class ACE_optic_MRCO_PIP: ACE_optic_MRCO_2D { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_MRCO_PIP"; scope = 1; //scopeArsenal = 1; @@ -220,7 +220,7 @@ class CfgWeapons { GVAR(ReticleDay) = QUOTE(PATHTOF(reticles\sos-reticleMLR_ca.paa)); GVAR(ReticleNight) = QUOTE(PATHTOF(reticles\sos-reticleMLRIllum_ca.paa)); - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_SOS_2D"; displayName = CSTRING(sos); weaponInfoType = "ACE_RscWeapon_SOS"; @@ -237,7 +237,7 @@ class CfgWeapons { }; class ACE_optic_SOS_PIP: ACE_optic_SOS_2D { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_SOS_PIP"; //scopeArsenal = 1; displayName = CSTRING(sos_pip); @@ -266,7 +266,7 @@ class CfgWeapons { GVAR(ReticleDay) = QUOTE(PATHTOF(reticles\sos-reticleMLR_ca.paa)); GVAR(ReticleNight) = QUOTE(PATHTOF(reticles\sos-reticleMLRIllum_ca.paa)); - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_LRPS_2D"; displayName = CSTRING(lrps); weaponInfoType = "ACE_RscWeapon_SOS"; @@ -288,7 +288,7 @@ class CfgWeapons { }; class ACE_optic_LRPS_PIP: ACE_optic_LRPS_2D { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_LRPS_PIP"; //scopeArsenal = 1; displayName = CSTRING(lrps_pip); diff --git a/addons/optionsmenu/CfgVehicles.hpp b/addons/optionsmenu/CfgVehicles.hpp index 4a0b4010a5..1357417add 100644 --- a/addons/optionsmenu/CfgVehicles.hpp +++ b/addons/optionsmenu/CfgVehicles.hpp @@ -9,7 +9,7 @@ class CfgVehicles { functionPriority = 1; isGlobal = 1; isTriggerActivated = 0; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); class Arguments { class allowconfigurationExport { displayName = CSTRING(AllowConfigExport_allowconfigurationExport_DisplayName); diff --git a/addons/parachute/CfgVehicles.hpp b/addons/parachute/CfgVehicles.hpp index a1e34fa4d8..bc5ecbd60f 100644 --- a/addons/parachute/CfgVehicles.hpp +++ b/addons/parachute/CfgVehicles.hpp @@ -17,7 +17,7 @@ class CfgVehicles { class B_Parachute; class ACE_NonSteerableParachute: B_Parachute { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); scope = 2; displayName = CSTRING(NonSteerableParachute); //picture = "\A3\Characters_F\data\ui\icon_b_parachute_ca.paa"; // @todo diff --git a/addons/parachute/CfgWeapons.hpp b/addons/parachute/CfgWeapons.hpp index 8852caec7c..4ca785a1ea 100644 --- a/addons/parachute/CfgWeapons.hpp +++ b/addons/parachute/CfgWeapons.hpp @@ -3,7 +3,7 @@ class CfgWeapons { class ACE_Altimeter: ItemWatch { ACE_hideItemType = "Watch"; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); descriptionShort = CSTRING(AltimeterDescription); displayName = CSTRING(AltimeterDisplayName); picture = PATHTOF(UI\watch_altimeter.paa); diff --git a/addons/reloadlaunchers/functions/fnc_load.sqf b/addons/reloadlaunchers/functions/fnc_load.sqf index 3005ee231c..9cca572307 100644 --- a/addons/reloadlaunchers/functions/fnc_load.sqf +++ b/addons/reloadlaunchers/functions/fnc_load.sqf @@ -38,7 +38,7 @@ _onSuccess = { }; _onFailure = { - [localize "STR_ACE_Common_ActionAborted"] call DEFUNC(common,displayTextStructured); + [localize ESTRING(common,ActionAborted)] call DEFUNC(common,displayTextStructured); }; _condition = { diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp index c47e91d27a..1022dcab1e 100644 --- a/addons/respawn/CfgVehicles.hpp +++ b/addons/respawn/CfgVehicles.hpp @@ -4,7 +4,7 @@ class CfgVehicles { class ModuleDescription {}; }; class ACE_ModuleRespawn: Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(Module_DisplayName); function = QFUNC(module); @@ -33,7 +33,7 @@ class CfgVehicles { }; class ACE_ModuleFriendlyFire: Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(FriendlyFire_Module_DisplayName); function = QFUNC(moduleFriendlyFire); @@ -48,7 +48,7 @@ class CfgVehicles { }; class ACE_ModuleRallypoint: Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(Rallypoint_Module_DisplayName); function = QFUNC(moduleRallypoint); @@ -94,7 +94,7 @@ class CfgVehicles { class ACE_Rallypoint_West_Base: Flag_NATO_F { XEH_ENABLED; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); displayName = CSTRING(RallypointWestBase); vehicleClass = QGVAR(Rallypoints); @@ -114,7 +114,7 @@ class CfgVehicles { class ACE_Rallypoint_East_Base: Flag_CSAT_F { XEH_ENABLED; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); displayName = CSTRING(RallypointEastBase); vehicleClass = QGVAR(Rallypoints); @@ -134,7 +134,7 @@ class CfgVehicles { class ACE_Rallypoint_Independent_Base: Flag_AAF_F { XEH_ENABLED; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); displayName = CSTRING(RallypointIndependentBase); vehicleClass = QGVAR(Rallypoints); @@ -155,7 +155,7 @@ class CfgVehicles { class ACE_Rallypoint_West: Flag_NATO_F { XEH_ENABLED; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); displayName = CSTRING(RallypointWest); vehicleClass = QGVAR(Rallypoints); @@ -175,7 +175,7 @@ class CfgVehicles { class ACE_Rallypoint_East: Flag_CSAT_F { XEH_ENABLED; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); displayName = CSTRING(RallypointEast); vehicleClass = QGVAR(Rallypoints); @@ -195,7 +195,7 @@ class CfgVehicles { class ACE_Rallypoint_Independent: Flag_AAF_F { XEH_ENABLED; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); displayName = CSTRING(RallypointIndependent); vehicleClass = QGVAR(Rallypoints); diff --git a/addons/switchunits/CfgVehicles.hpp b/addons/switchunits/CfgVehicles.hpp index 2f02571344..8e4507c605 100644 --- a/addons/switchunits/CfgVehicles.hpp +++ b/addons/switchunits/CfgVehicles.hpp @@ -1,7 +1,7 @@ class CfgVehicles { class Module_F; class ACE_ModuleSwitchUnits: Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(Module_DisplayName); function = FUNC(module); diff --git a/addons/vector/CfgVehicles.hpp b/addons/vector/CfgVehicles.hpp index 061fb5b226..cf0d50d18f 100644 --- a/addons/vector/CfgVehicles.hpp +++ b/addons/vector/CfgVehicles.hpp @@ -7,7 +7,7 @@ class CfgVehicles { class Item_Base_F; class ACE_Item_Vector: Item_Base_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(VectorName); diff --git a/addons/vector/CfgWeapons.hpp b/addons/vector/CfgWeapons.hpp index 99c68fec16..019d774da8 100644 --- a/addons/vector/CfgWeapons.hpp +++ b/addons/vector/CfgWeapons.hpp @@ -2,7 +2,7 @@ class CfgWeapons { class Binocular; class ACE_Vector: Binocular { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); displayName = CSTRING(VectorName); descriptionShort = CSTRING(VectorDescription); model = PATHTOF(ace_vector.p3d); diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 2279a76616..fccbb59e93 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -67,7 +67,7 @@ class CfgVehicles { class ModuleDescription {}; }; class ACE_VehicleLock_ModuleSetup: Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(Module_DisplayName); function = QFUNC(moduleInit); @@ -105,7 +105,7 @@ class CfgVehicles { }; class ACE_VehicleLock_ModuleSyncedAssign: Module_F { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(VehicleKeyAssign_Module_DisplayName); function = QFUNC(moduleSync); diff --git a/addons/vehiclelock/CfgWeapons.hpp b/addons/vehiclelock/CfgWeapons.hpp index 0263f5da40..ee000e218e 100644 --- a/addons/vehiclelock/CfgWeapons.hpp +++ b/addons/vehiclelock/CfgWeapons.hpp @@ -3,7 +3,7 @@ class CfgWeapons { class ACE_ItemCore; class ACE_key_master: ACE_ItemCore { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); displayName = "Vehicle Key: Master"; descriptionShort = CSTRING(Item_Master_Description); model = "\A3\weapons_F\ammo\mag_univ.p3d"; diff --git a/addons/viewdistance/CfgVehicles.hpp b/addons/viewdistance/CfgVehicles.hpp index 63a50cf099..5424a2733a 100644 --- a/addons/viewdistance/CfgVehicles.hpp +++ b/addons/viewdistance/CfgVehicles.hpp @@ -1,7 +1,7 @@ class CfgVehicles { class ACE_Module; class GVAR(ModuleSettings) : ACE_Module { - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); category = "ACE"; function = QUOTE(DFUNC(initModule)); displayName = "View Distance Limiter"; diff --git a/addons/weather/CfgVehicles.hpp b/addons/weather/CfgVehicles.hpp index 8b7db2d5d3..ebdd65c30d 100644 --- a/addons/weather/CfgVehicles.hpp +++ b/addons/weather/CfgVehicles.hpp @@ -9,7 +9,7 @@ class CfgVehicles { functionPriority = 1; isGlobal = 1; isTriggerActivated = 0; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); class Arguments { class enableServerController { displayName = CSTRING(enableServerController_DisplayName); diff --git a/addons/winddeflection/CfgVehicles.hpp b/addons/winddeflection/CfgVehicles.hpp index 4720e2e150..2694bb1b34 100644 --- a/addons/winddeflection/CfgVehicles.hpp +++ b/addons/winddeflection/CfgVehicles.hpp @@ -9,7 +9,7 @@ class CfgVehicles { functionPriority = 1; isGlobal = 1; isTriggerActivated = 0; - author = "$STR_ACE_Common_ACETeam"; + author = ECSTRING(common,ACETeam); class Arguments { class enabled { displayName = CSTRING(deflectionModule_DisplayName); From b85ae8f1945bb595e2ba48c9ff66e3d6f8e216d9 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 27 May 2015 22:34:57 +0200 Subject: [PATCH 077/252] Fixed missed external strings --- addons/common/config.cpp | 4 +- addons/medical/ACE_Medical_Actions.hpp | 8 ++-- addons/medical/ACE_Medical_SelfActions.hpp | 8 ++-- addons/realisticnames/CfgWeapons.hpp | 52 +++++++++++----------- addons/vehicles/stringtable.xml | 2 +- 5 files changed, 37 insertions(+), 37 deletions(-) diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 7a53c787a6..ba8cd8a5f8 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -101,7 +101,7 @@ class ACE_Settings { isClientSettable = 1; displayName = CSTRING(SettingFeedbackIconsName); description = CSTRING(SettingFeedbackIconsDesc); - values[] = {"$STR_ACE_Common_Hide", "$STR_ACE_Common_TopRightDown", "$STR_ACE_Common_TopRightLeft", "$STR_ACE_Common_TopLeftDown", "$STR_ACE_Common_TopLeftRight"}; + values[] = {ECSTRING(optionsmenu,Hide), ECSTRING(optionsmenu,TopRightDown), ECSTRING(optionsmenu,TopRightLeft), ECSTRING(optionsmenu,TopLeftDown), ECSTRING(optionsmenu,TopLeftRight)}; }; class GVAR(SettingProgressBarLocation) { value = 0; @@ -110,7 +110,7 @@ class ACE_Settings { isClientSettable = 1; displayName = CSTRING(SettingProgressbarLocationName); description = CSTRING(SettingProgressbarLocationDesc); - values[] = {"$STR_ACE_Common_Top", "$STR_ACE_Common_Bottom"}; + values[] = {ECSTRING(optionsmenu,Top), ECSTRING(optionsmenu,Bottom)}; }; class GVAR(displayTextColor) { value[] = {0,0,0,0.1}; diff --git a/addons/medical/ACE_Medical_Actions.hpp b/addons/medical/ACE_Medical_Actions.hpp index 6c643e53a2..ecb9afdfe4 100644 --- a/addons/medical/ACE_Medical_Actions.hpp +++ b/addons/medical/ACE_Medical_Actions.hpp @@ -180,7 +180,7 @@ class ACE_Torso { }; }; class ACE_ArmLeft { - displayName = CSTRING(ArmLeft); + displayName = ECSTRING(interaction,ArmLeft); runOnHover = 1; statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation)); ACTION_CONDITION @@ -338,7 +338,7 @@ class ACE_ArmLeft { }; }; class ACE_ArmRight { - displayName = CSTRING(ArmRight); + displayName = ECSTRING(interaction,ArmRight); runOnHover = 1; statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation)); ACTION_CONDITION @@ -493,7 +493,7 @@ class ACE_ArmRight { }; class ACE_LegLeft { - displayName = CSTRING(LegLeft); + displayName = ECSTRING(interaction,LegLeft); runOnHover = 1; statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation)); ACTION_CONDITION @@ -636,7 +636,7 @@ class ACE_LegLeft { }; }; class ACE_LegRight { - displayName = CSTRING(LegRight); + displayName = ECSTRING(interaction,LegRight); runOnHover = 1; statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation)); ACTION_CONDITION diff --git a/addons/medical/ACE_Medical_SelfActions.hpp b/addons/medical/ACE_Medical_SelfActions.hpp index a19db92073..e0c1f4ccf8 100644 --- a/addons/medical/ACE_Medical_SelfActions.hpp +++ b/addons/medical/ACE_Medical_SelfActions.hpp @@ -146,7 +146,7 @@ class Medical { }; }; class ACE_ArmLeft { - displayName = CSTRING(ArmLeft); + displayName = ECSTRING(interaction,ArmLeft); runOnHover = 1; exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation)); @@ -248,7 +248,7 @@ class Medical { }; }; class ACE_ArmRight { - displayName = CSTRING(ArmRight); + displayName = ECSTRING(interaction,ArmRight); runOnHover = 1; exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation)); @@ -346,7 +346,7 @@ class Medical { }; }; class ACE_LegLeft { - displayName = CSTRING(LegLeft); + displayName = ECSTRING(interaction,LegLeft); runOnHover = 1; exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation)); @@ -433,7 +433,7 @@ class Medical { }; }; class ACE_LegRight { - displayName = CSTRING(LegRight); + displayName = ECSTRING(interaction,LegRight); runOnHover = 1; exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation)); diff --git a/addons/realisticnames/CfgWeapons.hpp b/addons/realisticnames/CfgWeapons.hpp index ecadbb5921..7244c07419 100644 --- a/addons/realisticnames/CfgWeapons.hpp +++ b/addons/realisticnames/CfgWeapons.hpp @@ -194,61 +194,61 @@ class CfgWeapons { // marksmen marksman class DMR_02_base_F: Rifle_Long_Base_F { - displayName = CSTRING(DMR_02"; //MAR-10 .338); + displayName = CSTRING(DMR_02); //MAR-10 .338"; }; class srifle_DMR_02_F: DMR_02_base_F { - displayName = CSTRING(srifle_DMR_02"; //MAR-10 .338 (Black)); + displayName = CSTRING(srifle_DMR_02); //MAR-10 .338 (Black)"; }; class srifle_DMR_02_camo_F: srifle_DMR_02_F { - displayName = CSTRING(srifle_DMR_02_camo"; //MAR-10 .338 (Camo)); + displayName = CSTRING(srifle_DMR_02_camo); //MAR-10 .338 (Camo)"; }; class srifle_DMR_02_sniper_F: srifle_DMR_02_F { - displayName = CSTRING(srifle_DMR_02_sniper"; //MAR-10 .338 (Sand)); + displayName = CSTRING(srifle_DMR_02_sniper); //MAR-10 .338 (Sand)"; }; class DMR_03_base_F: Rifle_Long_Base_F { - displayName = CSTRING(DMR_03"; //Mk-I EMR 7.62 mm); + displayName = CSTRING(DMR_03); //Mk-I EMR 7.62 mm"; }; class srifle_DMR_03_F: DMR_03_base_F { - displayName = CSTRING(srifle_DMR_03"; //Mk-I EMR 7.62 mm (Black)); + displayName = CSTRING(srifle_DMR_03); //Mk-I EMR 7.62 mm (Black)"; }; class srifle_DMR_03_khaki_F: srifle_DMR_03_F { - displayName = CSTRING(srifle_DMR_03_khaki"; //Mk-I EMR 7.62 mm (Khaki)); + displayName = CSTRING(srifle_DMR_03_khaki); //Mk-I EMR 7.62 mm (Khaki)"; }; class srifle_DMR_03_tan_F: srifle_DMR_03_F { - displayName = CSTRING(srifle_DMR_03_tan"; //Mk-I EMR 7.62 mm (Sand)); + displayName = CSTRING(srifle_DMR_03_tan); //Mk-I EMR 7.62 mm (Sand)"; }; class srifle_DMR_03_multicam_F: srifle_DMR_03_F { - displayName = CSTRING(srifle_DMR_03_multicam"; //Mk-I EMR 7.62 mm (Camo)); + displayName = CSTRING(srifle_DMR_03_multicam); //Mk-I EMR 7.62 mm (Camo)"; }; class srifle_DMR_03_woodland_F: srifle_DMR_03_F { - displayName = CSTRING(srifle_DMR_03_woodland"; //Mk-I EMR 7.62 mm (Woodland)); + displayName = CSTRING(srifle_DMR_03_woodland); //Mk-I EMR 7.62 mm (Woodland)"; }; class srifle_DMR_03_spotter_F: srifle_DMR_03_F { - displayName = CSTRING(srifle_DMR_03_spotter"; //NATO DMR (provisional) spotter); + displayName = CSTRING(srifle_DMR_03_spotter); //NATO DMR (provisional) spotter"; }; class DMR_04_base_F: Rifle_Long_Base_F { - displayName = CSTRING(DMR_04"; //ASP-1 Kir 12.7 mm); + displayName = CSTRING(DMR_04); //ASP-1 Kir 12.7 mm"; }; class srifle_DMR_04_F: DMR_04_base_F { - displayName = CSTRING(srifle_DMR_04"; //ASP-1 Kir 12.7 mm (Black)); + displayName = CSTRING(srifle_DMR_04); //ASP-1 Kir 12.7 mm (Black)"; }; class srifle_DMR_04_Tan_F: srifle_DMR_04_F { - displayName = CSTRING(srifle_DMR_04_Tan"; //ASP-1 Kir 12.7 mm (Tan)); + displayName = CSTRING(srifle_DMR_04_Tan); //ASP-1 Kir 12.7 mm (Tan)"; }; class DMR_05_base_F: Rifle_Long_Base_F { - displayName = CSTRING(DMR_05"; //Cyrus 9.3 mm); + displayName = CSTRING(DMR_05); //Cyrus 9.3 mm"; }; class srifle_DMR_05_blk_F: DMR_05_base_F { @@ -256,14 +256,14 @@ class CfgWeapons { }; class srifle_DMR_05_hex_F: srifle_DMR_05_blk_F { - displayName = CSTRING(srifle_DMR_05_hex"; //Cyrus 9.3 mm (Hex)); + displayName = CSTRING(srifle_DMR_05_hex); //Cyrus 9.3 mm (Hex)"; }; class srifle_DMR_05_tan_f: srifle_DMR_05_blk_F { - displayName = CSTRING(srifle_DMR_05_tan"; //Cyrus 9.3 mm (Tan)); + displayName = CSTRING(srifle_DMR_05_tan); //Cyrus 9.3 mm (Tan)"; }; class DMR_06_base_F: Rifle_Long_Base_F { - displayName = CSTRING(DMR_06"; //Mk14 7.62 mm); + displayName = CSTRING(DMR_06); //Mk14 7.62 mm"; }; class srifle_DMR_06_camo_F: DMR_06_base_F { @@ -271,35 +271,35 @@ class CfgWeapons { }; class srifle_DMR_06_olive_F: srifle_DMR_06_camo_F { - displayName = CSTRING(srifle_DMR_06_olive"; //Mk14 7.62 mm (Olive)); + displayName = CSTRING(srifle_DMR_06_olive); //Mk14 7.62 mm (Olive)"; }; // marksmen mgs class MMG_01_base_F: Rifle_Long_Base_F { - displayName = CSTRING(MMG_01"; //Navid 9.3 mm); + displayName = CSTRING(MMG_01); //Navid 9.3 mm"; }; class MMG_01_hex_F: MMG_01_base_F { - displayName = CSTRING(MMG_01_hex"; //Navid 9.3 mm (Hex)); + displayName = CSTRING(MMG_01_hex); //Navid 9.3 mm (Hex)"; }; class MMG_01_tan_F: MMG_01_hex_F { - displayName = CSTRING(MMG_01_tan"; //Navid 9.3 mm (Tan)); + displayName = CSTRING(MMG_01_tan); //Navid 9.3 mm (Tan)"; }; class MMG_02_base_F: Rifle_Long_Base_F { - displayName = CSTRING(MMG_02"; //SPMG .338); + displayName = CSTRING(MMG_02); //SPMG .338"; }; class MMG_02_camo_F: MMG_02_base_F { - displayName = CSTRING(MMG_02_camo"; //SPMG .338 (MTP)); + displayName = CSTRING(MMG_02_camo); //SPMG .338 (MTP)"; }; class MMG_02_black_F: MMG_02_camo_F { - displayName = CSTRING(MMG_02_black"; //SPMG .338 (Black)); + displayName = CSTRING(MMG_02_black); //SPMG .338 (Black)"; }; class MMG_02_sand_F: MMG_02_camo_F { - displayName = CSTRING(MMG_02_sand"; //SPMG .338 (Sand)); + displayName = CSTRING(MMG_02_sand); //SPMG .338 (Sand)"; }; // vehicle weapons diff --git a/addons/vehicles/stringtable.xml b/addons/vehicles/stringtable.xml index 5d9ffb0535..e1002bc154 100644 --- a/addons/vehicles/stringtable.xml +++ b/addons/vehicles/stringtable.xml @@ -25,7 +25,7 @@ Limitador de Velocidade Desativado Limitatore Non Attivo - + Speed Limiter Begrenzer Limitador de velocidad From 700c4cb9629808b5e0fe0c948ad5636c7daa5b4e Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 27 May 2015 22:57:50 +0200 Subject: [PATCH 078/252] Removed mistakenly added quotes in realisticnames comments --- addons/realisticnames/CfgWeapons.hpp | 52 ++++++++++++++-------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/addons/realisticnames/CfgWeapons.hpp b/addons/realisticnames/CfgWeapons.hpp index 7244c07419..0a83239047 100644 --- a/addons/realisticnames/CfgWeapons.hpp +++ b/addons/realisticnames/CfgWeapons.hpp @@ -194,61 +194,61 @@ class CfgWeapons { // marksmen marksman class DMR_02_base_F: Rifle_Long_Base_F { - displayName = CSTRING(DMR_02); //MAR-10 .338"; + displayName = CSTRING(DMR_02); //MAR-10 .338; }; class srifle_DMR_02_F: DMR_02_base_F { - displayName = CSTRING(srifle_DMR_02); //MAR-10 .338 (Black)"; + displayName = CSTRING(srifle_DMR_02); //MAR-10 .338 (Black); }; class srifle_DMR_02_camo_F: srifle_DMR_02_F { - displayName = CSTRING(srifle_DMR_02_camo); //MAR-10 .338 (Camo)"; + displayName = CSTRING(srifle_DMR_02_camo); //MAR-10 .338 (Camo); }; class srifle_DMR_02_sniper_F: srifle_DMR_02_F { - displayName = CSTRING(srifle_DMR_02_sniper); //MAR-10 .338 (Sand)"; + displayName = CSTRING(srifle_DMR_02_sniper); //MAR-10 .338 (Sand); }; class DMR_03_base_F: Rifle_Long_Base_F { - displayName = CSTRING(DMR_03); //Mk-I EMR 7.62 mm"; + displayName = CSTRING(DMR_03); //Mk-I EMR 7.62 mm; }; class srifle_DMR_03_F: DMR_03_base_F { - displayName = CSTRING(srifle_DMR_03); //Mk-I EMR 7.62 mm (Black)"; + displayName = CSTRING(srifle_DMR_03); //Mk-I EMR 7.62 mm (Black); }; class srifle_DMR_03_khaki_F: srifle_DMR_03_F { - displayName = CSTRING(srifle_DMR_03_khaki); //Mk-I EMR 7.62 mm (Khaki)"; + displayName = CSTRING(srifle_DMR_03_khaki); //Mk-I EMR 7.62 mm (Khaki); }; class srifle_DMR_03_tan_F: srifle_DMR_03_F { - displayName = CSTRING(srifle_DMR_03_tan); //Mk-I EMR 7.62 mm (Sand)"; + displayName = CSTRING(srifle_DMR_03_tan); //Mk-I EMR 7.62 mm (Sand); }; class srifle_DMR_03_multicam_F: srifle_DMR_03_F { - displayName = CSTRING(srifle_DMR_03_multicam); //Mk-I EMR 7.62 mm (Camo)"; + displayName = CSTRING(srifle_DMR_03_multicam); //Mk-I EMR 7.62 mm (Camo); }; class srifle_DMR_03_woodland_F: srifle_DMR_03_F { - displayName = CSTRING(srifle_DMR_03_woodland); //Mk-I EMR 7.62 mm (Woodland)"; + displayName = CSTRING(srifle_DMR_03_woodland); //Mk-I EMR 7.62 mm (Woodland); }; class srifle_DMR_03_spotter_F: srifle_DMR_03_F { - displayName = CSTRING(srifle_DMR_03_spotter); //NATO DMR (provisional) spotter"; + displayName = CSTRING(srifle_DMR_03_spotter); //NATO DMR (provisional) spotter; }; class DMR_04_base_F: Rifle_Long_Base_F { - displayName = CSTRING(DMR_04); //ASP-1 Kir 12.7 mm"; + displayName = CSTRING(DMR_04); //ASP-1 Kir 12.7 mm; }; class srifle_DMR_04_F: DMR_04_base_F { - displayName = CSTRING(srifle_DMR_04); //ASP-1 Kir 12.7 mm (Black)"; + displayName = CSTRING(srifle_DMR_04); //ASP-1 Kir 12.7 mm (Black); }; class srifle_DMR_04_Tan_F: srifle_DMR_04_F { - displayName = CSTRING(srifle_DMR_04_Tan); //ASP-1 Kir 12.7 mm (Tan)"; + displayName = CSTRING(srifle_DMR_04_Tan); //ASP-1 Kir 12.7 mm (Tan); }; class DMR_05_base_F: Rifle_Long_Base_F { - displayName = CSTRING(DMR_05); //Cyrus 9.3 mm"; + displayName = CSTRING(DMR_05); //Cyrus 9.3 mm; }; class srifle_DMR_05_blk_F: DMR_05_base_F { @@ -256,14 +256,14 @@ class CfgWeapons { }; class srifle_DMR_05_hex_F: srifle_DMR_05_blk_F { - displayName = CSTRING(srifle_DMR_05_hex); //Cyrus 9.3 mm (Hex)"; + displayName = CSTRING(srifle_DMR_05_hex); //Cyrus 9.3 mm (Hex); }; class srifle_DMR_05_tan_f: srifle_DMR_05_blk_F { - displayName = CSTRING(srifle_DMR_05_tan); //Cyrus 9.3 mm (Tan)"; + displayName = CSTRING(srifle_DMR_05_tan); //Cyrus 9.3 mm (Tan); }; class DMR_06_base_F: Rifle_Long_Base_F { - displayName = CSTRING(DMR_06); //Mk14 7.62 mm"; + displayName = CSTRING(DMR_06); //Mk14 7.62 mm; }; class srifle_DMR_06_camo_F: DMR_06_base_F { @@ -271,35 +271,35 @@ class CfgWeapons { }; class srifle_DMR_06_olive_F: srifle_DMR_06_camo_F { - displayName = CSTRING(srifle_DMR_06_olive); //Mk14 7.62 mm (Olive)"; + displayName = CSTRING(srifle_DMR_06_olive); //Mk14 7.62 mm (Olive); }; // marksmen mgs class MMG_01_base_F: Rifle_Long_Base_F { - displayName = CSTRING(MMG_01); //Navid 9.3 mm"; + displayName = CSTRING(MMG_01); //Navid 9.3 mm; }; class MMG_01_hex_F: MMG_01_base_F { - displayName = CSTRING(MMG_01_hex); //Navid 9.3 mm (Hex)"; + displayName = CSTRING(MMG_01_hex); //Navid 9.3 mm (Hex); }; class MMG_01_tan_F: MMG_01_hex_F { - displayName = CSTRING(MMG_01_tan); //Navid 9.3 mm (Tan)"; + displayName = CSTRING(MMG_01_tan); //Navid 9.3 mm (Tan); }; class MMG_02_base_F: Rifle_Long_Base_F { - displayName = CSTRING(MMG_02); //SPMG .338"; + displayName = CSTRING(MMG_02); //SPMG .338; }; class MMG_02_camo_F: MMG_02_base_F { - displayName = CSTRING(MMG_02_camo); //SPMG .338 (MTP)"; + displayName = CSTRING(MMG_02_camo); //SPMG .338 (MTP); }; class MMG_02_black_F: MMG_02_camo_F { - displayName = CSTRING(MMG_02_black); //SPMG .338 (Black)"; + displayName = CSTRING(MMG_02_black); //SPMG .338 (Black); }; class MMG_02_sand_F: MMG_02_camo_F { - displayName = CSTRING(MMG_02_sand); //SPMG .338 (Sand)"; + displayName = CSTRING(MMG_02_sand); //SPMG .338 (Sand); }; // vehicle weapons From 236ae767b50f74f366ac55254feb360559f98a14 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 28 May 2015 00:18:45 -0500 Subject: [PATCH 079/252] Goggles - Cache Surface Dust --- addons/goggles/XEH_postInit.sqf | 2 ++ addons/goggles/functions/fnc_dustHandler.sqf | 12 +++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf index a6fe7c415f..a63004083d 100644 --- a/addons/goggles/XEH_postInit.sqf +++ b/addons/goggles/XEH_postInit.sqf @@ -47,6 +47,8 @@ GVAR(DustHandler) = -1; GVAR(RainDrops) = objNull; GVAR(RainActive) = false; GVAR(RainLastLevel) = 0; +GVAR(surfaceCache) = ""; +GVAR(surfaceCacheIsDust) = false; FUNC(CheckGlasses) = { if (GVAR(Current) != (goggles ace_player)) then { diff --git a/addons/goggles/functions/fnc_dustHandler.sqf b/addons/goggles/functions/fnc_dustHandler.sqf index af3c084e63..44475d1acc 100644 --- a/addons/goggles/functions/fnc_dustHandler.sqf +++ b/addons/goggles/functions/fnc_dustHandler.sqf @@ -15,7 +15,7 @@ * Public: No */ #include "script_component.hpp" -private ["_bullets", "_position", "_surface", "_found", "_weapon", "_cloudType", "_unit"]; +private ["_bullets", "_position", "_surface", "_weapon", "_cloudType", "_unit"]; EXPLODE_2_PVT(_this,_unit,_weapon); if (_unit != ace_player) exitWith {true}; _cloudType = ""; @@ -39,12 +39,14 @@ if (surfaceIsWater _position) exitWith {}; if ((_position select 2) > 0.2) exitWith {}; _surface = surfaceType _position; -_surface = ([_surface, "#"] call CBA_fnc_split) select 1; -_found = false; -_found = getNumber (ConfigFile >> "CfgSurfaces" >> _surface >> "dust") >= 0.1; +if (_surface != GVAR(surfaceCache)) then { + GVAR(surfaceCache) = _surface; + _surface = ([_surface, "#"] call CBA_fnc_split) select 1; + GVAR(surfaceCacheIsDust) = getNumber (ConfigFile >> "CfgSurfaces" >> _surface >> "dust") >= 0.1; +}; -if (!_found) exitWith {}; +if (!GVAR(surfaceCacheIsDust)) exitWith {}; _bullets = GETDUSTT(DBULLETS); From 30a48bad7d1be2897482b3f62c2e85be3f9d89af Mon Sep 17 00:00:00 2001 From: Bracconiere Date: Thu, 28 May 2015 12:18:31 +0300 Subject: [PATCH 080/252] Shields back up Also, changed the download link from source code to the official compiled version. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a5d1d57306..309db44383 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,12 @@ height="112">

- ACE version + v3.0.1 + ACE wersja - - ACE download + + 40.9 Mb + ACE pobierz - ACE issues + ACE zagadnienia - - BIF thread + + BIF wątek - ACE license + ACE licencja

Wymaga najnowszej wersji CBA A3. Odwiedź nas na Facebook | YouTube | Twitter | Reddit

- **ACE3** to efekt wspólnego wysiłku grup moderów odpowiedzialnych za **ACE2**, **AGM** oraz **CSE** w celu zwiększenia realizmu i autentyczności Arma 3. Projekt ten jest całkowicie **otwarty źródłowo** i wszelki wkład w rozwój jest mile widziany. Możesz bez przeszkód prowadzić swoją własną dostosowaną wersję, o ile zmiany jakie wprowadzisz będą otwarte dla publiki zgodnie z GNU General Public License ([GPLv2](https://github.com/acemod/ACE3/blob/master/LICENSE)). @@ -81,4 +82,4 @@ Używaj naszego [Issue Tracker-a](https://github.com/acemod/ACE3/issues) aby zg #### Testowanie i budowanie Aby pomóc nam w testowaniu najnowszych zmian rozwojowych, pobierz nasz master branch ([bezpośrednio](https://github.com/acemod/ACE3/archive/master.zip), lub [korzystając z git](https://help.github.com/articles/fetching-a-remote/)), a następnie złóż testowego build-a: -* [Konfiguracja środowiska do testów](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html) – intrukcja krok-po-kroku jak poprawnie ustawić i zbudować wersję ACE do celów testowych. \ No newline at end of file +* [Konfiguracja środowiska do testów](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html) – intrukcja krok-po-kroku jak poprawnie ustawić i zbudować wersję ACE do celów testowych. From 3796ab264ed61843da6620d9f31381caa4af7905 Mon Sep 17 00:00:00 2001 From: Bracconiere Date: Thu, 28 May 2015 12:57:37 +0300 Subject: [PATCH 083/252] Test fix --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 309db44383..a08f787237 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,12 @@

v3.0.1 - ACE version 40.9 Mb - ACE download From 87384e071714bd02c5dffa106dd4b4c6fb0320ea Mon Sep 17 00:00:00 2001 From: Bracconiere Date: Thu, 28 May 2015 13:10:41 +0300 Subject: [PATCH 084/252] Testing as HTTPS --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a08f787237..6e06e272cc 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@

v3.0.1 - ACE version From 7ac3aa0baf12aacb958436c30c137957dc253bf2 Mon Sep 17 00:00:00 2001 From: Bracconiere Date: Thu, 28 May 2015 13:25:44 +0300 Subject: [PATCH 085/252] TEST: What if it wasn't flat --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6e06e272cc..4bd0282b40 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@

v3.0.1 - ACE version From b7c2961765d9dbf68bd397b3d5ac8704d152cfcb Mon Sep 17 00:00:00 2001 From: Bracconiere Date: Thu, 28 May 2015 13:27:39 +0300 Subject: [PATCH 086/252] Flat styling is redundant, it is the default now --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4bd0282b40..6913f225e7 100644 --- a/README.md +++ b/README.md @@ -10,19 +10,19 @@ 40.9 Mb - ACE download - ACE issues - BIF thread - ACE license

From 4a6a29b784e50dfdb9f0d5742701de0e757551c4 Mon Sep 17 00:00:00 2001 From: Bracconiere Date: Thu, 28 May 2015 13:43:19 +0300 Subject: [PATCH 087/252] Removed flat styling, it's already a default. --- documentation/README_PL.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/documentation/README_PL.md b/documentation/README_PL.md index fe3939504f..6cd080f497 100644 --- a/documentation/README_PL.md +++ b/documentation/README_PL.md @@ -5,24 +5,24 @@

v3.0.1 - ACE wersja 40.9 Mb - ACE pobierz - ACE zagadnienia - BIF wątek - ACE licencja

From 4ef8bbace8265ab79a38c773cd5165ac5c692a51 Mon Sep 17 00:00:00 2001 From: Bracconiere Date: Thu, 28 May 2015 14:30:26 +0300 Subject: [PATCH 088/252] Alphabetized the contributor list More recent additions seem to have been just stacked unsorted at the bottom. --- AUTHORS.txt | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/AUTHORS.txt b/AUTHORS.txt index e40b4c8ee6..d33f9f41c7 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -24,22 +24,30 @@ VKing Walter Pearce # CONTRIBUTORS -11RDP-LoupVert [BIG]Bull +11RDP-LoupVert ACCtomeek +adam3adam Adanteh aeroson -alef Aggr094 +alef +Aleksey EpMAK Yermakov Alganthe Anthariel +Asgar Serran +Bla1337 +BlackPixxel BlackQwar Brakoviejo Brisse BullHorn Clon1998 Codingboy +Coren Crusty +Dharma Bellamkonda +Dimaslg eRazeri evromalarkey Falke75 @@ -49,31 +57,37 @@ Filip Basara FreeZbe geraldbolso1899 Ghost +Gianmarco Varriale (TeamNuke) GieNkoV gpgpgpgp Grzegorz -Gianmarco Varriale (TeamNuke) Hamburger SV Harakhti havena Hawkins jokoho48 Jonpas +Kavinsky Kllrt +legman Legolasindar "Viper" licht-im-Norden87 MarcBook meat Michail Nikolaev nic547 +nikolauska nomisum +OnkelDisMaster oscarmolinadev pokertour +Professor rakowozz +ramius86 Raspu86 Riccardo Petricca Robert Boklahánics -ramius86 +ruPaladin SilentSpike simon84 Sniperwolf572 @@ -82,20 +96,6 @@ Toaster Tonic Tourorist Valentin Torikian -zGuba -Aleksey EpMAK Yermakov -ruPaladin -BlackPixxel -Asgar Serran -Kavinsky -Coren -OnkelDisMaster -Dimaslg VyMajoris(W-Cephei) -Bla1337 -nikolauska -adam3adam -Professor Winter -Dharma Bellamkonda -legman +zGuba From 33b2db186e6d84684c3d33ae037abece3f62d46a Mon Sep 17 00:00:00 2001 From: Bracconiere Date: Thu, 28 May 2015 14:39:56 +0300 Subject: [PATCH 089/252] Commented out the problematic shields --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6913f225e7..be3a93cce6 100644 --- a/README.md +++ b/README.md @@ -3,16 +3,16 @@ height="112">

- + ACE issues From 6e0ca1badc74e5434cfd312cbbd6a76fc78049c1 Mon Sep 17 00:00:00 2001 From: Bracconiere Date: Thu, 28 May 2015 14:45:21 +0300 Subject: [PATCH 090/252] It's only the Issues badge that's acting up now --- README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index be3a93cce6..4e9372b33b 100644 --- a/README.md +++ b/README.md @@ -3,20 +3,18 @@ height="112">

- - + + BIF thread From 30156599db87e9072ce4adcc7a8148ec9a8b8bfc Mon Sep 17 00:00:00 2001 From: Bracconiere Date: Thu, 28 May 2015 14:55:45 +0300 Subject: [PATCH 091/252] All's working for now. --- documentation/README_PL.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/documentation/README_PL.md b/documentation/README_PL.md index 6cd080f497..950816743d 100644 --- a/documentation/README_PL.md +++ b/documentation/README_PL.md @@ -4,12 +4,10 @@

- v3.0.1 ACE wersja - 40.9 Mb ACE pobierz From 670c1f880535abfc8e7c68f1df17d14e1f2f3733 Mon Sep 17 00:00:00 2001 From: Bracconiere Date: Thu, 28 May 2015 14:57:45 +0300 Subject: [PATCH 092/252] All comments off (shields stable?) Easier to check how it loads throughout the day --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4e9372b33b..7e1ffe1672 100644 --- a/README.md +++ b/README.md @@ -11,10 +11,10 @@ ACE download - + BIF thread From f00a032e17d689f627e1d707fe7e76c55cac342a Mon Sep 17 00:00:00 2001 From: BullHorn Date: Thu, 28 May 2015 16:41:23 +0300 Subject: [PATCH 093/252] Add notice for mod-makers --- documentation/user/installation-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/user/installation-guide.md b/documentation/user/installation-guide.md index 4618ab4216..661c0e53bf 100644 --- a/documentation/user/installation-guide.md +++ b/documentation/user/installation-guide.md @@ -24,7 +24,7 @@ This guide will explain how to get ACE3 up and running faster than you can say b ## 4. Install ACE3 Optional components

### 4.1 What do they do? From fcd7ff528765ccf79d262e654c214c06244784f1 Mon Sep 17 00:00:00 2001 From: BullHorn Date: Thu, 28 May 2015 16:51:53 +0300 Subject: [PATCH 094/252] docs: optional pbos - add notice for mod makers --- .../development/modularity-and-pbo-structure.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/documentation/development/modularity-and-pbo-structure.md b/documentation/development/modularity-and-pbo-structure.md index 4b76f2b357..e6d8f2db1a 100644 --- a/documentation/development/modularity-and-pbo-structure.md +++ b/documentation/development/modularity-and-pbo-structure.md @@ -7,13 +7,13 @@ parent: wiki order: 4 --- -### Modularity +## 1. Modularity Main principles: - As much stuff as possible should be modular - Strive to make as much stuff as possible run-time togglable. Adding/removing PBOS would still be requiring to toggle any feature relying on config changes. -### PBO Structure +## 2. PBO Structure Main principles: @@ -29,3 +29,14 @@ Main -> Common -> Config things Main -> Common -> 3D Models | Interaction | -> Feature ``` + +## 3. Optional .PBOs for 3rd Party Mods + +- ACE3 policy is to NOT take care of compatibility with third party addons single handely. The current compatible .PBOs were kickstarted by the ACE3 team as an example to mod creators so it's clear which entries are needed for compatibility. The authors of those addons have been contatcted and many of those pbos are due to be included in their respective mods eventually. + +
+
Notice for 3rd party mod creators:
+

Most of the config entries are inert if ACE3 is not present, so addons can be made ACE3 compatible without explicitly requiring ACE3. It is best to create and distribute compatibility .PBOs along with the original mod content; feel free to consult with ACE3 devs about how to correctly implement this. All existing compatibility .PBOs are examples and thus no further compatibility .PBOs will be provided by the ACE3 team.

+
+ + From 489751f5aa138e4fb02c9d721a99ea11f0c1148f Mon Sep 17 00:00:00 2001 From: Macusercom Date: Thu, 28 May 2015 16:21:53 +0200 Subject: [PATCH 095/252] More German string fixed As recommended... --- addons/advanced_ballistics/stringtable.xml | 10 +++++----- addons/captives/stringtable.xml | 4 ++-- addons/explosives/stringtable.xml | 6 +++--- addons/interaction/stringtable.xml | 6 +++--- addons/map/stringtable.xml | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index c1ccbe3d3e..c7fdde12f8 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -42,7 +42,7 @@ Enabled For Snipers - Für Sniper aktiviert + Für Scharfschützen aktiviert Enables advanced ballistics for non local snipers (when using high power optics) @@ -87,7 +87,7 @@ Enable Ammo Temperature Simulation Symulacja temp. amunicji - Munitionstemperatur-Simulation aktivieren + Simulation der Munitionstemperatur aktivieren Muzzle velocity varies with ammo temperature @@ -97,12 +97,12 @@ Enable Barrel Length Simulation Symulacja długości lufy - Lauflängen-Simulation aktivieren + Simulation der Lauflänge aktivieren Muzzle velocity varies with barrel length Prędkość wylotowa pocisku jest zależna od długości lufy - Länge des Laufs verändert Mündungsgeschwindigkeit + Lauflänge beeinflusst Mündungsgeschwindigkeit Enable Bullet Trace Effect @@ -117,7 +117,7 @@ Simulation Interval Interwał symulacji - Simulationsinterval + Simulationsintervall Defines the interval between every calculation step diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 9c164e28fe..2fd6b6ad3f 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -196,12 +196,12 @@ Make Unit Surrender Poddaj się! - Einheit aufgeben lassen + Einheit kapitulieren lassen Sync a unit to make them surrender.<br />Source: ace_captives Zsynchronizuj z jednostką aby sprawić by się poddała<br />Źródło: ace_captives - Einheit synchronisieren, um sie aufgeben zu lassen.<br />Quelle: ace_captives + Einheit synchronisieren, um sie kapitulieren zu lassen.<br />Quelle: ace_captives \ No newline at end of file diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index e88d7f0a4b..9e2c540d6f 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -513,7 +513,7 @@ Require specialists? Wymagaj specjalistów? - Benötigt Experten? + Benötigt Sprengstoffexperten? Require explosive specialists to disable explosives? Default: No @@ -523,12 +523,12 @@ Punish non-specialists? Karaj nie-specjalistów? - Bestrafe Nicht-Experten? + Bestrafe Nicht-Sprengstoffexperten? Increase the time it takes to complete actions for non-specialists? Default: Yes Zwiększyć ilość wymaganego czasu do ukończenia akcji dla nie-specjalistów? Domyślnie: Tak - Entschärfungszeit für Nicht-Experten erhöhen? Standard: Ja + Entschärfungszeit für Nicht-Sprengstoffexperten erhöhen? Standard: Ja diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index aa39762f6c..9c1fc6641f 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -507,7 +507,7 @@ Team Management - Teamverwaltung + Gruppenverwaltung Gestión de equipo Gestion d'équipe Zarządzanie oddziałem @@ -801,12 +801,12 @@ Enable Team Management Wł. zarządzanie drużyną - Aktiviere Teamverwaltung + Aktiviere Gruppenverwaltung Should players be allowed to use the Team Management Menu? Default: Yes Czy gracze mogą korzystać z menu zarządzania drużyną? Domyślnie: Tak - Sollen Spieler das Teamverwaltungsmenü verwenden dürfen? Standard: Ja + Sollen Spieler das Gruppenverwaltungsmenü verwenden dürfen? Standard: Ja diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index d6546b2b4c..1959297909 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -57,7 +57,7 @@ Interval Interwał - Interval + Intervall How often the markers should be refreshed (in seconds) From de1bfa8f80b84c94bc60c4a6ce63c3c9705e20dd Mon Sep 17 00:00:00 2001 From: BullHorn Date: Thu, 28 May 2015 18:04:08 +0300 Subject: [PATCH 096/252] fix typo, add inert/not-inert description --- documentation/development/modularity-and-pbo-structure.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/development/modularity-and-pbo-structure.md b/documentation/development/modularity-and-pbo-structure.md index e6d8f2db1a..7e4a926de8 100644 --- a/documentation/development/modularity-and-pbo-structure.md +++ b/documentation/development/modularity-and-pbo-structure.md @@ -32,11 +32,11 @@ Main -> Common -> 3D Models | ## 3. Optional .PBOs for 3rd Party Mods -- ACE3 policy is to NOT take care of compatibility with third party addons single handely. The current compatible .PBOs were kickstarted by the ACE3 team as an example to mod creators so it's clear which entries are needed for compatibility. The authors of those addons have been contatcted and many of those pbos are due to be included in their respective mods eventually. +- ACE3 policy is to NOT take care of compatibility with third party addons single handely. The current compatible .PBOs were kickstarted by the ACE3 team as an example to mod creators so it's clear which entries are needed for compatibility. The authors of those addons have been contacted and many of those pbos are due to be included in their respective mods eventually.
Notice for 3rd party mod creators:
-

Most of the config entries are inert if ACE3 is not present, so addons can be made ACE3 compatible without explicitly requiring ACE3. It is best to create and distribute compatibility .PBOs along with the original mod content; feel free to consult with ACE3 devs about how to correctly implement this. All existing compatibility .PBOs are examples and thus no further compatibility .PBOs will be provided by the ACE3 team.

+

Most of the config entries are inert if ACE3 is not present, so addons can be made ACE3 compatible without explicitly requiring ACE3. However, for addons that are not inert (for example, scope configs), it is best to create and distribute compatibility .PBOs along with the original mod content; feel free to consult with ACE3 devs about how to correctly implement this. All existing compatibility .PBOs are examples and thus no further compatibility .PBOs will be provided by the ACE3 team.

From 529e200a4c55a3c919d43bcb30a7e3f35a258e38 Mon Sep 17 00:00:00 2001 From: Garth L-H de Wet Date: Thu, 28 May 2015 17:56:45 +0200 Subject: [PATCH 097/252] Made explosives Zeus and AI compatible specifically in regards to Deadman's switches. --- addons/explosives/CfgEventHandlers.hpp | 25 +++++++---- addons/explosives/XEH_postInit.sqf | 44 ------------------- addons/explosives/XEH_preInit.sqf | 2 + .../functions/fnc_onInventoryChanged.sqf | 35 +++++++++++++++ addons/explosives/functions/fnc_onKilled.sqf | 26 +++++++++++ 5 files changed, 79 insertions(+), 53 deletions(-) create mode 100644 addons/explosives/functions/fnc_onInventoryChanged.sqf create mode 100644 addons/explosives/functions/fnc_onKilled.sqf diff --git a/addons/explosives/CfgEventHandlers.hpp b/addons/explosives/CfgEventHandlers.hpp index 8d0b110935..89e3017e8a 100644 --- a/addons/explosives/CfgEventHandlers.hpp +++ b/addons/explosives/CfgEventHandlers.hpp @@ -9,12 +9,19 @@ class Extended_PostInit_EventHandlers { }; }; -/* -TODO: Move the addEventHandlers out of PostInit into here or separate eventHandlers, -to enable them on all units, so unit switching works for explosives properly. -class Extended_Init_EventHandlers { -class CAManBase { -init = ""; -} -} -*/ +class Extended_Killed_EventHandlers { + class CAManBase { + GVAR(killedHandler) = QUOTE(_this call FUNC(onKilled)); + }; +}; + +class Extended_Take_EventHandlers { + class CAManBase { + GVAR(takeHandler) = QUOTE([ARR_3(_this select 0, _this select 1, _this select 2)] call FUNC(onInventoryChanged)); + }; +}; +class Extended_Put_EventHandlers { + class CAManBase { + GVAR(takeHandler) = QUOTE([ARR_3(_this select 1, _this select 0, _this select 2)] call FUNC(onInventoryChanged)); + }; +}; diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index 88a7bbba95..cc0b7347b6 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -50,47 +50,3 @@ GVAR(CurrentSpeedDial) = 0; }] call EFUNC(common,addEventHandler); [{(_this select 0) call FUNC(handleScrollWheel);}] call EFUNC(Common,addScrollWheelEventHandler); -player addEventHandler ["Killed", { - private "_deadman"; - call FUNC(place_Cancel); - _deadman = [(_this select 0), "DeadManSwitch"] call FUNC(getPlacedExplosives); - { - [(_this select 0), -1, _x, true] call FUNC(detonateExplosive); - } count _deadman; -}]; -player addEventHandler ["Take", { - private ["_item", "_getter", "_giver", "_config", "_detonators"]; - _item = _this select 2; - _getter = _this select 0; - _giver = _this select 1; - - _config = ConfigFile >> "CfgWeapons" >> _item; - if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then { - private ["_clackerItems"]; - _clackerItems = _giver getVariable [QGVAR(Clackers), []]; - _getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true]; - - _detonators = [_giver] call FUNC(getDetonators); - if (count _detonators == 0) then { - _giver setVariable [QGVAR(Clackers), nil, true]; - }; - }; -}]; -player addEventHandler ["Put", { - private ["_item", "_getter", "_giver", "_config"]; - _item = _this select 2; - _getter = _this select 1; - _giver = _this select 0; - - _config = ConfigFile >> "CfgWeapons" >> _item; - if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then { - private ["_clackerItems"]; - _clackerItems = _giver getVariable [QGVAR(Clackers), []]; - _getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true]; - - _detonators = [_giver] call FUNC(getDetonators); - if (count _detonators == 0) then { - _giver setVariable [QGVAR(Clackers), nil, true]; - }; - }; -}]; diff --git a/addons/explosives/XEH_preInit.sqf b/addons/explosives/XEH_preInit.sqf index d010fd8d1e..519d917793 100644 --- a/addons/explosives/XEH_preInit.sqf +++ b/addons/explosives/XEH_preInit.sqf @@ -42,6 +42,8 @@ PREP(getSpeedDialExplosive); PREP(module); +PREP(onInventoryChanged); +PREP(onKilled); PREP(onLanded); PREP(openTimerSetUI); diff --git a/addons/explosives/functions/fnc_onInventoryChanged.sqf b/addons/explosives/functions/fnc_onInventoryChanged.sqf new file mode 100644 index 0000000000..53ebb2464d --- /dev/null +++ b/addons/explosives/functions/fnc_onInventoryChanged.sqf @@ -0,0 +1,35 @@ +/* + * Author: Garth 'L-H' de Wet + * When a take/put event handler fires and a detonator is changed hands. + * Then take "attached" explosives. + * + * Arguments: + * 0: Receiver + * 1: Giver + * 2: Item + * + * Return Value: + * None + * + * Example: + * Handled by CBA + * + * Public: No + */ +#include "script_component.hpp" +private ["_config", "_detonators"]; +PARAMS_3(_receiver,_giver,_item); + +if (_receiver != ace_player) exitWith {}; + +_config = ConfigFile >> "CfgWeapons" >> _item; +if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then { + private ["_clackerItems"]; + _clackerItems = _giver getVariable [QGVAR(Clackers), []]; + _receiver SetVariable [QGVAR(Clackers), (_receiver getVariable [QGVAR(Clackers), []]) + _clackerItems, true]; + + _detonators = [_giver] call FUNC(getDetonators); + if (count _detonators == 0) then { + _giver setVariable [QGVAR(Clackers), nil, true]; + }; +}; diff --git a/addons/explosives/functions/fnc_onKilled.sqf b/addons/explosives/functions/fnc_onKilled.sqf new file mode 100644 index 0000000000..74775b2e66 --- /dev/null +++ b/addons/explosives/functions/fnc_onKilled.sqf @@ -0,0 +1,26 @@ +/* + * Author: Garth 'L-H' de Wet + * Detonates all attached deadman's switched triggered explosives. + * + * Arguments: + * 0: Unit + * + * Return Value: + * None + * + * Example: + * Handled by CBA + * + * Public: No + */ +#include "script_component.hpp" +private ["_deadman"]; +_unit = _this select 0; +if (_unit == ACE_player) then { + call FUNC(place_Cancel); +}; +if (!isServer) exitWith{}; +_deadman = [_unit, "DeadManSwitch"] call FUNC(getPlacedExplosives); +{ + [_unit, -1, _x, true] call FUNC(detonateExplosive); +} foreach _deadman; From ab31891b8dc55d8a612705484ebea4aa19d60cf1 Mon Sep 17 00:00:00 2001 From: IngoKauffmann Date: Thu, 28 May 2015 18:02:31 +0200 Subject: [PATCH 098/252] runOnHover can now be CODE Expanded render, compileMenu, compileMenuSelfAction so runOnHover can be CODE --- addons/interact_menu/functions/fnc_compileMenu.sqf | 7 ++++++- .../functions/fnc_compileMenuSelfAction.sqf | 7 ++++++- addons/interact_menu/functions/fnc_render.sqf | 12 +++++++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/addons/interact_menu/functions/fnc_compileMenu.sqf b/addons/interact_menu/functions/fnc_compileMenu.sqf index 75c960522b..8d68a34268 100644 --- a/addons/interact_menu/functions/fnc_compileMenu.sqf +++ b/addons/interact_menu/functions/fnc_compileMenu.sqf @@ -69,7 +69,12 @@ _recurseFnc = { _showDisabled = (getNumber (_entryCfg >> "showDisabled")) > 0; _enableInside = (getNumber (_entryCfg >> "enableInside")) > 0; _canCollapse = (getNumber (_entryCfg >> "canCollapse")) > 0; - _runOnHover = (getNumber (_entryCfg >> "runOnHover")) > 0; + _runOnHover = false; + if (isText (_entryCfg >> "runOnHover")) then { + _runOnHover = compile getText (_entryCfg >> "runOnHover"); + } else { + _runOnHover = (getNumber (_entryCfg >> "runOnHover")) > 0; + }; _condition = compile _condition; _children = [_entryCfg] call _recurseFnc; diff --git a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf index 10426460d7..b33b06563c 100644 --- a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf @@ -53,7 +53,12 @@ _recurseFnc = { _showDisabled = (getNumber (_entryCfg >> "showDisabled")) > 0; _enableInside = (getNumber (_entryCfg >> "enableInside")) > 0; _canCollapse = (getNumber (_entryCfg >> "canCollapse")) > 0; - _runOnHover = (getNumber (_entryCfg >> "runOnHover")) > 0; + _runOnHover = true; + if (isText (_entryCfg >> "runOnHover")) then { + _runOnHover = compile getText (_entryCfg >> "runOnHover"); + } else { + _runOnHover = (getNumber (_entryCfg >> "runOnHover")) > 0; + }; _condition = compile _condition; _children = [_entryCfg] call _recurseFnc; diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf index 66c9830a0c..55ca280c43 100644 --- a/addons/interact_menu/functions/fnc_render.sqf +++ b/addons/interact_menu/functions/fnc_render.sqf @@ -89,7 +89,17 @@ if (GVAR(openedMenuType) >= 0) then { // Execute the current action if it's run on hover private "_runOnHover"; - _runOnHover = ((GVAR(selectedAction) select 0) select 9) select 3; + _tmp = ((GVAR(selectedAction) select 0) select 9) select 3; + _runOnHover = true; + if ((typeName _tmp) == "CODE" ) then { + _runOnHover = call _tmp; + } else { + if ((typeName _tmp) == "BOOL" ) then { + _runOnHover = _tmp; + } else { + _runOnHover = _tmp > 0; + }; + }; if (_runOnHover) then { this = GVAR(selectedTarget); _player = ACE_Player; From 697710d40d4e3f06efe60f366eeda0527a35c670 Mon Sep 17 00:00:00 2001 From: ulteq Date: Thu, 28 May 2015 19:17:29 +0200 Subject: [PATCH 099/252] Initial draft of the range card implementation. --- addons/rangecard/$PBOPREFIX$ | 1 + addons/rangecard/CfgEventHandlers.hpp | 11 + addons/rangecard/CfgVehicles.hpp | 60 +++++ addons/rangecard/CfgWeapons.hpp | 19 ++ addons/rangecard/README.md | 10 + addons/rangecard/RscTitles.hpp | 198 ++++++++++++++++ addons/rangecard/UI/RangeCard.paa | Bin 0 -> 41222 bytes addons/rangecard/UI/RangeCard_Icon.paa | Bin 0 -> 30512 bytes addons/rangecard/XEH_postInit.sqf | 11 + addons/rangecard/XEH_preInit.sqf | 14 ++ addons/rangecard/config.cpp | 17 ++ .../functions/fnc_calculateSolution.sqf | 218 ++++++++++++++++++ addons/rangecard/functions/fnc_canCopy.sqf | 18 ++ addons/rangecard/functions/fnc_canShow.sqf | 18 ++ .../rangecard/functions/fnc_canShowCopy.sqf | 18 ++ .../rangecard/functions/fnc_onCloseDialog.sqf | 4 + .../rangecard/functions/fnc_openRangeCard.sqf | 36 +++ .../functions/fnc_updateClassNames.sqf | 43 ++++ .../functions/fnc_updateRangeCard.sqf | 118 ++++++++++ .../rangecard/functions/script_component.hpp | 1 + addons/rangecard/initKeybinds.sqf | 31 +++ addons/rangecard/script_component.hpp | 12 + addons/rangecard/stringtable.xml | 26 +++ 23 files changed, 884 insertions(+) create mode 100644 addons/rangecard/$PBOPREFIX$ create mode 100644 addons/rangecard/CfgEventHandlers.hpp create mode 100644 addons/rangecard/CfgVehicles.hpp create mode 100644 addons/rangecard/CfgWeapons.hpp create mode 100644 addons/rangecard/README.md create mode 100644 addons/rangecard/RscTitles.hpp create mode 100644 addons/rangecard/UI/RangeCard.paa create mode 100644 addons/rangecard/UI/RangeCard_Icon.paa create mode 100644 addons/rangecard/XEH_postInit.sqf create mode 100644 addons/rangecard/XEH_preInit.sqf create mode 100644 addons/rangecard/config.cpp create mode 100644 addons/rangecard/functions/fnc_calculateSolution.sqf create mode 100644 addons/rangecard/functions/fnc_canCopy.sqf create mode 100644 addons/rangecard/functions/fnc_canShow.sqf create mode 100644 addons/rangecard/functions/fnc_canShowCopy.sqf create mode 100644 addons/rangecard/functions/fnc_onCloseDialog.sqf create mode 100644 addons/rangecard/functions/fnc_openRangeCard.sqf create mode 100644 addons/rangecard/functions/fnc_updateClassNames.sqf create mode 100644 addons/rangecard/functions/fnc_updateRangeCard.sqf create mode 100644 addons/rangecard/functions/script_component.hpp create mode 100644 addons/rangecard/initKeybinds.sqf create mode 100644 addons/rangecard/script_component.hpp create mode 100644 addons/rangecard/stringtable.xml diff --git a/addons/rangecard/$PBOPREFIX$ b/addons/rangecard/$PBOPREFIX$ new file mode 100644 index 0000000000..b319ce4b0d --- /dev/null +++ b/addons/rangecard/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\rangecard \ No newline at end of file diff --git a/addons/rangecard/CfgEventHandlers.hpp b/addons/rangecard/CfgEventHandlers.hpp new file mode 100644 index 0000000000..3996e3371d --- /dev/null +++ b/addons/rangecard/CfgEventHandlers.hpp @@ -0,0 +1,11 @@ +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE( call COMPILE_FILE(XEH_preInit) ); + }; +}; + +class Extended_PostInit_EventHandlers { + class ADDON { + init = QUOTE( call COMPILE_FILE(XEH_postInit) ); + }; +}; \ No newline at end of file diff --git a/addons/rangecard/CfgVehicles.hpp b/addons/rangecard/CfgVehicles.hpp new file mode 100644 index 0000000000..b3c75c62ec --- /dev/null +++ b/addons/rangecard/CfgVehicles.hpp @@ -0,0 +1,60 @@ +class CfgVehicles { + class Man; + class CAManBase: Man { + class ACE_Actions { + class ACE_Weapon { + class GVAR(copyRangeCard) { + displayName = "$STR_ACE_RangeCard_CopyRangeCard"; + distance = 2.0; + condition = QUOTE(_target call FUNC(canCopy)); + statement = QUOTE(_target call FUNC(updateClassNames)); + icon = QUOTE(PATHTOF(UI\RangeCard_Icon.paa)); + }; + }; + }; + class ACE_SelfActions { + class ACE_Equipment { + class GVAR(open) { + displayName = "$STR_ACE_RangeCard_OpenRangeCard"; + condition = QUOTE(call FUNC(canShow) && !GVAR(RangeCardOpened)); + statement = QUOTE(false call FUNC(openRangeCard)); + showDisabled = 0; + priority = 0.1; + icon = QUOTE(PATHTOF(UI\RangeCard_Icon.paa)); + exceptions[] = {"notOnMap"}; + }; + class GVAR(openCopy) { + displayName = "$STR_ACE_RangeCard_OpenRangeCardCopy"; + condition = QUOTE(call FUNC(canShowCopy) && !GVAR(RangeCardOpened)); + statement = QUOTE(true call FUNC(openRangeCard)); + showDisabled = 0; + priority = 0.1; + icon = QUOTE(PATHTOF(UI\RangeCard_Icon.paa)); + exceptions[] = {"notOnMap"}; + }; + }; + }; + }; + + class Item_Base_F; + class ACE_Item_RangeCard: Item_Base_F { + author = "Ruthberg"; + scope = 2; + scopeCurator = 2; + displayName = "Range Card"; + vehicleClass = "Items"; + class TransportItems { + class ACE_RangeCard { + name = "ACE_RangeCard"; + count = 1; + }; + }; + }; + + class Box_NATO_Support_F; + class ACE_Box_Misc: Box_NATO_Support_F { + class TransportItems { + MACRO_ADDITEM(ACE_RangeCard,6); + }; + }; +}; diff --git a/addons/rangecard/CfgWeapons.hpp b/addons/rangecard/CfgWeapons.hpp new file mode 100644 index 0000000000..0bd3e7daf6 --- /dev/null +++ b/addons/rangecard/CfgWeapons.hpp @@ -0,0 +1,19 @@ + +class CfgWeapons { + class ACE_ItemCore; + class InventoryItem_Base_F; + + class ACE_RangeCard: ACE_ItemCore { + author[] = {"Ruthberg"}; + scope = 2; + displayName = "$STR_ACE_RangeCard_Name"; + descriptionShort = "$STR_ACE_RangeCard_Description"; + picture = PATHTOF(UI\RangeCard_Icon.paa); + icon = "iconObject_circle"; + mapSize = 0.034; + + class ItemInfo: InventoryItem_Base_F { + mass = 1; + }; + }; +}; diff --git a/addons/rangecard/README.md b/addons/rangecard/README.md new file mode 100644 index 0000000000..c96e151869 --- /dev/null +++ b/addons/rangecard/README.md @@ -0,0 +1,10 @@ +ace_rangecards +=============== + +Adds range cards + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [Ruthberg] (http://github.com/Ulteq) \ No newline at end of file diff --git a/addons/rangecard/RscTitles.hpp b/addons/rangecard/RscTitles.hpp new file mode 100644 index 0000000000..c4da1862ca --- /dev/null +++ b/addons/rangecard/RscTitles.hpp @@ -0,0 +1,198 @@ +#define ST_LEFT 0 +#define ST_RIGHT 1 +#define ST_CENTER 2 + +class RscListNBox; +class ScrollBar; + +class RangeCard_RscText { + idc=-1; + type=0; + style=ST_CENTER; + colorDisabled[]={0,0,0,0.0}; + colorBackground[]={0,0,0,0}; + colorText[]={0,0,0,1}; + text=""; + x=0; + y=0; + h=0.028; + w=0.06; + font="TahomaB"; + SizeEx=0.025; + shadow=0; +}; + +class RangeCard_RscListNBox: RscListNBox { + idc=-1; + type=102; + style=0; + font="TahomaB"; + sizeEx=0.026; + rowHeight=0.027; + colorDisabled[]={0,0,0,0.0}; + colorBackground[]={1,1,1,1}; + colorText[]={0,0,0,1}; + colorScrollbar[]={0.95,0.95,0.95,1}; + colorSelect[]={0,0,0,1}; + colorSelect2[]={0,0,0,1}; + colorSelectBackground[]={1,1,1,0}; + colorSelectBackground2[]={1,1,1,0}; + period=0; + LineSpacing=0; + maxHistoryDelay=1.0; + autoScrollSpeed=-1; + autoScrollDelay=5; + autoScrollRewind=0; + soundSelect[]={"",0.09,1}; + drawSideArrows=0; + idcLeft=-1; + idcRight=-1; + + class ScrollBar { + color[]={1,1,1,0.6}; + colorActive[]={1,1,1,1}; + colorDisabled[]={1,1,1,0.3}; + }; + + class ListScrollBar : ScrollBar { + }; +}; + +class ACE_RangeCard_Dialog { + idd = -1; + movingEnable = 1; + onLoad = "uiNamespace setVariable ['RangleCard_Display', (_this select 0)]"; + onUnload = QUOTE(_this call FUNC(onCloseDialog)); + objects[] = {}; + + class controls { + class BACKGROUND { + moving=1; + type=0; + font="TahomaB"; + SizeEX=0.025; + idc=-1; + style=48; + x="safezoneX"; + y="safezoneY+0.181889"; + w="1.62727*3/4"; + h="1.62727"; + colorBackground[]={1,1,1,1}; + colorText[]={1,1,1,1}; + text=QUOTE(PATHTOF(UI\RangeCard.paa)); + }; + class CAPTION_TEXT_1: RangeCard_RscText { + idc=770000; + style=ST_LEFT; + x="safezoneX+0.18"; + y="safezoneY+0.181889+0.0"; + w="0.56*1.62727*3/4"; + text=".408 CheyTac - 410 gr Predator Projectiles"; + }; + class CAPTION_TEXT_2: CAPTION_TEXT_1 { + idc=770001; + SizeEx=0.022; + y="safezoneY+0.181889+0.03"; + text="Drop Tables for B.P.: 1013.25mb; Corrected for MVV at Air/Ammo Temperatures -15-35 °C"; + }; + class CAPTION_TEXT_3: CAPTION_TEXT_2 { + idc=770002; + y="safezoneY+0.181889+0.06"; + text="CheyTac Intervention - 29'' 1:13'' twist (M-200)"; + }; + class ZERO_RANGE_TEXT: RangeCard_RscText { + idc=77003; + style=ST_LEFT; + SizeEx=0.028; + x="safezoneX+0.885"; + y="safezoneY+0.181889+0.01"; + w="0.125*1.62727*3/4"; + text="100m ZERO"; + }; + class BAROMETRIC_PRESSURE_TEXT: ZERO_RANGE_TEXT { + idc=77004; + colorText[]={1,0,0,0.8}; + y="safezoneY+0.181889+0.05"; + text="B.P.: 1013.25mb"; + }; + class TARGET_RANGE_TEXT_1: RangeCard_RscText { + idc=770010; + colorText[]={1,1,1,1}; + x="safezoneX+0.185"; + y="safezoneY+0.181889+0.098"; + text="Target"; + }; + class TARGET_RANGE_TEXT_2: TARGET_RANGE_TEXT_1 { + idc=770011; + SizeEx=0.03; + y="safezoneY+0.181889+0.125"; + text="Range"; + }; + class TARGET_RANGE_TEXT_3: TARGET_RANGE_TEXT_1 { + idc=770012; + y="safezoneY+0.181889+0.152"; + text="(m)"; + }; + class BULLET_DROP_TEXT_1: RangeCard_RscText { + idc=770013; + x="safezoneX+0.25"; + y="safezoneY+0.181889+0.095"; + w="0.405*1.62727*3/4"; + text="Bullet Drop (MRADs)"; + }; + class WIND_LEAD_CAPTION_LIST: RangeCard_RscListNBox { + idc=770100; + sizeEx=0.021; + x="safezoneX+0.728"; + y="safezoneY+0.181889+0.091"; + w="0.25*1.62727*3/4"; + h="0.0909445"; + columns[]={(0.03/2), (0.985/2)}; + idcLeft=770101; + idcRight=770102; + }; + class TEMPERATURE_CAPTION_LIST_1: RangeCard_RscListNBox { + idc=770200; + x="safezoneX+0.24"; + y="safezoneY+0.181889+0.125"; + w="0.405*1.62727*3/4"; + h="0.0909445"; + columns[]={(0/9), (1/9), (2/9), (3/9), (4/9), (5/9), (5.9/9), (6.9/9), (7.8/9)}; + idcLeft=770201; + idcRight=770202; + }; + class TEMPERATURE_CAPTION_LIST_2: RangeCard_RscListNBox { + idc=770300; + x="safezoneX+0.728"; + y="safezoneY+0.181889+0.15"; + w="0.25*1.62727*3/4"; + h="0.0909445"; + columns[]={(0/6), (0.9/6), (1.8/6), (2.9/6), (3.8/6), (4.8/6)}; + idcLeft=770301; + idcRight=770302; + }; + class RANGE_CARD_DATA: RangeCard_RscListNBox { + idc=770400; + x="safezoneX+0.182"; + y="safezoneY+0.181889+0.194"; + w="0.72*1.62727*3/4"; + h="1.62727"; + columns[]={(0/16), (1.2/16), (2.2/16), (3.2/16), (4.2/16), (5.1/16), (6.1/16), (7.1/16), (8.1/16), + (9/16), (10.2/16), (11/16), (11.9/16), (12.8/16), (13.7/16), (14.6/16)}; + idcLeft=770401; + idcRight=770402; + }; + class FOOTNOTE_TEXT_1: CAPTION_TEXT_1 { + idc=770020; + SizeEx=0.022; + y="safezoneY+1.72431"; + w="0.705*1.62727*3/4"; + text="For best results keep ammunition at ambient air temperature. Tables calculated for the above listed barrel"; + }; + class FOOTNOTE_TEXT_2: FOOTNOTE_TEXT_1 { + idc=770021; + y="safezoneY+1.72431+0.024"; + text="and load with optic mounted 1.5'' above line of bore."; + }; + }; +}; diff --git a/addons/rangecard/UI/RangeCard.paa b/addons/rangecard/UI/RangeCard.paa new file mode 100644 index 0000000000000000000000000000000000000000..56f0bfd30c3695d1b6a8847023dd14c3123d55a2 GIT binary patch literal 41222 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 literal 0 HcmV?d00001 diff --git a/addons/rangecard/XEH_postInit.sqf b/addons/rangecard/XEH_postInit.sqf new file mode 100644 index 0000000000..2b11b574e1 --- /dev/null +++ b/addons/rangecard/XEH_postInit.sqf @@ -0,0 +1,11 @@ +#include "script_component.hpp" + +#include "initKeybinds.sqf" + +GVAR(RangeCardOpened) = false; + +GVAR(ammoClass) = "B_65x39_Caseless"; +GVAR(weaponClass) = "arifle_MXM_F"; + +GVAR(ammoClassCopy) = "";//"ACE_762x51_Ball_M118LR"; +GVAR(weaponClassCopy) = "";//srifle_DMR_06_olive_F"; diff --git a/addons/rangecard/XEH_preInit.sqf b/addons/rangecard/XEH_preInit.sqf new file mode 100644 index 0000000000..5e5685d30f --- /dev/null +++ b/addons/rangecard/XEH_preInit.sqf @@ -0,0 +1,14 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP(calculateSolution); +PREP(canCopy); +PREP(canShow); +PREP(canShowCopy); +PREP(onCloseDialog); +PREP(openRangeCard); +PREP(updateClassNames); +PREP(updateRangeCard); + +ADDON = true; diff --git a/addons/rangecard/config.cpp b/addons/rangecard/config.cpp new file mode 100644 index 0000000000..abe4e859f2 --- /dev/null +++ b/addons/rangecard/config.cpp @@ -0,0 +1,17 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {"ACE_Item_RangeCard"}; + weapons[] = {"ACE_RangeCard"}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ACE_Advanced_Ballistics"}; + author = "Ruthberg"; + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" +#include "CfgVehicles.hpp" +#include "CfgWeapons.hpp" +#include "RscTitles.hpp" \ No newline at end of file diff --git a/addons/rangecard/functions/fnc_calculateSolution.sqf b/addons/rangecard/functions/fnc_calculateSolution.sqf new file mode 100644 index 0000000000..68189ac36b --- /dev/null +++ b/addons/rangecard/functions/fnc_calculateSolution.sqf @@ -0,0 +1,218 @@ +/* + * Author: Ruthberg + * Calculates the range card data + * + * Arguments: + * 0: Scope base angle + * 1: Bullet mass + * 2: Bore height + * 3: air friction + * 4: muzzle velocity + * 5: temperature + * 6: barometric pressure + * 7: relative humidity + * 8: simulation steps + * 9: wind speed + * 10: wind direction + * 11: inclination angle + * 12: target speed + * 13: target range + * 14: ballistic coefficient + * 15: drag model + * 16: atmosphere model + * 17: Store range card data? + * 18: Stability factor + * 19: Twist Direction + * 20: Latitude + * 21: Range Card Slot + * + * Return Value: + * 0: Elevation (MOA) + * 1: Windage (MOA) + * 2: Lead (MOA) + * 3: Time of fligth (SECONDS) + * 4: Remaining velocity (m/s) + * 5: Remaining kinetic energy (ft·lb) + * 6: Vertical coriolis drift (MOA) + * 7: Horizontal coriolis drift (MOA) + * 8: Spin drift (MOA) + * + * Example: + * call ace_rangecard_calculate_range_card_data + * + * Public: No + */ +#include "script_component.hpp" + +private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire", "_rangeCardSlot"]; +_scopeBaseAngle = _this select 0; +_bulletMass = _this select 1; +_boreHeight = _this select 2; +_airFriction = _this select 3; +_muzzleVelocity = _this select 4; +_temperature = _this select 5; +_barometricPressure = _this select 6; +_relativeHumidity = _this select 7; +_simSteps = _this select 8; +_windSpeed1 = (_this select 9) select 0; +_windSpeed2 = (_this select 9) select 1; +_windDirection = _this select 10; +_inclinationAngle = _this select 11; +_targetSpeed = _this select 12; +_targetRange = _this select 13; +_bc = _this select 14; +_dragModel = _this select 15; +_atmosphereModel = _this select 16; +_storeRangeCardData = _this select 17; +_stabilityFactor = _this select 18; +_twistDirection = _this select 19; +_latitude = _this select 20; +_directionOfFire = _this select 21; +_rangeCardSlot = _this select 22; + +if (_storeRangeCardData) then { + GVAR(rangeCardDataMVs) pushBack format[" %1", round(_muzzleVelocity)]; +}; + +private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"]; +_bulletPos = [0, 0, 0]; +_bulletVelocity = [0, 0, 0]; +_bulletAccel = [0, 0, 0]; +_bulletSpeed = 0; +_gravity = [0, sin(_scopeBaseAngle + _inclinationAngle) * -9.80665, cos(_scopeBaseAngle + _inclinationAngle) * -9.80665]; +_deltaT = 1 / _simSteps; + +private ["_elevation", "_windage1", "_windage2", "_lead", "_TOF", "_trueVelocity", "_trueSpeed", "_kineticEnergy", "_verticalCoriolis", "_verticalDeflection", "_horizontalCoriolis", "_horizontalDeflection", "_spinDrift", "_spinDeflection"]; +_elevation = 0; +_windage1 = 0; +_windage2 = 0; +_lead = 0; +_TOF = 0; +_trueVelocity = [0, 0, 0]; +_trueSpeed = 0; +_verticalCoriolis = 0; +_verticalDeflection = 0; +_horizontalCoriolis = 0; +_horizontalDeflection = 0; +_spinDrift = 0; +_spinDeflection = 0; + +private ["_n", "_range", "_rangeFactor"]; +_n = 0; +_range = 0; +_rangeFactor = 1; +if (_storeRangeCardData) then { + if (GVAR(currentUnit) == 1) then { + _rangeFactor = 1.0936133; + }; +}; + +private ["_wind1", "_wind2", "_windDrift"]; +_wind1 = [cos(270 - _windDirection * 30) * _windSpeed1, sin(270 - _windDirection * 30) * _windSpeed1, 0]; +_wind2 = [cos(270 - _windDirection * 30) * _windSpeed2, sin(270 - _windDirection * 30) * _windSpeed2, 0]; +_windDrift = 0; +if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + _bc = [_bc, _temperature, _barometricPressure, _relativeHumidity, _atmosphereModel] call EFUNC(advanced_ballistics,calculateAtmosphericCorrection); +}; + +private ["_speedTotal", "_stepsTotal", "_speedAverage"]; +_speedTotal = 0; +_stepsTotal = 0; +_speedAverage = 0; + +private ["_eoetvoesMultiplier"]; +_eoetvoesMultiplier = 0; +if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + _eoetvoesMultiplier = 2 * (0.0000729 * _muzzleVelocity / -9.80665) * cos(_latitude) * sin(_directionOfFire); +}; + +_TOF = 0; + +_bulletPos set [0, 0]; +_bulletPos set [1, 0]; +_bulletPos set [2, -(_boreHeight / 100)]; + +_bulletVelocity set [0, 0]; +_bulletVelocity set [1, Cos(_scopeBaseAngle) * _muzzleVelocity]; +_bulletVelocity set [2, Sin(_scopeBaseAngle) * _muzzleVelocity]; + +while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do { + _bulletSpeed = vectorMagnitude _bulletVelocity; + + _speedTotal = _speedTotal + _bulletSpeed; + _stepsTotal = _stepsTotal + 1; + _speedAverage = (_speedTotal / _stepsTotal); + + if (_speedAverage > 400 && _bulletSpeed < 340) exitWith {}; + if (atan((_bulletPos select 2) / (abs(_bulletPos select 1) + 1)) < -2.25) exitWith {}; + + _trueVelocity = _bulletVelocity vectorDiff _wind1; + _trueSpeed = vectorMagnitude _trueVelocity; + + if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then { + parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed])) + } else { + ([_dragModel, _bc, _trueSpeed] call EFUNC(advanced_ballistics,calculateRetardation)) + }; + _bulletAccel = (vectorNormalized _trueVelocity) vectorMultiply (-1 * _drag); + } else { + _bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction); + }; + + _bulletAccel = _bulletAccel vectorAdd _gravity; + + _bulletVelocity = _bulletVelocity vectorAdd (_bulletAccel vectorMultiply _deltaT); + _bulletPos = _bulletPos vectorAdd (_bulletVelocity vectorMultiply _deltaT); + + _TOF = _TOF + _deltaT; + + if (_storeRangeCardData) then { + _range = GVAR(rangeCardStartRange) + _n * GVAR(rangeCardIncrement); + if ((_bulletPos select 1) * _rangeFactor >= _range && _range <= GVAR(rangeCardEndRange)) then { + if ((_bulletPos select 1) > 0) then { + _elevation = - atan((_bulletPos select 2) / (_bulletPos select 1)); + _windage1 = - atan((_bulletPos select 0) / (_bulletPos select 1)); + }; + if (_range != 0) then { + _lead = (_targetSpeed * _TOF) / (Tan(3.38 / 60) * _range); + }; + private ["_elevationString", "_windageString", "_leadString"]; + _elevationString = Str(round(-_elevation * 60 / 3.38 * 10) / 10); + if (_elevationString == "0") then { + _elevationString = "-0.0"; + }; + if (_elevationString find "." == -1) then { + _elevationString = _elevationString + ".0"; + }; + _windageString = Str(round(_windage1 * 60 / 3.38 * 10) / 10); + if (_windageString find "." == -1) then { + _windageString = _windageString + ".0"; + }; + _leadString = Str(round(_lead * 10) / 10); + if (_leadString find "." == -1) then { + _leadString = _leadString + ".0"; + }; + (GVAR(rangeCardDataElevation) select _rangeCardSlot) set [_n, _elevationString]; + (GVAR(rangeCardDataWindage) select _rangeCardSlot) set [_n, _windageString]; + (GVAR(rangeCardDataLead) select _rangeCardSlot) set [_n, _leadString]; + _n = _n + 1; + }; + }; +}; + +if ((_bulletPos select 1) > 0) then { + _elevation = - atan((_bulletPos select 2) / (_bulletPos select 1)); + _windage1 = - atan((_bulletPos select 0) / (_bulletPos select 1)); + _windDrift = (_wind2 select 0) * (_TOF - _targetRange / _muzzleVelocity); + _windage2 = - atan(_windDrift / (_bulletPos select 1)); +}; + +if (_targetRange != 0) then { + _lead = (_targetSpeed * _TOF) / (Tan(3.38 / 60) * _targetRange); +}; + +_kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2)); +_kineticEnergy = _kineticEnergy * 0.737562149; + +[_elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy, _verticalCoriolis * 60, _horizontalCoriolis * 60, _spinDrift * 60] \ No newline at end of file diff --git a/addons/rangecard/functions/fnc_canCopy.sqf b/addons/rangecard/functions/fnc_canCopy.sqf new file mode 100644 index 0000000000..c9e0a05d0e --- /dev/null +++ b/addons/rangecard/functions/fnc_canCopy.sqf @@ -0,0 +1,18 @@ +/* + * Authors: Ruthberg + * Checks if the target has a copyable range card + * + * Arguments: + * unit + * + * Return Value: + * canShow (bool) + * + * Example: + * [] call ace_rangecard_fnc_canCopy + * + * Public: No + */ +#include "script_component.hpp" + +((primaryWeapon _this) != "" && [_this] call EFUNC(common,isPlayer) && [_this, "ACE_RangeCard"] call EFUNC(common,hasItem)) diff --git a/addons/rangecard/functions/fnc_canShow.sqf b/addons/rangecard/functions/fnc_canShow.sqf new file mode 100644 index 0000000000..d069048acb --- /dev/null +++ b/addons/rangecard/functions/fnc_canShow.sqf @@ -0,0 +1,18 @@ +/* + * Authors: Ruthberg + * Tests if the Range Card can be shown + * + * Arguments: + * Nothing + * + * Return Value: + * canShow (bool) + * + * Example: + * [] call ace_rangecard_fnc_canShow + * + * Public: No + */ +#include "script_component.hpp" + +(GVAR(ammoClass) != "" && GVAR(weaponClass) != "" && !GVAR(RangeCardOpened) && !(underwater ACE_player) && ("ACE_RangeCard" in (uniformItems ACE_player)) || ("ACE_RangeCard" in (vestItems ACE_player))) diff --git a/addons/rangecard/functions/fnc_canShowCopy.sqf b/addons/rangecard/functions/fnc_canShowCopy.sqf new file mode 100644 index 0000000000..1dd1318764 --- /dev/null +++ b/addons/rangecard/functions/fnc_canShowCopy.sqf @@ -0,0 +1,18 @@ +/* + * Authors: Ruthberg + * Tests if the Range Card copy can be shown + * + * Arguments: + * Nothing + * + * Return Value: + * canShow (bool) + * + * Example: + * [] call ace_rangecard_fnc_canShowCopy + * + * Public: No + */ +#include "script_component.hpp" + +(GVAR(ammoClassCopy) != "" && GVAR(weaponClassCopy) != "" && !GVAR(RangeCardOpened) && !(underwater ACE_player) && ("ACE_RangeCard" in (uniformItems ACE_player)) || ("ACE_RangeCard" in (vestItems ACE_player))) diff --git a/addons/rangecard/functions/fnc_onCloseDialog.sqf b/addons/rangecard/functions/fnc_onCloseDialog.sqf new file mode 100644 index 0000000000..f5d971f22f --- /dev/null +++ b/addons/rangecard/functions/fnc_onCloseDialog.sqf @@ -0,0 +1,4 @@ +#include "script_component.hpp" + +uiNamespace setVariable ['RangleCard_Display', nil]; +GVAR(RangeCardOpened) = false; diff --git a/addons/rangecard/functions/fnc_openRangeCard.sqf b/addons/rangecard/functions/fnc_openRangeCard.sqf new file mode 100644 index 0000000000..2c59ef1da1 --- /dev/null +++ b/addons/rangecard/functions/fnc_openRangeCard.sqf @@ -0,0 +1,36 @@ +/* + * Authors: Ruthberg + * Opens the range card dialog + * + * Arguments: + * Open copy? + * + * Return Value: + * Nothing + * + * Example: + * call ace_rangecard_fnc_openRangeCard + * + * Public: No + */ +#include "script_component.hpp" + +if (GVAR(RangeCardOpened)) exitWith {}; + +if (_this) then { + if (GVAR(ammoClassCopy) != "" && GVAR(weaponClassCopy) != "") then { + GVAR(RangeCardOpened) = true; + + createDialog "ACE_RangeCard_Dialog"; + + [GVAR(ammoClassCopy), GVAR(weaponClassCopy)] call FUNC(updateRangeCard); + }; +} else { + if (ACE_player call FUNC(updateClassNames)) then { + GVAR(RangeCardOpened) = true; + + createDialog "ACE_RangeCard_Dialog"; + + [GVAR(ammoClass), GVAR(weaponClass)] call FUNC(updateRangeCard); + }; +}; diff --git a/addons/rangecard/functions/fnc_updateClassNames.sqf b/addons/rangecard/functions/fnc_updateClassNames.sqf new file mode 100644 index 0000000000..203b2db926 --- /dev/null +++ b/addons/rangecard/functions/fnc_updateClassNames.sqf @@ -0,0 +1,43 @@ +/* + * Authors: Ruthberg + * Updates the ammo and weapon class names + * + * Arguments: + * unit + * + * Return Value: + * Update successful? + * + * Example: + * unit call ace_rangecard_fnc_updateClassNames + * + * Public: No + */ +#include "script_component.hpp" + +private ["_unit", "_ammoClass", "_weaponClass", "_ammo", "_ammoConfig", "_parentClasses"]; +_unit = _this; + +_ammoClass = ""; +_weaponClass = primaryWeapon _unit; + +if (_weaponClass == "") exitWith { (GVAR(ammoClass) != "" && GVAR(weaponClass) != "") }; + +{ + _ammo = getText (configFile >> "CfgMagazines" >> _x >> "ammo"); + _ammoConfig = (configFile >> "CfgAmmo" >> _ammo); + _parentClasses = [_ammoConfig, true] call BIS_fnc_returnParents; + if ("BulletBase" in _parentClasses) exitWith { _ammoClass = _ammo; }; +} forEach (primaryWeaponMagazine _unit); + +if (_ammoClass == "") exitWith { (GVAR(ammoClass) != "" && GVAR(weaponClass) != "") }; + +if (_unit == ACE_player) then { + GVAR(ammoClass) = _ammoClass; + GVAR(weaponClass) = _weaponClass; +} else { + GVAR(ammoClassCopy) = _ammoClass; + GVAR(weaponClassCopy) = _weaponClass; +}; + +true diff --git a/addons/rangecard/functions/fnc_updateRangeCard.sqf b/addons/rangecard/functions/fnc_updateRangeCard.sqf new file mode 100644 index 0000000000..a01b82af91 --- /dev/null +++ b/addons/rangecard/functions/fnc_updateRangeCard.sqf @@ -0,0 +1,118 @@ +/* + * Authors: Ruthberg + * Updates the range card data + * + * Arguments: + * 0: ammo class + * 1: weapon class + * + * Return Value: + * Nothing + * + * Example: + * [mode] call ace_rangecard_fnc_openRangeCard + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_ammoClass,_weaponClass); + +if (_ammoClass == "" || _weaponClass == "") exitWith {}; + +lnbClear 770100; +lnbClear 770200; +lnbClear 770300; +lnbClear 770400; + +lnbAddRow [770100, ["4mps Wind(MRADs)", "1mps LEAD(MRADs)"]]; +lnbAddRow [770100, ["Air/Ammo Temp", "Air/Ammo Temp"]]; + +lnbAddRow [770200, ["-15°C", " -5°C", " 5°C", " 10°C", " 15°C", " 20°C", " 25°C", " 30°C", " 35°C"]]; +lnbAddRow [770300, ["-15°C", " 10°C", " 35°C", "-15°C", " 10°C", " 35°C"]]; + +GVAR(rangeCardDataElevation) = [[], [], [], [], [], [], [], [], []]; +GVAR(rangeCardDataWindage) = [[], [], [], [], [], [], [], [], []]; +GVAR(rangeCardDataLead) = [[], [], [], [], [], [], [], [], []]; +GVAR(rangeCardDataMVs) = []; +GVAR(lastValidRow) = []; + +GVAR(currentUnit) = 2; +GVAR(rangeCardStartRange) = 100; +GVAR(rangeCardIncrement) = 50; +GVAR(rangeCardEndRange) = GVAR(rangeCardStartRange) + 49 * GVAR(rangeCardIncrement); + +_ammoConfig = _ammoClass call EFUNC(advanced_ballistics,readAmmoDataFromConfig); +_weaponConfig = _weaponClass call EFUNC(advanced_ballistics,readWeaponDataFromConfig); +_airFriction = _ammoConfig select 0; +_barrelTwist = _weaponConfig select 0; +_barrelLength = _weaponConfig select 2; +_muzzleVelocity = [_barrelLength, _ammoConfig select 10, _ammoConfig select 11, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift); + +ctrlSetText [770000, format["%1'' - %2 gr (%3)", round((_ammoConfig select 1) * 39.3700787) / 1000, round((_ammoConfig select 3) * 15.4323584), _ammoClass]]; +ctrlSetText [770002, format["Barrel: %1'' 1:%2'' twist", round(_barrelLength * 0.0393700787), round(_barrelTwist * 0.0393700787)]]; + +_bc = (_ammoConfig select 6) select 0; +_dragModel = _ammoConfig select 5; +_atmosphereModel = _ammoConfig select 8; +_boreHeight = 3.81; +_zeroRange = 100; + +_barometricPressure = EGVAR(weather,altitude) call EFUNC(weather,calculateBarometricPressure); +_relativeHumidity = 0.5; + +ctrlSetText [770001, format["Drop Tables for B.P.: %1mb; Corrected for MVV at Air/Ammo Temperatures -15-35 °C", round(_barometricPressure * 100) / 100]]; +ctrlSetText [77004 , format["B.P.: %1mb", round(_barometricPressure * 100) / 100]]; + +_cacheEntry = missionNamespace getVariable format[QGVAR(%1_%2), _ammoClass, _weaponClass]; +if (isNil {_cacheEntry}) then { + { + _mvShift = [_ammoConfig select 9, _x] call EFUNC(advanced_ballistics,calculateAmmoTemperatureVelocityShift); + _mv = _muzzleVelocity + _mvShift; + + _result = [0, 0, _boreHeight, _airFriction, _mv, _x, 1013.25, 0.5, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculateSolution); + _scopeBaseAngle = (_result select 0) / 60; + + [_scopeBaseAngle,27,_boreHeight,_airFriction,_mv,_x,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,4,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,_forEachIndex] call FUNC(calculateSolution); + } forEach [-15, -5, 5, 10, 15, 20, 25, 30, 35]; + + for "_i" from 0 to 9 do { + GVAR(lastValidRow) pushBack count (GVAR(rangeCardDataElevation) select _i); + while {count (GVAR(rangeCardDataElevation) select _i) < 50} do { + (GVAR(rangeCardDataElevation) select _i) pushBack "###"; + (GVAR(rangeCardDataWindage) select _i) pushBack "##"; + (GVAR(rangeCardDataLead) select _i) pushBack "##"; + }; + }; + + missionNamespace setVariable [format[QGVAR(%1_%2), _ammoClass, _weaponClass], [GVAR(rangeCardDataElevation), GVAR(rangeCardDataWindage), GVAR(rangeCardDataLead), GVAR(rangeCardDataMVs), GVAR(lastValidRow)]]; +} else { + GVAR(rangeCardDataElevation) = _cacheEntry select 0; + GVAR(rangeCardDataWindage) = _cacheEntry select 1; + GVAR(rangeCardDataLead) = _cacheEntry select 2; + GVAR(rangeCardDataMVs) = _cacheEntry select 3; + GVAR(lastValidRow) = _cacheEntry select 4; +}; + +lnbAddRow [770200, GVAR(rangeCardDataMVs)]; + +for "_i" from 0 to 49 do { + lnbAddRow [770400, [Str(GVAR(rangeCardStartRange) + GVAR(rangeCardIncrement) * _i), (GVAR(rangeCardDataElevation) select 0) select _i, (GVAR(rangeCardDataElevation) select 1) select _i, (GVAR(rangeCardDataElevation) select 2) select _i, + (GVAR(rangeCardDataElevation) select 3) select _i, (GVAR(rangeCardDataElevation) select 4) select _i, (GVAR(rangeCardDataElevation) select 5) select _i, + (GVAR(rangeCardDataElevation) select 6) select _i, (GVAR(rangeCardDataElevation) select 7) select _i, (GVAR(rangeCardDataElevation) select 8) select _i, + (GVAR(rangeCardDataWindage) select 0) select _i, (GVAR(rangeCardDataWindage) select 3) select _i, (GVAR(rangeCardDataWindage) select 8) select _i, + (GVAR(rangeCardDataLead) select 0) select _i, (GVAR(rangeCardDataLead) select 3) select _i, (GVAR(rangeCardDataLead) select 8) select _i]]; +}; + +#define __dsp (uiNamespace getVariable "RangleCard_Display") +#define __ctrlListNBox (__dsp displayCtrl 770400) + +{ + __ctrlListNBox lnbSetColor [[_x, 0], [1, 1, 1, 1]]; +} forEach [0, 8, 18, 28, 38, 48]; + +{ + for "_i" from (GVAR(lastValidRow) select _x) to 49 do { + __ctrlListNBox lnbSetColor [[_i, _forEachIndex + 1], [0, 0, 0, 0.6]]; + }; +} forEach [0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 3, 8, 0, 3, 8]; diff --git a/addons/rangecard/functions/script_component.hpp b/addons/rangecard/functions/script_component.hpp new file mode 100644 index 0000000000..fdc4a3d486 --- /dev/null +++ b/addons/rangecard/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\rangecard\script_component.hpp" \ No newline at end of file diff --git a/addons/rangecard/initKeybinds.sqf b/addons/rangecard/initKeybinds.sqf new file mode 100644 index 0000000000..519b4730cc --- /dev/null +++ b/addons/rangecard/initKeybinds.sqf @@ -0,0 +1,31 @@ +["ACE3 Equipment", QGVAR(RangeCardDialogKey), localize "STR_ACE_RangeCard_RangeCardDialogKey", +{ + // Conditions: canInteract, canShow + if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; + if (GVAR(RangeCardOpened)) exitWith { + closeDialog 0; + false + }; + if !(call FUNC(canShow)) exitWith {false}; + // Statement + false call FUNC(openRangeCard); + true +}, +{false}, +[0, [false, false, false]], false, 0] call CBA_fnc_addKeybind; // (empty default key) + +["ACE3 Equipment", QGVAR(RangeCardCopyDialogKey), localize "STR_ACE_RangeCard_RangeCardCopyDialogKey", +{ + // Conditions: canInteract, canShowCopy + if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; + if (GVAR(RangeCardOpened)) exitWith { + closeDialog 0; + false + }; + if !(call FUNC(canShowCopy)) exitWith {false}; + // Statement + true call FUNC(openRangeCard); + true +}, +{false}, +[0, [false, false, false]], false, 0] call CBA_fnc_addKeybind; // (empty default key) \ No newline at end of file diff --git a/addons/rangecard/script_component.hpp b/addons/rangecard/script_component.hpp new file mode 100644 index 0000000000..8281f77eb3 --- /dev/null +++ b/addons/rangecard/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT rangecard +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_RANGECARD + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_RANGECARD + #define DEBUG_SETTINGS DEBUG_SETTINGS_RANGECARD +#endif + +#include "\z\ace\addons\main\script_macros.hpp" diff --git a/addons/rangecard/stringtable.xml b/addons/rangecard/stringtable.xml new file mode 100644 index 0000000000..63bcbda13f --- /dev/null +++ b/addons/rangecard/stringtable.xml @@ -0,0 +1,26 @@ + + + + + Range Card + + + 50 METER increments -- MRAD/MRAD (reticle/turrets) + + + Open Range Card + + + Open Range Card Copy + + + Open Range Card + + + Open Range Card Copy + + + Copy Range Card + + + \ No newline at end of file From 4ad82d9629edf24d8614a62c8e785a076cce14cb Mon Sep 17 00:00:00 2001 From: ulteq Date: Thu, 28 May 2015 20:13:22 +0200 Subject: [PATCH 100/252] Switched to ctrlCreate to avoid aspect ratio problems with the listbox. --- addons/rangecard/XEH_postInit.sqf | 2 + .../functions/fnc_updateRangeCard.sqf | 94 +++++++++++++++---- 2 files changed, 77 insertions(+), 19 deletions(-) diff --git a/addons/rangecard/XEH_postInit.sqf b/addons/rangecard/XEH_postInit.sqf index 2b11b574e1..7d475c86f3 100644 --- a/addons/rangecard/XEH_postInit.sqf +++ b/addons/rangecard/XEH_postInit.sqf @@ -4,6 +4,8 @@ GVAR(RangeCardOpened) = false; +GVAR(controls) = []; + GVAR(ammoClass) = "B_65x39_Caseless"; GVAR(weaponClass) = "arifle_MXM_F"; diff --git a/addons/rangecard/functions/fnc_updateRangeCard.sqf b/addons/rangecard/functions/fnc_updateRangeCard.sqf index a01b82af91..fb0995e107 100644 --- a/addons/rangecard/functions/fnc_updateRangeCard.sqf +++ b/addons/rangecard/functions/fnc_updateRangeCard.sqf @@ -16,10 +16,64 @@ */ #include "script_component.hpp" +disableSerialization; +#define __dsp (uiNamespace getVariable "RangleCard_Display") + +private ["_airFriction", "_ammoConfig", "_atmosphereModel", "_barometricPressure", "_barrelLength", "_barrelTwist", "_bc", "_boreHeight", "_cacheEntry", "_column", "_control", "_dragModel", "_i", "_muzzleVelocity", "_mv", "_mvShift", "_offset", "_relativeHumidity", "_result", "_row", "_scopeBaseAngle", "_weaponConfig", "_zeroRange"]; + PARAMS_2(_ammoClass,_weaponClass); if (_ammoClass == "" || _weaponClass == "") exitWith {}; +{ + ctrlDelete _x; +} forEach GVAR(controls); +GVAR(controls) = []; + +for "_row" from 0 to 49 do { + _offset = if (_row < 5) then {0} else {0.003}; + _control = (__dsp ctrlCreate ["RangeCard_RscText", 790000 + _row]); + _control ctrlSetPosition [safeZoneX + 0.183, safeZoneY + 0.374 + 0.027 * _row + _offset, 0.062, 0.025]; + if (_row in [0, 8, 18, 28, 38, 48]) then { + _control ctrlSetTextColor [1, 1, 1, 1]; + } else { + _control ctrlSetTextColor [0, 0, 0, 1]; + }; + _control ctrlCommit 0; + _control ctrlSetText Str(100 + _row * 50); + GVAR(controls) pushBack _control; +}; +for "_column" from 0 to 8 do { + for "_row" from 0 to 49 do { + _offset = if (_row < 5) then {0} else {0.003}; + _control = (__dsp ctrlCreate ["RangeCard_RscText", 90000 + _column * 100 + _row]); + _control ctrlSetPosition [safeZoneX + 0.249 + _column * 0.055, safeZoneY + 0.374 + 0.027 * _row + _offset, 0.052, 0.025]; + _control ctrlCommit 0; + _control ctrlSetText "-0.0"; + GVAR(controls) pushBack _control; + }; +}; +for "_column" from 0 to 2 do { + for "_row" from 0 to 49 do { + _offset = if (_row < 5) then {0} else {0.003}; + _control = (__dsp ctrlCreate ["RangeCard_RscText", 90000 + (9 +_column) * 100 + _row]); + _control ctrlSetPosition [safeZoneX + 0.743 + _column * 0.049, safeZoneY + 0.374 + 0.027 * _row + _offset, 0.047, 0.025]; + _control ctrlCommit 0; + _control ctrlSetText "-0.0"; + GVAR(controls) pushBack _control; + }; +}; +for "_column" from 0 to 2 do { + for "_row" from 0 to 49 do { + _offset = if (_row < 5) then {0} else {0.003}; + _control = (__dsp ctrlCreate ["RangeCard_RscText", 90000 + (12 +_column) * 100 + _row]); + _control ctrlSetPosition [safeZoneX + 0.892 + _column * 0.049, safeZoneY + 0.374 + 0.027 * _row + _offset, 0.047, 0.025]; + _control ctrlCommit 0; + _control ctrlSetText "-0.0"; + GVAR(controls) pushBack _control; + }; +}; + lnbClear 770100; lnbClear 770200; lnbClear 770300; @@ -96,23 +150,25 @@ if (isNil {_cacheEntry}) then { lnbAddRow [770200, GVAR(rangeCardDataMVs)]; -for "_i" from 0 to 49 do { - lnbAddRow [770400, [Str(GVAR(rangeCardStartRange) + GVAR(rangeCardIncrement) * _i), (GVAR(rangeCardDataElevation) select 0) select _i, (GVAR(rangeCardDataElevation) select 1) select _i, (GVAR(rangeCardDataElevation) select 2) select _i, - (GVAR(rangeCardDataElevation) select 3) select _i, (GVAR(rangeCardDataElevation) select 4) select _i, (GVAR(rangeCardDataElevation) select 5) select _i, - (GVAR(rangeCardDataElevation) select 6) select _i, (GVAR(rangeCardDataElevation) select 7) select _i, (GVAR(rangeCardDataElevation) select 8) select _i, - (GVAR(rangeCardDataWindage) select 0) select _i, (GVAR(rangeCardDataWindage) select 3) select _i, (GVAR(rangeCardDataWindage) select 8) select _i, - (GVAR(rangeCardDataLead) select 0) select _i, (GVAR(rangeCardDataLead) select 3) select _i, (GVAR(rangeCardDataLead) select 8) select _i]]; -}; - -#define __dsp (uiNamespace getVariable "RangleCard_Display") -#define __ctrlListNBox (__dsp displayCtrl 770400) - -{ - __ctrlListNBox lnbSetColor [[_x, 0], [1, 1, 1, 1]]; -} forEach [0, 8, 18, 28, 38, 48]; - -{ - for "_i" from (GVAR(lastValidRow) select _x) to 49 do { - __ctrlListNBox lnbSetColor [[_i, _forEachIndex + 1], [0, 0, 0, 0.6]]; +for "_column" from 0 to 8 do { + for "_row" from 0 to 49 do { + _control = (__dsp displayCtrl (90000 + _column * 100 + _row)); + _control ctrlSetText ((GVAR(rangeCardDataElevation) select _column) select _row); + _control ctrlCommit 0; }; -} forEach [0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 3, 8, 0, 3, 8]; +}; +{ + for "_row" from 0 to 49 do { + _control = (__dsp displayCtrl (90000 + (9 + _forEachIndex) * 100 + _row)); + _control ctrlSetText ((GVAR(rangeCardDataWindage) select _x) select _row); + _control ctrlCommit 0; + }; +} forEach [0, 3, 8]; + +{ + for "_row" from 0 to 49 do { + _control = (__dsp displayCtrl (90000 + (12 + _forEachIndex) * 100 + _row)); + _control ctrlSetText ((GVAR(rangeCardDataLead) select _x) select _row); + _control ctrlCommit 0; + }; +} forEach [0, 3, 8]; From 86264a7b7dcab02ed95141101317d68b03639f4b Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 28 May 2015 20:49:30 +0200 Subject: [PATCH 101/252] Reworked ACE_Settings/Module functions to support both dynamically, Added SettingsInitialized --- addons/common/XEH_postInit.sqf | 8 ++ addons/common/functions/fnc_checkPBOs.sqf | 97 +++++++++++++++---- .../common/functions/fnc_moduleCheckPBOs.sqf | 89 +---------------- 3 files changed, 88 insertions(+), 106 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index ba238c2796..c76b5bee7b 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -253,3 +253,11 @@ if(isMultiplayer && { time > 0 || isNull player } ) then { }; }, 0, []] call cba_fnc_addPerFrameHandler; }; + +["SettingsInitialized", { + [ + GVAR(checkPBOsAction), + GVAR(checkPBOsCheckAll), + call compile GVAR(checkPBOsWhitelist) + ] call FUNC(checkPBOs) +}] call FUNC(addEventHandler); diff --git a/addons/common/functions/fnc_checkPBOs.sqf b/addons/common/functions/fnc_checkPBOs.sqf index cce3dccab0..f239074b0b 100644 --- a/addons/common/functions/fnc_checkPBOs.sqf +++ b/addons/common/functions/fnc_checkPBOs.sqf @@ -1,38 +1,95 @@ /* * Author: commy2 - * * Used to execute the checkPBOs module without placing the module. Don't use this together with the module. + * Checks PBO versions and compares to the one running on server. * - * Argument: - * 0: Mode (Number) + * Arguments: + * 0: Mode * 0: Warn once * 1: Warn permanently * 2: Kick - * 1: Check all PBOs? (Boolean, optional default: "[]") - * 2: Whitelist (String, optinal default: false) + * 1: Check all PBOs? (Optional - default: "[]") + * 2: Whitelist (Optinal - default: false) * * Return value: - * None. + * None */ #include "script_component.hpp" -private ["_logic"]; +private ["_mode", "_checkAll", "_whitelist"]; -_this resize 3; +_mode = _this select 0; +_checkAll = if (count _this > 1) then {_this select 1} else {false}; +_whitelist = if (count _this > 2) then {_this select 2} else {"[]"}; -PARAMS_3(_mode,_checkAll,_whitelist); +_whitelist = [_whitelist, {toLower _this}] call FUNC(map); -if (isNil "_checkAll") then { - _checkAll = false; +ACE_Version_CheckAll = _checkAll; +ACE_Version_Whitelist = _whitelist; + +if (!isServer) then { + [_mode, _checkAll, _whitelist] spawn { + private ["_missingAddon", "_missingAddonServer", "_oldVersionClient", "_oldVersionServer", "_text", "_error", "_rscLayer", "_ctrlHint"]; + PARAMS_3(_mode,_checkAll,_whitelist); + + waitUntil { + sleep 1; + !isNil "ACE_Version_ClientErrors" + }; + + _missingAddon = ACE_Version_ClientErrors select 0; + _missingAddonServer = ACE_Version_ClientErrors select 1; + _oldVersionClient = ACE_Version_ClientErrors select 2; + _oldVersionServer = ACE_Version_ClientErrors select 3; + + // Display error message. + if (_missingAddon || {_missingAddonServer} || {_oldVersionClient} || {_oldVersionServer}) then { + _text = "[ACE] Version mismatch:

"; + _error = format ["ACE version mismatch: %1: ", profileName]; + + if (_missingAddon) then { + _text = _text + "Detected missing addon on client
"; + _error = _error + "Missing file(s); "; + }; + if (_missingAddonServer) then { + _text = _text + "Detected missing addon on server
"; + _error = _error + "Additional file(s); "; + }; + if (_oldVersionClient) then { + _text = _text + "Detected old client version
"; + _error = _error + "Older version; "; + }; + if (_oldVersionServer) then { + _text = _text + "Detected old server version
"; + _error = _error + "Newer version; "; + }; + + //[_error, "{systemChat _this}"] call FUNC(execRemoteFnc); + diag_log text _error; + + _text = composeText [lineBreak, parseText format ["%1", _text]]; + + _rscLayer = "ACE_RscErrorHint" call BIS_fnc_rscLayer; + _rscLayer cutRsc ["ACE_RscErrorHint", "PLAIN", 0, true]; + + disableSerialization; + _ctrlHint = uiNamespace getVariable "ACE_ctrlErrorHint"; + _ctrlHint ctrlSetStructuredText _text; + + if (_mode == 0) then { + sleep 10; + _rscLayer cutFadeOut 0.2; + }; + + if (_mode == 2) then { + sleep 10; + waitUntil {alive player}; + [player] call FUNC(adminKick); + }; + }; + }; }; -if (isNil "_whitelist") then { - _whitelist = "[]"; +if (_checkAll) then { + 0 spawn COMPILE_FILE(scripts\Version\checkVersionNumber); }; - -_logic = "Logic" createVehicleLocal [0,0,0]; -_logic setVariable ["Action", _mode]; -_logic setVariable ["CheckAll", _checkAll]; -_logic setVariable ["Whitelist", _whitelist]; -[_logic, [], true] call FUNC(moduleCheckPBOs); -deleteVehicle _logic; diff --git a/addons/common/functions/fnc_moduleCheckPBOs.sqf b/addons/common/functions/fnc_moduleCheckPBOs.sqf index aaea9420b7..9543b3a5c9 100644 --- a/addons/common/functions/fnc_moduleCheckPBOs.sqf +++ b/addons/common/functions/fnc_moduleCheckPBOs.sqf @@ -1,6 +1,5 @@ /* * Author: KoffeinFlummi - * * Initializes the check-PBOs module. * * Arguments: @@ -11,9 +10,9 @@ */ #include "script_component.hpp" -PARAMS_3(_logic,_units,_activated); +if !(isServer) exitWith {}; -private ["_mode", "_checkAll", "_whitelist"]; +PARAMS_3(_logic,_units,_activated); if !(_activated) exitWith {}; @@ -21,86 +20,4 @@ if !(_activated) exitWith {}; [_logic, QGVAR(checkPBOsCheckAll), "CheckAll" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(checkPBOsWhitelist), "Whitelist" ] call EFUNC(common,readSettingFromModule); -_mode = GVAR(checkPBOsAction); -_checkAll = GVAR(checkPBOsCheckAll); -_whitelist = call compile GVAR(checkPBOsWhitelist); - -if (isNil "_whitelist") then { - _whitelist = []; -}; - -_whitelist = [_whitelist, {toLower _this}] call FUNC(map); - -ACE_Version_CheckAll = _checkAll; -ACE_Version_Whitelist = _whitelist; - -if (!isServer) then { - [_mode, _checkAll, _whitelist] spawn { - private ["_mode", "_checkAll", "_whitelist", "_missingAddon", "_missingAddonServer", "_oldVersionClient", "_oldVersionServer", "_text", "_error", "_rscLayer", "_ctrlHint"]; - _mode = _this select 0; - _checkAll = _this select 1; - _whitelist = _this select 2; - - waitUntil { - sleep 1; - !isNil "ACE_Version_ClientErrors" - }; - - _missingAddon = ACE_Version_ClientErrors select 0; - _missingAddonServer = ACE_Version_ClientErrors select 1; - _oldVersionClient = ACE_Version_ClientErrors select 2; - _oldVersionServer = ACE_Version_ClientErrors select 3; - - // Display error message. - if (_missingAddon || {_missingAddonServer} || {_oldVersionClient} || {_oldVersionServer}) then { - _text = "[ACE] Version mismatch:

"; - _error = format ["ACE version mismatch: %1: ", profileName]; - - if (_missingAddon) then { - _text = _text + "Detected missing addon on client
"; - _error = _error + "Missing file(s); "; - }; - if (_missingAddonServer) then { - _text = _text + "Detected missing addon on server
"; - _error = _error + "Additional file(s); "; - }; - if (_oldVersionClient) then { - _text = _text + "Detected old client version
"; - _error = _error + "Older version; "; - }; - if (_oldVersionServer) then { - _text = _text + "Detected old server version
"; - _error = _error + "Newer version; "; - }; - - //[_error, "{systemChat _this}"] call FUNC(execRemoteFnc); - diag_log text _error; - - _text = composeText [lineBreak, parseText format ["%1", _text]]; - - _rscLayer = "ACE_RscErrorHint" call BIS_fnc_rscLayer; - _rscLayer cutRsc ["ACE_RscErrorHint", "PLAIN", 0, true]; - - disableSerialization; - _ctrlHint = uiNamespace getVariable "ACE_ctrlErrorHint"; - _ctrlHint ctrlSetStructuredText _text; - - if (_mode == 0) then { - sleep 10; - _rscLayer cutFadeOut 0.2; - }; - - if (_mode == 2) then { - sleep 10; - waitUntil {alive player}; - [player] call FUNC(adminKick); - }; - }; - }; -}; - -diag_log text format ["[ACE]: Check-PBOs Module Initialized. Mode: %1.", _mode]; - -if (_checkAll) then { - 0 spawn COMPILE_FILE(scripts\Version\checkVersionNumber); -}; +diag_log text format ["[ACE]: Check-PBOs Module Initialized. Mode: %1.", GVAR(checkPBOsAction)]; From 27106ce59f3fc6d783af425b99756c27259e763d Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 28 May 2015 20:54:13 +0200 Subject: [PATCH 102/252] minor refactor --- addons/medical/functions/fnc_treatment.sqf | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf index a5fde365cf..9f910fcb20 100644 --- a/addons/medical/functions/fnc_treatment.sqf +++ b/addons/medical/functions/fnc_treatment.sqf @@ -175,22 +175,22 @@ if (vehicle _caller == _caller && {_callerAnim != ""}) then { }; //Get treatment time -if (isNumber (_config >> "treatmentTime")) then { - _treatmentTime = getNumber (_config >> "treatmentTime"); +_treatmentTime = if (isNumber (_config >> "treatmentTime")) then { + getNumber (_config >> "treatmentTime"); } else { - if (isText (_config >> "treatmentTime")) then { + if (isText (_config >> "treatmentTime")) exitwith { _treatmentTimeConfig = getText(_config >> "treatmentTime"); if (isnil _treatmentTimeConfig) then { _treatmentTimeConfig = compile _treatmentTimeConfig; } else { _treatmentTimeConfig = missionNamespace getvariable _treatmentTimeConfig; }; - if (typeName _treatmentTimeConfig == "SCALAR") then { - _treatmentTime = _treatmentTimeConfig; - } else { - _treatmentTime = [_caller, _target, _selectionName, _className] call _treatmentTimeConfig; + if (typeName _treatmentTimeConfig == "SCALAR") exitwith { + _treatmentTimeConfig; }; + [_caller, _target, _selectionName, _className] call _treatmentTimeConfig; }; + 0; }; // Start treatment From 763cb07629ef9cd66a4bf5830cb9fa70f79972c9 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 28 May 2015 21:59:04 +0200 Subject: [PATCH 103/252] Macro STRING to LSTRING --- addons/advanced_ballistics/initKeybinds.sqf | 2 +- addons/atragmx/initKeybinds.sqf | 2 +- addons/attach/functions/fnc_attach.sqf | 8 ++--- addons/attach/functions/fnc_detach.sqf | 4 +-- addons/attach/functions/fnc_placeApprove.sqf | 2 +- .../functions/fnc_doEscortCaptive.sqf | 2 +- .../captives/functions/fnc_doFriskPerson.sqf | 2 +- .../functions/fnc_moduleSurrender.sqf | 6 ++-- addons/common/functions/fnc_hashGet.sqf | 2 +- addons/dragging/functions/fnc_carryObject.sqf | 2 +- addons/dragging/functions/fnc_dragObject.sqf | 2 +- .../dragging/functions/fnc_setCarryable.sqf | 4 +-- .../dragging/functions/fnc_setDraggable.sqf | 4 +-- addons/dragging/functions/fnc_startCarry.sqf | 2 +- addons/dragging/functions/fnc_startDrag.sqf | 2 +- .../explosives/functions/fnc_addClacker.sqf | 4 +-- .../functions/fnc_openTimerSetUI.sqf | 2 +- .../functions/fnc_setupExplosive.sqf | 4 +-- .../explosives/functions/fnc_startDefuse.sqf | 2 +- addons/fcs/functions/fnc_keyUp.sqf | 2 +- addons/fcs/functions/fnc_reset.sqf | 2 +- addons/fcs/initKeybinds.sqf | 6 ++-- addons/goggles/XEH_postInit.sqf | 2 +- addons/grenades/XEH_postInit.sqf | 2 +- addons/grenades/functions/fnc_nextMode.sqf | 10 +++--- .../hearing/functions/fnc_putInEarplugs.sqf | 4 +-- .../hearing/functions/fnc_removeEarplugs.sqf | 4 +-- addons/interact_menu/XEH_clientInit.sqf | 4 +-- .../functions/fnc_compileMenuSelfAction.sqf | 4 +-- addons/interaction/XEH_postInit.sqf | 6 ++-- addons/interaction/functions/fnc_joinTeam.sqf | 6 ++-- .../functions/fnc_openMenuSelectUI.sqf | 2 +- .../functions/fnc_prepareSelectMenu.sqf | 2 +- .../interaction/functions/fnc_tapShoulder.sqf | 4 +-- addons/javelin/initKeybinds.sqf | 4 +-- addons/kestrel4500/initKeybinds.sqf | 4 +-- .../laser/functions/fnc_keyLaserCodeDown.sqf | 2 +- addons/laser/functions/fnc_keyLaserCodeUp.sqf | 2 +- .../functions/fnc_seekerFindLaserSpot.sqf | 2 +- addons/laser/initKeybinds.sqf | 4 +-- .../functions/fnc_initDesignatorActions.sqf | 4 +-- addons/laserpointer/initKeybinds.sqf | 2 +- .../functions/fnc_refuelUAV.sqf | 2 +- .../functions/fnc_cutDownFence.sqf | 2 +- .../functions/fnc_cutDownFenceCallback.sqf | 2 +- .../functions/fnc_interactEH.sqf | 2 +- .../functions/fnc_magazineRepackFinish.sqf | 6 ++-- .../functions/fnc_startRepackingMagazine.sqf | 2 +- addons/main/script_macros.hpp | 4 +-- .../functions/fnc_onSliderPosChangedAngle.sqf | 2 +- .../fnc_actionCheckBloodPressureLocal.sqf | 22 ++++++------- .../functions/fnc_actionCheckPulseLocal.sqf | 20 ++++++------ .../functions/fnc_actionCheckResponse.sqf | 4 +-- .../medical/functions/fnc_actionDiagnose.sqf | 16 +++++----- .../fnc_displayPatientInformation.sqf | 32 +++++++++---------- .../functions/fnc_displayTriageCard.sqf | 2 +- .../medical/functions/fnc_getTriageStatus.sqf | 10 +++--- .../fnc_treatmentAdvanced_bandage.sqf | 2 +- .../fnc_treatmentAdvanced_medication.sqf | 2 +- addons/medical/functions/fnc_treatmentIV.sqf | 2 +- .../functions/fnc_treatmentTourniquet.sqf | 2 +- addons/microdagr/XEH_clientInit.sqf | 4 +-- .../functions/fnc_showApplicationPage.sqf | 4 +-- .../microdagr/functions/fnc_updateDisplay.sqf | 12 +++---- .../fnc_handlePlayerVehicleChanged.sqf | 2 +- .../functions/fnc_rangeTableOpen.sqf | 2 +- addons/movement/XEH_postInit.sqf | 4 +-- addons/movement/functions/fnc_climb.sqf | 2 +- addons/nametags/XEH_postInit.sqf | 2 +- addons/nightvision/XEH_postInitClient.sqf | 4 +-- .../functions/fnc_changeNVGBrightness.sqf | 2 +- .../functions/fnc_exportSettings.sqf | 2 +- .../fnc_onListBoxShowSelectionChanged.sqf | 4 +-- ...nc_onServerListBoxShowSelectionChanged.sqf | 6 ++-- .../fnc_onServerSettingsMenuOpen.sqf | 4 +-- .../fnc_serverSettingsMenuUpdateKeyView.sqf | 12 +++---- .../fnc_serverSettingsMenuUpdateList.sqf | 2 +- .../fnc_settingsMenuUpdateKeyView.sqf | 4 +-- .../functions/fnc_settingsMenuUpdateList.sqf | 2 +- addons/overheating/XEH_postInit.sqf | 2 +- addons/overheating/functions/fnc_clearJam.sqf | 2 +- .../overheating/functions/fnc_jamWeapon.sqf | 4 +-- .../overheating/functions/fnc_swapBarrel.sqf | 2 +- .../functions/fnc_swapBarrelCallback.sqf | 2 +- addons/parachute/XEH_postInit.sqf | 2 +- addons/reload/XEH_postInit.sqf | 2 +- .../reload/functions/fnc_startLinkingBelt.sqf | 2 +- .../functions/fnc_addMissileReloadActions.sqf | 2 +- addons/reloadlaunchers/functions/fnc_load.sqf | 6 ++-- .../respawn/functions/fnc_moveRallypoint.sqf | 4 +-- .../functions/fnc_teleportToRallypoint.sqf | 2 +- addons/safemode/XEH_postInit.sqf | 2 +- addons/safemode/functions/fnc_lockSafety.sqf | 4 +-- .../safemode/functions/fnc_unlockSafety.sqf | 2 +- addons/scopes/XEH_postInit.sqf | 16 +++++----- .../switchunits/functions/fnc_switchUnit.sqf | 4 +-- addons/vector/initKeybinds.sqf | 4 +-- addons/vehiclelock/functions/fnc_lockpick.sqf | 2 +- addons/vehicles/XEH_postInit.sqf | 2 +- .../vehicles/functions/fnc_speedLimiter.sqf | 4 +-- addons/weaponselect/XEH_postInit.sqf | 28 ++++++++-------- .../functions/fnc_selectGrenadeAll.sqf | 2 +- .../functions/fnc_selectGrenadeFrag.sqf | 2 +- .../functions/fnc_selectGrenadeOther.sqf | 2 +- addons/weather/XEH_postInit.sqf | 2 +- 105 files changed, 230 insertions(+), 230 deletions(-) diff --git a/addons/advanced_ballistics/initKeybinds.sqf b/addons/advanced_ballistics/initKeybinds.sqf index c75a1561ac..102107dadc 100644 --- a/addons/advanced_ballistics/initKeybinds.sqf +++ b/addons/advanced_ballistics/initKeybinds.sqf @@ -1,4 +1,4 @@ -["ACE3 Equipment", QGVAR(ProtractorKey), localize STRING(ProtractorKey), +["ACE3 Equipment", QGVAR(ProtractorKey), localize LSTRING(ProtractorKey), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/atragmx/initKeybinds.sqf b/addons/atragmx/initKeybinds.sqf index fa3b240849..a000a106f4 100644 --- a/addons/atragmx/initKeybinds.sqf +++ b/addons/atragmx/initKeybinds.sqf @@ -1,4 +1,4 @@ -["ACE3 Equipment", QGVAR(ATragMXDialogKey), localize STRING(ATragMXDialogKey), +["ACE3 Equipment", QGVAR(ATragMXDialogKey), localize LSTRING(ATragMXDialogKey), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index 83e35f8a16..2a3eca5940 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -37,7 +37,7 @@ if (_itemVehClass == "") then { if (_itemVehClass == "") exitWith {ERROR("no ACE_Attachable for Item");}; -_onAtachText = format [localize STRING(Item_Attached), _onAtachText]; +_onAtachText = format [localize LSTRING(Item_Attached), _onAtachText]; if (_unit == _attachToVehicle) then { //Self Attachment _unit removeItem _itemClassname; // Remove item @@ -54,12 +54,12 @@ if (_unit == _attachToVehicle) then { //Self Attachment [_unit, QGVAR(vehAttach), true] call EFUNC(common,setForceWalkStatus); - //MenuBack isn't working for now (localize STRING(CancelAction)) - [{[localize STRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, [], 0, 0] call EFUNC(common,waitAndExecute); + //MenuBack isn't working for now (localize LSTRING(CancelAction)) + [{[localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, [], 0, 0] call EFUNC(common,waitAndExecute); _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = 1;}] call EFUNC(common,AddActionEventHandler)]; // _unit setVariable [QGVAR(cancelActionEH), [_unit, "MenuBack", {true}, {GVAR(placeAction) = 0;}] call EFUNC(common,AddActionEventHandler)]; - _actionID = _unit addAction [format ["%1", localize STRING(CancelAction)], {GVAR(placeAction) = 0}]; + _actionID = _unit addAction [format ["%1", localize LSTRING(CancelAction)], {GVAR(placeAction) = 0}]; [{ private "_startingPosition"; diff --git a/addons/attach/functions/fnc_detach.sqf b/addons/attach/functions/fnc_detach.sqf index 990f151474..90c305329b 100644 --- a/addons/attach/functions/fnc_detach.sqf +++ b/addons/attach/functions/fnc_detach.sqf @@ -49,7 +49,7 @@ if (isNull _attachedObject || {_itemName == ""}) exitWith {ERROR("Could not find // Exit if can't add the item if !(_unit canAdd _itemName) exitWith { - [localize STRING(Inventory_Full)] call EFUNC(common,displayTextStructured); + [localize LSTRING(Inventory_Full)] call EFUNC(common,displayTextStructured); }; // Add item to inventory @@ -78,4 +78,4 @@ if (_itemDisplayName == "") then { _itemDisplayName = getText (configFile >> "CfgMagazines" >> _itemName >> "displayName"); }; -[format [localize STRING(Item_Detached), _itemDisplayName]] call EFUNC(common,displayTextStructured); +[format [localize LSTRING(Item_Detached), _itemDisplayName]] call EFUNC(common,displayTextStructured); diff --git a/addons/attach/functions/fnc_placeApprove.sqf b/addons/attach/functions/fnc_placeApprove.sqf index 06282b31ae..d85a65df2b 100644 --- a/addons/attach/functions/fnc_placeApprove.sqf +++ b/addons/attach/functions/fnc_placeApprove.sqf @@ -74,7 +74,7 @@ _closeInDistance = (_closeInMax + _closeInMin) / 2; //Checks (too close to center or can't attach) if (((_startDistanceFromCenter - _closeInDistance) < 0.1) || {!([_attachToVehicle, _unit, _itemClassname] call FUNC(canAttach))}) exitWith { TRACE_2("no valid spot found",_closeInDistance,_startDistanceFromCenter); - [localize STRING(Failed)] call EFUNC(common,displayTextStructured); + [localize LSTRING(Failed)] call EFUNC(common,displayTextStructured); }; //Move it out slightly, for visability sake (better to look a little funny than be embedded//sunk in the hull and be useless) diff --git a/addons/captives/functions/fnc_doEscortCaptive.sqf b/addons/captives/functions/fnc_doEscortCaptive.sqf index e7047c1cca..bc2cd97ffd 100644 --- a/addons/captives/functions/fnc_doEscortCaptive.sqf +++ b/addons/captives/functions/fnc_doEscortCaptive.sqf @@ -30,7 +30,7 @@ if (_state) then { _unit setVariable [QGVAR(escortedUnit), _target, true]; //Add Actionmenu to release captive - _actionID = _unit addAction [format ["%1", localize STRING(StopEscorting)], + _actionID = _unit addAction [format ["%1", localize LSTRING(StopEscorting)], {[(_this select 0), ((_this select 0) getVariable [QGVAR(escortedUnit), objNull]), false] call FUNC(doEscortCaptive);}, nil, 20, false, true, "", QUOTE(!isNull (GETVAR(_target,QGVAR(escortedUnit),objNull)))]; diff --git a/addons/captives/functions/fnc_doFriskPerson.sqf b/addons/captives/functions/fnc_doFriskPerson.sqf index ac3f9e57db..d79c88a5fb 100644 --- a/addons/captives/functions/fnc_doFriskPerson.sqf +++ b/addons/captives/functions/fnc_doFriskPerson.sqf @@ -27,7 +27,7 @@ if (_weapon == primaryWeapon _player && {_weapon != ""}) then { _listedItemClasses = []; -_actions = [localize STRING(FriskMenuHeader), ""] call ACE_Interaction_fnc_prepareSelectMenu; +_actions = [localize LSTRING(FriskMenuHeader), ""] call ACE_Interaction_fnc_prepareSelectMenu; _allGear = []; diff --git a/addons/captives/functions/fnc_moduleSurrender.sqf b/addons/captives/functions/fnc_moduleSurrender.sqf index 94bcb7da45..fbcbce4951 100644 --- a/addons/captives/functions/fnc_moduleSurrender.sqf +++ b/addons/captives/functions/fnc_moduleSurrender.sqf @@ -36,13 +36,13 @@ if (local _logic) then { ["SetSurrendered", [_mouseOverObject], [_mouseOverObject, false]] call EFUNC(common,targetEvent); }; } else { - [STRING(Zeus_OnlyAlive)] call EFUNC(common,displayTextStructured); + [LSTRING(Zeus_OnlyAlive)] call EFUNC(common,displayTextStructured); }; } else { - [STRING(Zeus_OnlyInfantry)] call EFUNC(common,displayTextStructured); + [LSTRING(Zeus_OnlyInfantry)] call EFUNC(common,displayTextStructured); }; } else { - [STRING(Zeus_NothingSelected)] call EFUNC(common,displayTextStructured); + [LSTRING(Zeus_NothingSelected)] call EFUNC(common,displayTextStructured); }; } else { //an editor module diff --git a/addons/common/functions/fnc_hashGet.sqf b/addons/common/functions/fnc_hashGet.sqf index 6b47b98ad9..ae1e553676 100644 --- a/addons/common/functions/fnc_hashGet.sqf +++ b/addons/common/functions/fnc_hashGet.sqf @@ -13,7 +13,7 @@ try { _index = (_hash select 0) find _key; if(_index != -1) then { _val = (_hash select 1) select _index; - if(IS_STRING(_val) && {_val == "ACREHASHREMOVEDONOTUSETHISVAL"}) then { + if(IS_LSTRING(_val) && {_val == "ACREHASHREMOVEDONOTUSETHISVAL"}) then { _val = nil; }; }; diff --git a/addons/dragging/functions/fnc_carryObject.sqf b/addons/dragging/functions/fnc_carryObject.sqf index 197e1cf274..bb413d8240 100644 --- a/addons/dragging/functions/fnc_carryObject.sqf +++ b/addons/dragging/functions/fnc_carryObject.sqf @@ -58,7 +58,7 @@ if (_actionID != -1) then { }; _actionID = _unit addAction [ - format ["%1", localize STRING(Drop)], + format ["%1", localize LSTRING(Drop)], QUOTE([ARR_2(_this select 0, (_this select 0) getVariable [ARR_2(QUOTE(QGVAR(carriedObject)),objNull)])] call FUNC(dropObject_carry)), nil, 20, diff --git a/addons/dragging/functions/fnc_dragObject.sqf b/addons/dragging/functions/fnc_dragObject.sqf index a8b99ab874..e4b200c4dd 100644 --- a/addons/dragging/functions/fnc_dragObject.sqf +++ b/addons/dragging/functions/fnc_dragObject.sqf @@ -49,7 +49,7 @@ if (_actionID != -1) then { }; _actionID = _unit addAction [ - format ["%1", localize STRING(Drop)], + format ["%1", localize LSTRING(Drop)], QUOTE([ARR_2(_this select 0, (_this select 0) getVariable [ARR_2(QUOTE(QGVAR(draggedObject)),objNull)])] call FUNC(dropObject)), nil, 20, diff --git a/addons/dragging/functions/fnc_setCarryable.sqf b/addons/dragging/functions/fnc_setCarryable.sqf index 439dc1c10b..52c6e5643a 100644 --- a/addons/dragging/functions/fnc_setCarryable.sqf +++ b/addons/dragging/functions/fnc_setCarryable.sqf @@ -49,8 +49,8 @@ if (_type in _initializedClasses) exitWith {}; _initializedClasses pushBack _type; GVAR(initializedClasses_carry) = _initializedClasses; -_carryAction = [QGVAR(carry), localize STRING(Carry), "", {[_player, _target] call FUNC(startCarry)}, {[_player, _target] call FUNC(canCarry)}] call EFUNC(interact_menu,createAction); -_dropAction = [QGVAR(drop_carry), localize STRING(Drop), "", {[_player, _target] call FUNC(dropObject_carry)}, {[_player, _target] call FUNC(canDrop_carry)}] call EFUNC(interact_menu,createAction); +_carryAction = [QGVAR(carry), localize LSTRING(Carry), "", {[_player, _target] call FUNC(startCarry)}, {[_player, _target] call FUNC(canCarry)}] call EFUNC(interact_menu,createAction); +_dropAction = [QGVAR(drop_carry), localize LSTRING(Drop), "", {[_player, _target] call FUNC(dropObject_carry)}, {[_player, _target] call FUNC(canDrop_carry)}] call EFUNC(interact_menu,createAction); [_type, 0, ["ACE_MainActions"], _carryAction] call EFUNC(interact_menu,addActionToClass); [_type, 0, [], _dropAction] call EFUNC(interact_menu,addActionToClass); diff --git a/addons/dragging/functions/fnc_setDraggable.sqf b/addons/dragging/functions/fnc_setDraggable.sqf index 5e9ba7cf3f..7745bd2d3e 100644 --- a/addons/dragging/functions/fnc_setDraggable.sqf +++ b/addons/dragging/functions/fnc_setDraggable.sqf @@ -49,8 +49,8 @@ if (_type in _initializedClasses) exitWith {}; _initializedClasses pushBack _type; GVAR(initializedClasses) = _initializedClasses; -_dragAction = [QGVAR(drag), localize STRING(Drag), "", {[_player, _target] call FUNC(startDrag)}, {[_player, _target] call FUNC(canDrag)}] call EFUNC(interact_menu,createAction); -_dropAction = [QGVAR(drop), localize STRING(Drop), "", {[_player, _target] call FUNC(dropObject)}, {[_player, _target] call FUNC(canDrop)}] call EFUNC(interact_menu,createAction); +_dragAction = [QGVAR(drag), localize LSTRING(Drag), "", {[_player, _target] call FUNC(startDrag)}, {[_player, _target] call FUNC(canDrag)}] call EFUNC(interact_menu,createAction); +_dropAction = [QGVAR(drop), localize LSTRING(Drop), "", {[_player, _target] call FUNC(dropObject)}, {[_player, _target] call FUNC(canDrop)}] call EFUNC(interact_menu,createAction); [_type, 0, ["ACE_MainActions"], _dragAction] call EFUNC(interact_menu,addActionToClass); [_type, 0, [], _dropAction] call EFUNC(interact_menu,addActionToClass); diff --git a/addons/dragging/functions/fnc_startCarry.sqf b/addons/dragging/functions/fnc_startCarry.sqf index c259213a53..842945c202 100644 --- a/addons/dragging/functions/fnc_startCarry.sqf +++ b/addons/dragging/functions/fnc_startCarry.sqf @@ -22,7 +22,7 @@ private "_weight"; _weight = [_target] call FUNC(getWeight); if (_weight > GETMVAR(ACE_maxWeightCarry,1E11)) exitWith { - [localize STRING(UnableToDrag)] call EFUNC(common,displayTextStructured); + [localize LSTRING(UnableToDrag)] call EFUNC(common,displayTextStructured); }; private "_timer"; diff --git a/addons/dragging/functions/fnc_startDrag.sqf b/addons/dragging/functions/fnc_startDrag.sqf index 81ae9a34dc..56f0ea928e 100644 --- a/addons/dragging/functions/fnc_startDrag.sqf +++ b/addons/dragging/functions/fnc_startDrag.sqf @@ -22,7 +22,7 @@ private "_weight"; _weight = [_target] call FUNC(getWeight); if (_weight > GETMVAR(ACE_maxWeightDrag,1E11)) exitWith { - [localize STRING(UnableToDrag)] call EFUNC(common,displayTextStructured); + [localize LSTRING(UnableToDrag)] call EFUNC(common,displayTextStructured); }; // add a primary weapon if the unit has none. diff --git a/addons/explosives/functions/fnc_addClacker.sqf b/addons/explosives/functions/fnc_addClacker.sqf index 14e8a41ba3..d22b15eef4 100644 --- a/addons/explosives/functions/fnc_addClacker.sqf +++ b/addons/explosives/functions/fnc_addClacker.sqf @@ -37,8 +37,8 @@ _config = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> co _clacker = _unit getVariable [QGVAR(Clackers), []]; GVAR(PlacedCount) = GVAR(PlacedCount) + 1; -_clacker pushBack [_explosive, getNumber(_config >> "FuseTime"), format [localize STRING(DetonateCode), +_clacker pushBack [_explosive, getNumber(_config >> "FuseTime"), format [localize LSTRING(DetonateCode), GVAR(PlacedCount)], _magazineClass, configName ((_this select 3) select (count (_this select 3) - 1))]; _unit setVariable [QGVAR(Clackers), _clacker, true]; -_unit sideChat format [localize STRING(DetonateCode), GVAR(PlacedCount)]; +_unit sideChat format [localize LSTRING(DetonateCode), GVAR(PlacedCount)]; diff --git a/addons/explosives/functions/fnc_openTimerSetUI.sqf b/addons/explosives/functions/fnc_openTimerSetUI.sqf index 280dc55aaf..d08d7444dd 100644 --- a/addons/explosives/functions/fnc_openTimerSetUI.sqf +++ b/addons/explosives/functions/fnc_openTimerSetUI.sqf @@ -38,4 +38,4 @@ DFUNC(SetTimer) = { buttonSetAction [8860, QUOTE(call DFUNC(SetTimer);)]; buttonSetAction [8855, QUOTE(closeDialog 0;)]; -ctrlSetText [8870, format[localize STRING(TimerMenu),0, 30]]; +ctrlSetText [8870, format[localize LSTRING(TimerMenu),0, 30]]; diff --git a/addons/explosives/functions/fnc_setupExplosive.sqf b/addons/explosives/functions/fnc_setupExplosive.sqf index d6840a28a1..566ab9c281 100644 --- a/addons/explosives/functions/fnc_setupExplosive.sqf +++ b/addons/explosives/functions/fnc_setupExplosive.sqf @@ -41,8 +41,8 @@ GVAR(TweakedAngle) = 180; }; }] call CALLSTACK(BIS_fnc_addStackedEventHandler); -[localize STRING(PlaceAction), localize STRING(CancelAction), - localize STRING(ScrollAction)] call EFUNC(interaction,showMouseHint); +[localize LSTRING(PlaceAction), localize LSTRING(CancelAction), + localize LSTRING(ScrollAction)] call EFUNC(interaction,showMouseHint); _unit setVariable [QGVAR(Place), [_unit, "DefaultAction", {GVAR(pfeh_running) AND !isNull (GVAR(Setup))}, {call FUNC(place_Approve);}] call EFUNC(common,AddActionEventHandler)]; _unit setVariable [QGVAR(Cancel), [_unit, "zoomtemp", diff --git a/addons/explosives/functions/fnc_startDefuse.sqf b/addons/explosives/functions/fnc_startDefuse.sqf index 88fda230b1..251e1e213d 100644 --- a/addons/explosives/functions/fnc_startDefuse.sqf +++ b/addons/explosives/functions/fnc_startDefuse.sqf @@ -59,6 +59,6 @@ if (ACE_player != _unit) then { _isEOD = [_unit] call EFUNC(Common,isEOD); _defuseTime = [_isEOD, _target] call _fnc_DefuseTime; if (_isEOD || {!GVAR(RequireSpecialist)}) then { - [_defuseTime, [_unit,_target], {(_this select 0) call FUNC(defuseExplosive)}, {}, (localize STRING(DefusingExplosive))] call EFUNC(common,progressBar); + [_defuseTime, [_unit,_target], {(_this select 0) call FUNC(defuseExplosive)}, {}, (localize LSTRING(DefusingExplosive))] call EFUNC(common,progressBar); }; }; diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index 601ea4afb5..1e831d6df3 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -208,5 +208,5 @@ if(_playSound) then { }; if(_showHint) then { - [format ["%1: %2", localize STRING(ZeroedTo), _distance]] call EFUNC(common,displayTextStructured); + [format ["%1: %2", localize LSTRING(ZeroedTo), _distance]] call EFUNC(common,displayTextStructured); }; \ No newline at end of file diff --git a/addons/fcs/functions/fnc_reset.sqf b/addons/fcs/functions/fnc_reset.sqf index 1940228311..48e3803c83 100644 --- a/addons/fcs/functions/fnc_reset.sqf +++ b/addons/fcs/functions/fnc_reset.sqf @@ -22,4 +22,4 @@ _turret = _this select 1; [_vehicle, format ["%1_%2", QGVAR(Elevation), _turret], 0] call EFUNC(common,setVariablePublic); [_vehicle, format ["%1_%2", QGVAR(Azimuth), _turret], 0] call EFUNC(common,setVariablePublic); -[localize STRING(HasBeenReset)] call EFUNC(common,displayTextStructured); +[localize LSTRING(HasBeenReset)] call EFUNC(common,displayTextStructured); diff --git a/addons/fcs/initKeybinds.sqf b/addons/fcs/initKeybinds.sqf index ef9c2f5731..3b22cb2262 100644 --- a/addons/fcs/initKeybinds.sqf +++ b/addons/fcs/initKeybinds.sqf @@ -1,6 +1,6 @@ // by commy2 -["ACE3 Vehicles", QGVAR(lazeTarget), localize STRING(LaseTarget), +["ACE3 Vehicles", QGVAR(lazeTarget), localize LSTRING(LaseTarget), { // Conditions: canInteract if !([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -30,7 +30,7 @@ }, [15, [false, false, false]], false] call cba_fnc_addKeybind; //Tab Key -["ACE3 Vehicles", QGVAR(adjustRangeUp), localize STRING(AdjustRangeUp), +["ACE3 Vehicles", QGVAR(adjustRangeUp), localize LSTRING(AdjustRangeUp), { // Conditions: canInteract if !([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -44,7 +44,7 @@ {false}, [201, [false, false, false]], false] call cba_fnc_addKeybind; //PageUp Key -["ACE3 Vehicles", QGVAR(adjustRangDown), localize STRING(AdjustRangeDown), +["ACE3 Vehicles", QGVAR(adjustRangDown), localize LSTRING(AdjustRangeDown), { // Conditions: canInteract if !([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf index b9009fe8da..d52f0d30eb 100644 --- a/addons/goggles/XEH_postInit.sqf +++ b/addons/goggles/XEH_postInit.sqf @@ -17,7 +17,7 @@ #include "script_component.hpp" if (!hasInterface) exitWith {}; -["ACE3 Common", QGVAR(wipeGlasses), localize STRING(WipeGlasses), +["ACE3 Common", QGVAR(wipeGlasses), localize LSTRING(WipeGlasses), { if (!(GETVAR(ace_player,ACE_isUnconscious,false))) exitWith { call FUNC(clearGlasses); diff --git a/addons/grenades/XEH_postInit.sqf b/addons/grenades/XEH_postInit.sqf index df4c7142f3..b1559c6cfe 100644 --- a/addons/grenades/XEH_postInit.sqf +++ b/addons/grenades/XEH_postInit.sqf @@ -10,7 +10,7 @@ GVAR(flashbangPPEffectCC) = ppEffectCreate ["ColorCorrections", 4265]; GVAR(flashbangPPEffectCC) ppEffectForceInNVG true; // Add keybinds -["ACE3 Weapons", QGVAR(switchGrenadeMode), localize STRING(SwitchGrenadeMode), +["ACE3 Weapons", QGVAR(switchGrenadeMode), localize LSTRING(SwitchGrenadeMode), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/grenades/functions/fnc_nextMode.sqf b/addons/grenades/functions/fnc_nextMode.sqf index cc895e7212..913906b8f8 100644 --- a/addons/grenades/functions/fnc_nextMode.sqf +++ b/addons/grenades/functions/fnc_nextMode.sqf @@ -31,11 +31,11 @@ if (_mode == 3) then { }; _hint = [ -localize STRING(NormalThrow), -localize STRING(HighThrow), -localize STRING(PreciseThrow), -localize STRING(RollGrenade), -localize STRING(DropGrenade) +localize LSTRING(NormalThrow), +localize LSTRING(HighThrow), +localize LSTRING(PreciseThrow), +localize LSTRING(RollGrenade), +localize LSTRING(DropGrenade) ] select _mode; [_hint] call EFUNC(common,displayTextStructured); diff --git a/addons/hearing/functions/fnc_putInEarplugs.sqf b/addons/hearing/functions/fnc_putInEarplugs.sqf index 7a6a7a06bc..9d230f107b 100644 --- a/addons/hearing/functions/fnc_putInEarplugs.sqf +++ b/addons/hearing/functions/fnc_putInEarplugs.sqf @@ -22,7 +22,7 @@ _player removeItem "ACE_EarPlugs"; _player setVariable ["ACE_hasEarPlugsIn", true, true]; -[localize STRING(EarPlugs_Are_On)] call EFUNC(common,displayTextStructured); +[localize LSTRING(EarPlugs_Are_On)] call EFUNC(common,displayTextStructured); /*// No Ear Plugs in inventory, telling user -[localize STRING(NoPlugs)] call EFUNC(common,displayTextStructured);*/ +[localize LSTRING(NoPlugs)] call EFUNC(common,displayTextStructured);*/ diff --git a/addons/hearing/functions/fnc_removeEarplugs.sqf b/addons/hearing/functions/fnc_removeEarplugs.sqf index d30f5565c4..bee3517235 100644 --- a/addons/hearing/functions/fnc_removeEarplugs.sqf +++ b/addons/hearing/functions/fnc_removeEarplugs.sqf @@ -18,7 +18,7 @@ PARAMS_1(_player); if !(_player canAdd "ACE_EarPlugs") exitWith { // inventory full - [localize STRING(Inventory_Full)] call EFUNC(common,displayTextStructured); + [localize LSTRING(Inventory_Full)] call EFUNC(common,displayTextStructured); }; // Plugs already in and removing them. @@ -26,4 +26,4 @@ _player addItem "ACE_EarPlugs"; _player setVariable ["ACE_hasEarPlugsIn", false, true]; -[localize STRING(EarPlugs_Are_Off)] call EFUNC(common,displayTextStructured); +[localize LSTRING(EarPlugs_Are_Off)] call EFUNC(common,displayTextStructured); diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index ea83c44d1c..ad4179895f 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -28,7 +28,7 @@ addMissionEventHandler ["Draw3D", DFUNC(render)]; }; -["ACE3 Common", QGVAR(InteractKey), (localize STRING(InteractKey)), +["ACE3 Common", QGVAR(InteractKey), (localize LSTRING(InteractKey)), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -37,7 +37,7 @@ addMissionEventHandler ["Draw3D", DFUNC(render)]; },{[0,false] call FUNC(keyUp)}, [219, [false, false, false]], false] call cba_fnc_addKeybind; //Left Windows Key -["ACE3 Common", QGVAR(SelfInteractKey), (localize STRING(SelfInteractKey)), +["ACE3 Common", QGVAR(SelfInteractKey), (localize LSTRING(SelfInteractKey)), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf index cc254f1caf..1cbccf8a40 100644 --- a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf @@ -87,12 +87,12 @@ private ["_baseDisplayName", "_baseIcon"]; _baseDisplayName = ""; _baseIcon = ""; if (_objectType isKindOf "CAManBase") then { - _baseDisplayName = localize STRING(SelfActionsRoot); + _baseDisplayName = localize LSTRING(SelfActionsRoot); _baseIcon = "\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa"; } else { _baseDisplayName = getText (configFile >> "CfgVehicles" >> _objectType >> "displayName"); //Alt would be to just use a static text, if veh names end up being too long: - // _baseDisplayName = localize STRING(VehicleActionsRoot); + // _baseDisplayName = localize LSTRING(VehicleActionsRoot); //Pull the icon from the vehicle's config: _baseIcon = getText (configFile >> "CfgVehicles" >> _objectType >> "Icon"); diff --git a/addons/interaction/XEH_postInit.sqf b/addons/interaction/XEH_postInit.sqf index 3a4ddf1336..7fe151dac1 100644 --- a/addons/interaction/XEH_postInit.sqf +++ b/addons/interaction/XEH_postInit.sqf @@ -23,7 +23,7 @@ private ["_team"]; // Add keybinds -["ACE3 Common", QGVAR(openDoor), localize STRING(OpenDoor), +["ACE3 Common", QGVAR(openDoor), localize LSTRING(OpenDoor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -43,7 +43,7 @@ private ["_team"]; [57, [false, true, false]], false] call cba_fnc_addKeybind; //Key CTRL+Space -["ACE3 Common", QGVAR(tapShoulder), localize STRING(TapShoulder), +["ACE3 Common", QGVAR(tapShoulder), localize LSTRING(TapShoulder), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -57,7 +57,7 @@ private ["_team"]; {false}, [20, [true, false, false]], false] call cba_fnc_addKeybind; -["ACE3 Common", QGVAR(modifierKey), localize STRING(ModifierKey), +["ACE3 Common", QGVAR(modifierKey), localize LSTRING(ModifierKey), { // Conditions: canInteract //if !([ACE_player, objNull, ["isNotDragging"]] call EFUNC(common,canInteractWith)) exitWith {false}; // not needed diff --git a/addons/interaction/functions/fnc_joinTeam.sqf b/addons/interaction/functions/fnc_joinTeam.sqf index 628ed3b936..c2a542d4af 100644 --- a/addons/interaction/functions/fnc_joinTeam.sqf +++ b/addons/interaction/functions/fnc_joinTeam.sqf @@ -25,10 +25,10 @@ _unit setVariable [QGVAR(assignedFireTeam), _team, true]; if (_unit == ACE_player) then { _message = if (_team == "MAIN") then { - localize STRING(LeftTeam); + localize LSTRING(LeftTeam); } else { - _team = localize format [STRING(Team%1), _team]; - format [localize STRING(JoinedTeam), _team]; + _team = localize format [LSTRING(Team%1), _team]; + format [localize LSTRING(JoinedTeam), _team]; }; [_message] call EFUNC(common,displayTextStructured); diff --git a/addons/interaction/functions/fnc_openMenuSelectUI.sqf b/addons/interaction/functions/fnc_openMenuSelectUI.sqf index cdcf632208..6141e839b8 100644 --- a/addons/interaction/functions/fnc_openMenuSelectUI.sqf +++ b/addons/interaction/functions/fnc_openMenuSelectUI.sqf @@ -29,7 +29,7 @@ if !(_unit in _cargo) exitWith {}; GVAR(InteractionMenu_Crew) = _cargo; // Prepare: add header and "OK" button to select menu -_actions = [localize STRING(InteractionMenu), localize STRING(Interact)] call FUNC(prepareSelectMenu); +_actions = [localize LSTRING(InteractionMenu), localize LSTRING(Interact)] call FUNC(prepareSelectMenu); // Prepare: add all cargo units as options to select menu { diff --git a/addons/interaction/functions/fnc_prepareSelectMenu.sqf b/addons/interaction/functions/fnc_prepareSelectMenu.sqf index 2353488e31..f42d95b75b 100644 --- a/addons/interaction/functions/fnc_prepareSelectMenu.sqf +++ b/addons/interaction/functions/fnc_prepareSelectMenu.sqf @@ -21,7 +21,7 @@ PARAMS_2(_header,_buttonText); closeDialog 0; if (isNil "_buttonText" or {_buttonText == ""}) then { - _buttonText = localize STRING(MakeSelection); + _buttonText = localize LSTRING(MakeSelection); }; createDialog "RscACE_SelectAnItem"; diff --git a/addons/interaction/functions/fnc_tapShoulder.sqf b/addons/interaction/functions/fnc_tapShoulder.sqf index 747afddf7e..b8bb591c6d 100644 --- a/addons/interaction/functions/fnc_tapShoulder.sqf +++ b/addons/interaction/functions/fnc_tapShoulder.sqf @@ -32,9 +32,9 @@ addCamShake [4, 0.5, 5]; private ["_message"]; //localize is converting the escaped <> symbols, so just add them here instead of in the stringtable if (_shoulderNum == 0) then { - _message = format ["%1 >", (localize STRING(YouWereTappedRight))]; + _message = format ["%1 >", (localize LSTRING(YouWereTappedRight))]; } else { - _message = format ["< %1", (localize STRING(YouWereTappedLeft))]; + _message = format ["< %1", (localize LSTRING(YouWereTappedLeft))]; }; [parseText _message] call EFUNC(common,displayTextStructured); diff --git a/addons/javelin/initKeybinds.sqf b/addons/javelin/initKeybinds.sqf index c164073b30..15215466e8 100644 --- a/addons/javelin/initKeybinds.sqf +++ b/addons/javelin/initKeybinds.sqf @@ -1,6 +1,6 @@ // by commy2 -["ACE3 Weapons", QGVAR(lockTarget), localize STRING(LockTarget), +["ACE3 Weapons", QGVAR(lockTarget), localize LSTRING(LockTarget), { if (GETGVAR(isLockKeyDown,false)) exitWith {false}; @@ -21,7 +21,7 @@ }, [15, [false, false, false]], false] call cba_fnc_addKeybind; //Tab Key -["ACE3 Weapons", QGVAR(cycleFireMode), localize STRING(CycleFireMode), +["ACE3 Weapons", QGVAR(cycleFireMode), localize LSTRING(CycleFireMode), { false }, { [ACE_player] call FUNC(cycleFireMode); diff --git a/addons/kestrel4500/initKeybinds.sqf b/addons/kestrel4500/initKeybinds.sqf index 4a4cb74220..f6ad1e8a17 100644 --- a/addons/kestrel4500/initKeybinds.sqf +++ b/addons/kestrel4500/initKeybinds.sqf @@ -1,4 +1,4 @@ -["ACE3 Equipment", QGVAR(KestrelDialogKey), localize STRING(KestrelDialogKey), +["ACE3 Equipment", QGVAR(KestrelDialogKey), localize LSTRING(KestrelDialogKey), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -13,7 +13,7 @@ {false}, [0, [false, false, false]], false, 0] call CBA_fnc_addKeybind; // (empty default key) -["ACE3 Equipment", QGVAR(DisplayKestrelKey), localize STRING(DisplayKestrelKey), +["ACE3 Equipment", QGVAR(DisplayKestrelKey), localize LSTRING(DisplayKestrelKey), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/laser/functions/fnc_keyLaserCodeDown.sqf b/addons/laser/functions/fnc_keyLaserCodeDown.sqf index 96f50b92d1..f833c477c6 100644 --- a/addons/laser/functions/fnc_keyLaserCodeDown.sqf +++ b/addons/laser/functions/fnc_keyLaserCodeDown.sqf @@ -8,5 +8,5 @@ if(_oldLaserCode > ACE_DEFAULT_LASER_CODE) then { ACE_player setVariable [QGVAR(code), _laserCode, false]; }; if(_laserCode != _oldLaserCode) then { - [format ["%1: %2", localize STRING(laserCode), _laserCode]] call EFUNC(common,displayTextStructured); + [format ["%1: %2", localize LSTRING(laserCode), _laserCode]] call EFUNC(common,displayTextStructured); }; \ No newline at end of file diff --git a/addons/laser/functions/fnc_keyLaserCodeUp.sqf b/addons/laser/functions/fnc_keyLaserCodeUp.sqf index e11e32389f..5357cec14c 100644 --- a/addons/laser/functions/fnc_keyLaserCodeUp.sqf +++ b/addons/laser/functions/fnc_keyLaserCodeUp.sqf @@ -6,5 +6,5 @@ _oldLaserCode = ACE_player getVariable [QGVAR(code), ACE_DEFAULT_LASER_CODE]; _laserCode = _oldLaserCode + 1; ACE_player setVariable [QGVAR(code), _laserCode, false]; if(_laserCode != _oldLaserCode) then { -[format ["%1: %2", localize STRING(laserCode), _laserCode]] call EFUNC(common,displayTextStructured); +[format ["%1: %2", localize LSTRING(laserCode), _laserCode]] call EFUNC(common,displayTextStructured); }; \ No newline at end of file diff --git a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf index 346aec837e..c0112ab412 100644 --- a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf +++ b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf @@ -48,7 +48,7 @@ _finalOwner = nil; if(IS_CODE(_method)) then { _laser = _x call _method; } else { - if(IS_STRING(_method)) then { + if(IS_LSTRING(_method)) then { _laser = _x call (missionNamespace getVariable [_method, {}]); } else { if(IS_ARRAY(_method)) then { diff --git a/addons/laser/initKeybinds.sqf b/addons/laser/initKeybinds.sqf index 9d86bcb034..5e3d017103 100644 --- a/addons/laser/initKeybinds.sqf +++ b/addons/laser/initKeybinds.sqf @@ -1,4 +1,4 @@ -["ACE3 Equipment", QGVAR(LaserCodeUp), localize STRING(laserCodeUp), +["ACE3 Equipment", QGVAR(LaserCodeUp), localize LSTRING(laserCodeUp), { if( EGVAR(laser_selfdesignate,active) || @@ -12,7 +12,7 @@ {false}, [16, [false, true, true]], false, 0] call CBA_fnc_addKeybind; // (ALT+CTRL+Q) -["ACE3 Equipment", QGVAR(LaserCodeDown), localize STRING(laserCodeDown), +["ACE3 Equipment", QGVAR(LaserCodeDown), localize LSTRING(laserCodeDown), { if( EGVAR(laser_selfdesignate,active) || diff --git a/addons/laser_selfdesignate/functions/fnc_initDesignatorActions.sqf b/addons/laser_selfdesignate/functions/fnc_initDesignatorActions.sqf index 1167e0e5a6..a75e58f533 100644 --- a/addons/laser_selfdesignate/functions/fnc_initDesignatorActions.sqf +++ b/addons/laser_selfdesignate/functions/fnc_initDesignatorActions.sqf @@ -31,7 +31,7 @@ GVAR(initializedClasses) = _initializedClasses; // e.g.: _vehicle setVariable [format ["%1_%2", QGVAR(active), _x], false]; // Add actions - _onAction = [QGVAR(LaserOn), localize STRING(DesignatorOn), "", + _onAction = [QGVAR(LaserOn), localize LSTRING(DesignatorOn), "", { // Statement _this call FUNC(laserHudDesignateOn) @@ -41,7 +41,7 @@ GVAR(initializedClasses) = _initializedClasses; !GVAR(active) && {[ACE_player] call FUNC(unitTurretHasDesignator)} }] call EFUNC(interact_menu,createAction); - _offAction = [QGVAR(LaserOff), localize STRING(DesignatorOff), "", + _offAction = [QGVAR(LaserOff), localize LSTRING(DesignatorOff), "", { // Statement _this call FUNC(laserHudDesignateOff) diff --git a/addons/laserpointer/initKeybinds.sqf b/addons/laserpointer/initKeybinds.sqf index b33247e03d..da53da8a20 100644 --- a/addons/laserpointer/initKeybinds.sqf +++ b/addons/laserpointer/initKeybinds.sqf @@ -1,6 +1,6 @@ // by commy2 -["ACE3 Weapons", QGVAR(switchLaserLightMode), localize STRING(switchLaserLight), +["ACE3 Weapons", QGVAR(switchLaserLightMode), localize LSTRING(switchLaserLight), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf index 350f9097bb..e51f17777e 100644 --- a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf +++ b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf @@ -36,4 +36,4 @@ _onFailure = { [_caller, "AinvPknlMstpSnonWnonDr_medic5", 0] call EFUNC(common,doAnimation); -[10, [_caller, _target], _onFinish, _onFailure, (localize STRING(Battery_Recharge)), {(_this select 0) call FUNC(canRefuelUAV)}] call EFUNC(common,progressBar); +[10, [_caller, _target], _onFinish, _onFailure, (localize LSTRING(Battery_Recharge)), {(_this select 0) call FUNC(canRefuelUAV)}] call EFUNC(common,progressBar); diff --git a/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf index 4cd6eba85f..f45f0c1511 100644 --- a/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf +++ b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf @@ -38,4 +38,4 @@ _progressCheck = { ((!isNull _fenceObject) && {(damage _fenceObject) < 1} && {("ACE_wirecutter" in (items ACE_player))}) }; -[_timeToCut, [_fenceObject,0], {(_this select 0) call FUNC(cutDownFenceCallback)}, {(_this select 0) call FUNC(cutDownFenceAbort)}, localize STRING(CuttingFence), _progressCheck] call EFUNC(common,progressBar); +[_timeToCut, [_fenceObject,0], {(_this select 0) call FUNC(cutDownFenceCallback)}, {(_this select 0) call FUNC(cutDownFenceAbort)}, localize LSTRING(CuttingFence), _progressCheck] call EFUNC(common,progressBar); diff --git a/addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf b/addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf index 245b65bde8..57495a2a03 100644 --- a/addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf +++ b/addons/logistics_wirecutter/functions/fnc_cutDownFenceCallback.sqf @@ -18,5 +18,5 @@ PARAMS_1(_fenceObject); _fenceObject setdamage 1; -// [localize STRING(FenceCut)] call EFUNC(common,displayTextStructured); +// [localize LSTRING(FenceCut)] call EFUNC(common,displayTextStructured); [ACE_player, "AmovPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation); diff --git a/addons/logistics_wirecutter/functions/fnc_interactEH.sqf b/addons/logistics_wirecutter/functions/fnc_interactEH.sqf index 2bcb488d42..05c47c4454 100644 --- a/addons/logistics_wirecutter/functions/fnc_interactEH.sqf +++ b/addons/logistics_wirecutter/functions/fnc_interactEH.sqf @@ -53,7 +53,7 @@ if (!("ACE_wirecutter" in (items ace_player))) exitWith {}; if ([_x] call FUNC(isFence)) then { _fencesHelped pushBack _x; _helper = "Sign_Sphere25cm_F" createVehicleLocal (getpos _x); - _action = [QGVAR(helperCutFence), (localize STRING(CutFence)), QUOTE(PATHTOF(ui\wirecutter_ca.paa)), _fncStatement, _fncCondition, {}, _x, [0,0,0], 5] call EFUNC(interact_menu,createAction); + _action = [QGVAR(helperCutFence), (localize LSTRING(CutFence)), QUOTE(PATHTOF(ui\wirecutter_ca.paa)), _fncStatement, _fncCondition, {}, _x, [0,0,0], 5] call EFUNC(interact_menu,createAction); [_helper, 0, [],_action] call EFUNC(interact_menu,addActionToObject); _helper setPosASL ((getPosASL _x) vectorAdd [0,0,1.25]); _helper hideObject true; diff --git a/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf b/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf index d47878086d..4c985e3d36 100644 --- a/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf +++ b/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf @@ -29,9 +29,9 @@ _fullMagazineCount = getNumber (configfile >> "CfgMagazines" >> _magazineClassna if (!([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith))) exitWith {}; _structuredOutputText = if (_errorCode == 0) then { - format ["%1
", (localize STRING(RepackComplete))]; + format ["%1
", (localize LSTRING(RepackComplete))]; } else { - format ["%1
", (localize STRING(RepackInterrupted))]; + format ["%1
", (localize LSTRING(RepackInterrupted))]; }; _picture = getText (configFile >> "CfgMagazines" >> _magazineClassname >> "picture"); @@ -51,6 +51,6 @@ _structuredOutputText = _structuredOutputText + format ["" + (localize STRING(RepackedMagazinesCount)) + ""), _fullMags, _partialMags]; +// _structuredOutputText = _structuredOutputText + format [("" + (localize LSTRING(RepackedMagazinesCount)) + ""), _fullMags, _partialMags]; [parseText _structuredOutputText, 2] call EFUNC(common,displayTextStructured); diff --git a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf index 48c357eece..a2947a0106 100644 --- a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf +++ b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf @@ -67,7 +67,7 @@ _totalTime, [_magazineClassname, _startingAmmoCounts, _simEvents], {_this call FUNC(magazineRepackFinish)}, {_this call FUNC(magazineRepackFinish)}, -(localize STRING(RepackingMagazine)), +(localize LSTRING(RepackingMagazine)), {_this call FUNC(magazineRepackProgress)}, ["isNotInside"] ] call EFUNC(common,progressBar); diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index 9e92a2525d..e51d4450a4 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -22,8 +22,8 @@ #define PATHTOEF(var1,var2) PATHTOF_SYS(PREFIX,var1,var2) -#define STRING(var1) QUOTE(TRIPLES(STR,ADDON,var1)) -#define ESTRING(var1,var2) QUOTE(TRIPLES(STR,DOUBLES(PREFIX,var1),var2)) +#define LSTRING(var1) QUOTE(TRIPLES(STR,ADDON,var1)) +#define LESTRING(var1,var2) QUOTE(TRIPLES(STR,DOUBLES(PREFIX,var1),var2)) #define CSTRING(var1) QUOTE(TRIPLES($STR,ADDON,var1)) #define ECSTRING(var1,var2) QUOTE(TRIPLES($STR,DOUBLES(PREFIX,var1),var2)) diff --git a/addons/markers/functions/fnc_onSliderPosChangedAngle.sqf b/addons/markers/functions/fnc_onSliderPosChangedAngle.sqf index 940b84fe42..1210b8ce71 100644 --- a/addons/markers/functions/fnc_onSliderPosChangedAngle.sqf +++ b/addons/markers/functions/fnc_onSliderPosChangedAngle.sqf @@ -25,6 +25,6 @@ if (_direction < 0) then { _direction = _direction + 360; }; -((ctrlParent _ctrl) displayCtrl 1221) ctrlSetText format [localize STRING(MarkerDirection), _direction]; +((ctrlParent _ctrl) displayCtrl 1221) ctrlSetText format [localize LSTRING(MarkerDirection), _direction]; GVAR(currentMarkerAngle) = _data; diff --git a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf index 46813c585b..701be65f2d 100644 --- a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf @@ -28,27 +28,27 @@ _bloodPressureLow = _bloodPressure select 0; _output = ""; _logOutPut = ""; if ([_caller] call FUNC(isMedic)) then { - _output = STRING(Check_Bloodpressure_Output_1); + _output = LSTRING(Check_Bloodpressure_Output_1); _logOutPut = format["%1/%2",round(_bloodPressureHigh),round(_bloodPressureLow)]; } else { if (_bloodPressureHigh > 20) then { - _output = STRING(Check_Bloodpressure_Output_2); - _logOutPut = localize STRING(Check_Bloodpressure_Low); + _output = LSTRING(Check_Bloodpressure_Output_2); + _logOutPut = localize LSTRING(Check_Bloodpressure_Low); if (_bloodPressureHigh > 100) then { - _output = STRING(Check_Bloodpressure_Output_3); - _logOutPut = localize STRING(Check_Bloodpressure_Normal); + _output = LSTRING(Check_Bloodpressure_Output_3); + _logOutPut = localize LSTRING(Check_Bloodpressure_Normal); if (_bloodPressureHigh > 160) then { - _output = STRING(Check_Bloodpressure_Output_4); - _logOutPut = localize STRING(Check_Bloodpressure_High); + _output = LSTRING(Check_Bloodpressure_Output_4); + _logOutPut = localize LSTRING(Check_Bloodpressure_High); }; }; } else { if (random(10) > 3) then { - _output = STRING(Check_Bloodpressure_Output_5); - _logOutPut = localize STRING(Check_Bloodpressure_NoBloodpressure); + _output = LSTRING(Check_Bloodpressure_Output_5); + _logOutPut = localize LSTRING(Check_Bloodpressure_NoBloodpressure); } else { - _output = STRING(Check_Bloodpressure_Output_6); + _output = LSTRING(Check_Bloodpressure_Output_6); }; }; }; @@ -56,5 +56,5 @@ if ([_caller] call FUNC(isMedic)) then { ["displayTextStructured", [_caller], [[_output, [_target] call EFUNC(common,getName), round(_bloodPressureHigh),round(_bloodPressureLow)], 1.75, _caller]] call EFUNC(common,targetEvent); if (_logOutPut != "") then { - [_target,"activity", localize STRING(Check_Bloodpressure_Log), [[_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog); + [_target,"activity", localize LSTRING(Check_Bloodpressure_Log), [[_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog); }; diff --git a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf index 7c2abdf5de..09d275d07d 100644 --- a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf @@ -23,24 +23,24 @@ _heartRate = _unit getvariable [QGVAR(heartRate), 80]; if (!alive _unit) then { _heartRate = 0; }; -_heartRateOutput = STRING(Check_Pulse_Output_5); -_logOutPut = localize STRING(Check_Pulse_None); +_heartRateOutput = LSTRING(Check_Pulse_Output_5); +_logOutPut = localize LSTRING(Check_Pulse_None); if (_heartRate > 1.0) then { if ([_caller] call FUNC(isMedic)) then { - _heartRateOutput = STRING(Check_Pulse_Output_1); + _heartRateOutput = LSTRING(Check_Pulse_Output_1); _logOutPut = format["%1",round(_heartRate)]; } else { // non medical personel will only find a pulse/HR - _heartRateOutput = STRING(Check_Pulse_Output_2); - _logOutPut = localize STRING(Check_Pulse_Weak); + _heartRateOutput = LSTRING(Check_Pulse_Output_2); + _logOutPut = localize LSTRING(Check_Pulse_Weak); if (_heartRate > 60) then { if (_heartRate > 100) then { - _heartRateOutput = STRING(Check_Pulse_Output_3); - _logOutPut = localize STRING(Check_Pulse_Strong); + _heartRateOutput = LSTRING(Check_Pulse_Output_3); + _logOutPut = localize LSTRING(Check_Pulse_Strong); } else { - _heartRateOutput = STRING(Check_Pulse_Output_4); - _logOutPut = localize STRING(Check_Pulse_Normal); + _heartRateOutput = LSTRING(Check_Pulse_Output_4); + _logOutPut = localize LSTRING(Check_Pulse_Normal); }; }; }; @@ -49,5 +49,5 @@ if (_heartRate > 1.0) then { ["displayTextStructured", [_caller], [[_heartRateOutput, [_unit] call EFUNC(common,getName), round(_heartRate)], 1.5, _caller]] call EFUNC(common,targetEvent); if (_logOutPut != "") then { - [_unit,"activity", localize STRING(Check_Pulse_Log),[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog); + [_unit,"activity", localize LSTRING(Check_Pulse_Log),[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog); }; diff --git a/addons/medical/functions/fnc_actionCheckResponse.sqf b/addons/medical/functions/fnc_actionCheckResponse.sqf index 9a0c87b6d8..2d62df12f6 100644 --- a/addons/medical/functions/fnc_actionCheckResponse.sqf +++ b/addons/medical/functions/fnc_actionCheckResponse.sqf @@ -20,9 +20,9 @@ _target = _this select 1; _output = ""; if ([_target] call EFUNC(common,isAwake)) then { - _output = STRING(Check_Response_Responsive); + _output = LSTRING(Check_Response_Responsive); } else { - _output = STRING(Check_Response_Unresponsive); + _output = LSTRING(Check_Response_Unresponsive); }; ["displayTextStructured", [_caller], [[_output, [_target] call EFUNC(common,getName)], 2, _caller]] call EFUNC(common,targetEvent); diff --git a/addons/medical/functions/fnc_actionDiagnose.sqf b/addons/medical/functions/fnc_actionDiagnose.sqf index 3158f6b844..243edbdef8 100644 --- a/addons/medical/functions/fnc_actionDiagnose.sqf +++ b/addons/medical/functions/fnc_actionDiagnose.sqf @@ -18,28 +18,28 @@ private ["_caller", "_target", "_genericMessages"]; _caller = _this select 0; _target = _this select 1; -_genericMessages = [STRING(diagnoseMessage)]; +_genericMessages = [LSTRING(diagnoseMessage)]; _genericMessages pushBack ([_target] call EFUNC(common,getName)); if (alive _target) then { - _genericMessages pushback STRING(diagnoseAlive); + _genericMessages pushback LSTRING(diagnoseAlive); } else { - _genericMessages pushback STRING(diagnoseDead); + _genericMessages pushback LSTRING(diagnoseDead); }; if (_target getvariable[QGVAR(hasLostBlood), 0] > 0) then { if (_target getvariable[QGVAR(hasLostBlood), 0] > 1) then { - _genericMessages pushback STRING(lostBloodALot); + _genericMessages pushback LSTRING(lostBloodALot); } else { - _genericMessages pushback STRING(lostBlood); + _genericMessages pushback LSTRING(lostBlood); }; } else { - _genericMessages pushback STRING(noBloodloss); + _genericMessages pushback LSTRING(noBloodloss); }; if (_target getvariable[QGVAR(hasPain), false]) then { - _genericMessages pushback STRING(inPain); + _genericMessages pushback LSTRING(inPain); } else { - _genericMessages pushback STRING(noPain); + _genericMessages pushback LSTRING(noPain); }; ["displayTextStructured", [_caller], [_genericMessages, 3.0, _caller]] call EFUNC(common,targetEvent); diff --git a/addons/medical/functions/fnc_displayPatientInformation.sqf b/addons/medical/functions/fnc_displayPatientInformation.sqf index 07c49d8e0c..96b56c57f9 100644 --- a/addons/medical/functions/fnc_displayPatientInformation.sqf +++ b/addons/medical/functions/fnc_displayPatientInformation.sqf @@ -50,22 +50,22 @@ if (_show) then { _genericMessages = []; if (GVAR(level) >= 2) then { - _partText = [STRING(Head), STRING(Torso), STRING(ArmLeft) ,STRING(ArmRight) ,STRING(LegLeft), STRING(LegRight)] select _selectionN; + _partText = [LSTRING(Head), LSTRING(Torso), LSTRING(ArmLeft) ,LSTRING(ArmRight) ,LSTRING(LegLeft), LSTRING(LegRight)] select _selectionN; _genericMessages pushback [localize _partText, [1, 1, 1, 1]]; }; if (_target getvariable[QGVAR(isBleeding), false]) then { - _genericMessages pushback [localize STRING(Status_Bleeding), [1, 0.1, 0.1, 1]]; + _genericMessages pushback [localize LSTRING(Status_Bleeding), [1, 0.1, 0.1, 1]]; }; if (_target getvariable[QGVAR(hasLostBlood), 0] > 1) then { - _genericMessages pushback [localize STRING(Status_Lost_Blood), [1, 0.1, 0.1, 1]]; + _genericMessages pushback [localize LSTRING(Status_Lost_Blood), [1, 0.1, 0.1, 1]]; }; if (((_target getvariable [QGVAR(tourniquets), [0,0,0,0,0,0]]) select _selectionN) > 0) then { - _genericMessages pushback [localize STRING(Status_Tourniquet_Applied), [0.77, 0.51, 0.08, 1]]; + _genericMessages pushback [localize LSTRING(Status_Tourniquet_Applied), [0.77, 0.51, 0.08, 1]]; }; if (_target getvariable[QGVAR(hasPain), false]) then { - _genericMessages pushback [localize STRING(Status_Pain), [1, 1, 1, 1]]; + _genericMessages pushback [localize LSTRING(Status_Pain), [1, 1, 1, 1]]; }; _totalIvVolume = 0; @@ -77,7 +77,7 @@ if (_show) then { }; }foreach GVAR(IVBags); if (_totalIvVolume >= 1) then { - _genericMessages pushback [format[localize STRING(receivingIvVolume), floor _totalIvVolume], [1, 1, 1, 1]]; + _genericMessages pushback [format[localize LSTRING(receivingIvVolume), floor _totalIvVolume], [1, 1, 1, 1]]; }; _damaged = [false, false, false, false, false, false]; @@ -133,17 +133,17 @@ if (_show) then { if (_target getHitPointDamage _x > 0 && {_forEachIndex == _selectionN}) then { _pointDamage = _target getHitPointDamage _x; _severity = switch (true) do { - case (_pointDamage > 0.5): {localize STRING(HeavilyWounded)}; - case (_pointDamage > 0.1): {localize STRING(LightlyWounded)}; - default {localize STRING(VeryLightlyWounded)}; + case (_pointDamage > 0.5): {localize LSTRING(HeavilyWounded)}; + case (_pointDamage > 0.1): {localize LSTRING(LightlyWounded)}; + default {localize LSTRING(VeryLightlyWounded)}; }; _part = localize ([ - STRING(Head), - STRING(Torso), - STRING(LeftArm), - STRING(RightArm), - STRING(LeftLeg), - STRING(RightLeg) + LSTRING(Head), + LSTRING(Torso), + LSTRING(LeftArm), + LSTRING(RightArm), + LSTRING(LeftLeg), + LSTRING(RightLeg) ] select _forEachIndex); _allInjuryTexts pushBack [format ["%1 %2", _severity, toLower _part], [1,1,1,1]]; }; @@ -186,7 +186,7 @@ if (_show) then { _lbCtrl lbSetColor [_foreachIndex + _amountOfGeneric, _x select 1]; }foreach _allInjuryTexts; if (count _allInjuryTexts == 0) then { - _lbCtrl lbAdd (localize STRING(NoInjuriesBodypart)); + _lbCtrl lbAdd (localize LSTRING(NoInjuriesBodypart)); }; _logCtrl = (_display displayCtrl 302); diff --git a/addons/medical/functions/fnc_displayTriageCard.sqf b/addons/medical/functions/fnc_displayTriageCard.sqf index bc6b412990..c4ed4ad829 100644 --- a/addons/medical/functions/fnc_displayTriageCard.sqf +++ b/addons/medical/functions/fnc_displayTriageCard.sqf @@ -58,7 +58,7 @@ if (_show) then { }foreach _log; if (count _triageCardTexts == 0) then { - _lbCtrl lbAdd (localize STRING(TriageCard_NoEntry)); + _lbCtrl lbAdd (localize LSTRING(TriageCard_NoEntry)); }; { _lbCtrl lbAdd _x; diff --git a/addons/medical/functions/fnc_getTriageStatus.sqf b/addons/medical/functions/fnc_getTriageStatus.sqf index 26e91882dd..812c20ed2a 100644 --- a/addons/medical/functions/fnc_getTriageStatus.sqf +++ b/addons/medical/functions/fnc_getTriageStatus.sqf @@ -17,10 +17,10 @@ private ["_unit","_return","_status"]; _unit = _this select 0; _status = _unit getvariable [QGVAR(triageLevel), -1]; _return = switch (_status) do { - case 1: {[localize STRING(Triage_Status_Minor), 1, [0, 0.5, 0, 0.9]]}; - case 2: {[localize STRING(Triage_Status_Delayed), 2, [0.7, 0.5, 0, 0.9]]}; - case 3: {[localize STRING(Triage_Status_Immediate), 3, [0.4, 0.07, 0.07, 0.9]]}; - case 4: {[localize STRING(Triage_Status_Deceased), 4, [0, 0, 0, 0.9]]}; - default {[localize STRING(Triage_Status_None), 0, [0, 0, 0, 0.9]]}; + case 1: {[localize LSTRING(Triage_Status_Minor), 1, [0, 0.5, 0, 0.9]]}; + case 2: {[localize LSTRING(Triage_Status_Delayed), 2, [0.7, 0.5, 0, 0.9]]}; + case 3: {[localize LSTRING(Triage_Status_Immediate), 3, [0.4, 0.07, 0.07, 0.9]]}; + case 4: {[localize LSTRING(Triage_Status_Deceased), 4, [0, 0, 0, 0.9]]}; + default {[localize LSTRING(Triage_Status_None), 0, [0, 0, 0, 0.9]]}; }; _return; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf index a26d9c2f99..6b6b7adb81 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf @@ -37,6 +37,6 @@ if !([_target] call FUNC(hasMedicalEnabled)) exitwith { }; }foreach _items;*/ -[_target, "activity", STRING(Activity_bandagedPatient), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target, "activity", LSTRING(Activity_bandagedPatient), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf index bed11fe75f..e3d07616f3 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf @@ -32,6 +32,6 @@ _items = _this select 4; }; }foreach _items; -[_target, "activity", STRING(Activity_usedItem), [[_caller] call EFUNC(common,getName), _className]] call FUNC(addToLog); +[_target, "activity", LSTRING(Activity_usedItem), [[_caller] call EFUNC(common,getName), _className]] call FUNC(addToLog); true; diff --git a/addons/medical/functions/fnc_treatmentIV.sqf b/addons/medical/functions/fnc_treatmentIV.sqf index 81bf437033..fc6b91b057 100644 --- a/addons/medical/functions/fnc_treatmentIV.sqf +++ b/addons/medical/functions/fnc_treatmentIV.sqf @@ -29,4 +29,4 @@ if (count _items == 0) exitwith {}; _removeItem = _items select 0; [[_target, _className], QUOTE(DFUNC(treatmentIVLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ [_target, _removeItem] call FUNC(addToTriageCard); -[_target, "activity", STRING(Activity_gaveIV), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target, "activity", LSTRING(Activity_gaveIV), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); diff --git a/addons/medical/functions/fnc_treatmentTourniquet.sqf b/addons/medical/functions/fnc_treatmentTourniquet.sqf index 63e7df4f56..cab44d3295 100644 --- a/addons/medical/functions/fnc_treatmentTourniquet.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquet.sqf @@ -43,7 +43,7 @@ _removeItem = _items select 0; [[_target, _removeItem, _selectionName], QUOTE(DFUNC(treatmentTourniquetLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ [_target, _removeItem] call FUNC(addToTriageCard); -[_target, "activity", STRING(Activity_appliedTourniquet), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target, "activity", LSTRING(Activity_appliedTourniquet), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); true; diff --git a/addons/microdagr/XEH_clientInit.sqf b/addons/microdagr/XEH_clientInit.sqf index 892b8c2c46..3b77a6bc33 100644 --- a/addons/microdagr/XEH_clientInit.sqf +++ b/addons/microdagr/XEH_clientInit.sqf @@ -4,7 +4,7 @@ if (!hasInterface) exitWith {}; //Add Keybinds: -["ACE3 Equipment", QGVAR(openGPS), (localize STRING(toggleUnit)), +["ACE3 Equipment", QGVAR(openGPS), (localize LSTRING(toggleUnit)), { // canInteractWith (can use on map) if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -17,7 +17,7 @@ if (!hasInterface) exitWith {}; {false}, [0xC7, [false, false, false]], false] call cba_fnc_addKeybind; //Home Key -["ACE3 Equipment", QGVAR(closeGPS), (localize STRING(closeUnit)), +["ACE3 Equipment", QGVAR(closeGPS), (localize LSTRING(closeUnit)), { // canInteractWith (can use on map) if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/microdagr/functions/fnc_showApplicationPage.sqf b/addons/microdagr/functions/fnc_showApplicationPage.sqf index cfa364eeee..5ab054732c 100644 --- a/addons/microdagr/functions/fnc_showApplicationPage.sqf +++ b/addons/microdagr/functions/fnc_showApplicationPage.sqf @@ -88,10 +88,10 @@ if (GVAR(currentApplicationPage) == APP_MODE_MARK) then { if ((count GVAR(newWaypointPosition)) == 0) then { - (_display displayCtrl IDC_MODEMARK_HEADER) ctrlSetText (localize STRING(wpEnterCords)); + (_display displayCtrl IDC_MODEMARK_HEADER) ctrlSetText (localize LSTRING(wpEnterCords)); (_display displayCtrl IDC_MODEMARK_CORDSEDIT) ctrlSetText ""; } else { - (_display displayCtrl IDC_MODEMARK_HEADER) ctrlSetText format [(localize STRING(wpEnterName)), mapGridPosition GVAR(newWaypointPosition)]; + (_display displayCtrl IDC_MODEMARK_HEADER) ctrlSetText format [(localize LSTRING(wpEnterName)), mapGridPosition GVAR(newWaypointPosition)]; (_display displayCtrl IDC_MODEMARK_CORDSEDIT) ctrlSetText format ["[%1]", mapGridPosition GVAR(newWaypointPosition)]; }; ctrlSetFocus (_display displayCtrl IDC_MODEMARK_CORDSEDIT); diff --git a/addons/microdagr/functions/fnc_updateDisplay.sqf b/addons/microdagr/functions/fnc_updateDisplay.sqf index fca5e9ed3b..aa3a7c9379 100644 --- a/addons/microdagr/functions/fnc_updateDisplay.sqf +++ b/addons/microdagr/functions/fnc_updateDisplay.sqf @@ -181,18 +181,18 @@ case (APP_MODE_SETUP): { _settingListBox = _display displayCtrl IDC_MODESETTINGS; lbClear _settingListBox; - _settingListBox lbAdd (localize STRING(settingUseMils)); + _settingListBox lbAdd (localize LSTRING(settingUseMils)); if (GVAR(settingUseMils)) then { - _settingListBox lbSetTextRight [0, (localize STRING(settingMils))]; + _settingListBox lbSetTextRight [0, (localize LSTRING(settingMils))]; } else { - _settingListBox lbSetTextRight [0, (localize STRING(settingDegrees))]; + _settingListBox lbSetTextRight [0, (localize LSTRING(settingDegrees))]; }; - _settingListBox lbAdd (localize STRING(settingShowWP)); + _settingListBox lbAdd (localize LSTRING(settingShowWP)); if (GVAR(settingShowAllWaypointsOnMap)) then { - _settingListBox lbSetTextRight [1, (localize STRING(settingOn))]; + _settingListBox lbSetTextRight [1, (localize LSTRING(settingOn))]; } else { - _settingListBox lbSetTextRight [1, (localize STRING(settingOff))]; + _settingListBox lbSetTextRight [1, (localize LSTRING(settingOff))]; }; }; }; diff --git a/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf b/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf index 697b169d5b..e74cb315f7 100644 --- a/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf +++ b/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf @@ -51,7 +51,7 @@ _fireModes = getArray (configFile >> "CfgWeapons" >> _tubeWeaponName >> "modes") _currentFireMode = (weaponState [_mortarVeh, [0]]) select 2; _currentChargeMode = _fireModes find _currentFireMode; - _text = format ["%1: %2 ", (localize STRING(rangetable_charge)), _currentChargeMode, QUOTE(PATHTOF(UI\ui_charges.paa))]; + _text = format ["%1: %2 ", (localize LSTRING(rangetable_charge)), _currentChargeMode, QUOTE(PATHTOF(UI\ui_charges.paa))]; _chargeText ctrlSetStructuredText parseText _text; if (shownArtilleryComputer && {!GVAR(allowComputerRangefinder)}) then { //Don't like this solution, but it works diff --git a/addons/mk6mortar/functions/fnc_rangeTableOpen.sqf b/addons/mk6mortar/functions/fnc_rangeTableOpen.sqf index 8f9fea3dcb..07e0536d24 100644 --- a/addons/mk6mortar/functions/fnc_rangeTableOpen.sqf +++ b/addons/mk6mortar/functions/fnc_rangeTableOpen.sqf @@ -39,7 +39,7 @@ _muzzleVelocities = []; _showToPlayer = getNumber (configFile >> "CfgWeapons" >> _weaponName >> _x >> "showToPlayer"); if (_showToPlayer == 1) then { _artilleryCharge = getNumber (configFile >> "CfgWeapons" >> _weaponName >> _x >> "artilleryCharge"); - LIST_CHARGE lbAdd format ["%1: %2", (localize STRING(rangetable_charge)), (count _muzzleVelocities)]; + LIST_CHARGE lbAdd format ["%1: %2", (localize LSTRING(rangetable_charge)), (count _muzzleVelocities)]; LIST_CHARGE lbSetData [(count _muzzleVelocities), str (_artilleryCharge * _initSpeed)]; _muzzleVelocities pushBack _artilleryCharge; }; diff --git a/addons/movement/XEH_postInit.sqf b/addons/movement/XEH_postInit.sqf index 7925727b85..ebe97e879d 100644 --- a/addons/movement/XEH_postInit.sqf +++ b/addons/movement/XEH_postInit.sqf @@ -14,13 +14,13 @@ if (!hasInterface) exitWith {}; [_this select 1] call CBA_fnc_removePerFrameHandler; }; - _dialog displayCtrl 111 ctrlSetText format ["%1 - %2 %3", [ACE_player] call EFUNC(common,getName), localize STRING(Weight), [ACE_player] call FUNC(getWeight)]; + _dialog displayCtrl 111 ctrlSetText format ["%1 - %2 %3", [ACE_player] call EFUNC(common,getName), localize LSTRING(Weight), [ACE_player] call FUNC(getWeight)]; }, 0, _this select 0] call CBA_fnc_addPerFrameHandler; }] call EFUNC(common,addEventHandler); -["ACE3 Movement", QGVAR(climb), localize STRING(Climb), +["ACE3 Movement", QGVAR(climb), localize LSTRING(Climb), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/movement/functions/fnc_climb.sqf b/addons/movement/functions/fnc_climb.sqf index d9d0a2adfd..a395e834b8 100644 --- a/addons/movement/functions/fnc_climb.sqf +++ b/addons/movement/functions/fnc_climb.sqf @@ -20,7 +20,7 @@ private "_unit"; _unit = _this select 0; if !([_unit] call FUNC(canClimb)) exitWith { - [localize STRING(CanNotClimb)] call EFUNC(common,displayTextStructured); + [localize LSTRING(CanNotClimb)] call EFUNC(common,displayTextStructured); }; if !(_unit getVariable [QGVAR(isClimbInit), false]) then { diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index 2d3366ae84..b8a570507f 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -8,7 +8,7 @@ if (!hasInterface) exitWith {}; GVAR(ShowNamesTime) = -10; // Add keybinds -["ACE3 Common", QGVAR(showNameTags), localize STRING(ShowNames), +["ACE3 Common", QGVAR(showNameTags), localize LSTRING(ShowNames), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/nightvision/XEH_postInitClient.sqf b/addons/nightvision/XEH_postInitClient.sqf index cf4541a86a..cc8490eb15 100644 --- a/addons/nightvision/XEH_postInitClient.sqf +++ b/addons/nightvision/XEH_postInitClient.sqf @@ -37,7 +37,7 @@ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; ["playerTurretChanged", {_this call FUNC(updatePPEffects)}] call EFUNC(common,addEventHandler); // Add keybinds -["ACE3 Equipment", QGVAR(IncreaseNVGBrightness), localize STRING(IncreaseNVGBrightness), +["ACE3 Equipment", QGVAR(IncreaseNVGBrightness), localize LSTRING(IncreaseNVGBrightness), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotEscorting", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -51,7 +51,7 @@ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; {false}, [201, [false, false, true]], false] call cba_fnc_addKeybind; //PageUp + ALT -["ACE3 Equipment", QGVAR(DecreaseNVGBrightness), localize STRING(DecreaseNVGBrightness), +["ACE3 Equipment", QGVAR(DecreaseNVGBrightness), localize LSTRING(DecreaseNVGBrightness), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotEscorting", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/nightvision/functions/fnc_changeNVGBrightness.sqf b/addons/nightvision/functions/fnc_changeNVGBrightness.sqf index ac80f96c9c..327c148883 100644 --- a/addons/nightvision/functions/fnc_changeNVGBrightness.sqf +++ b/addons/nightvision/functions/fnc_changeNVGBrightness.sqf @@ -29,5 +29,5 @@ _player setVariable [QGVAR(NVGBrightness), _brightness, false]; GVAR(ppEffectNVGBrightness) ppEffectAdjust [1, 1, _brightness / 4, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]; GVAR(ppEffectNVGBrightness) ppEffectCommit 0; -[format [(localize STRING(NVGBrightness)), (_brightness * 100)]] call EFUNC(common,displayTextStructured); +[format [(localize LSTRING(NVGBrightness)), (_brightness * 100)]] call EFUNC(common,displayTextStructured); playSound "ACE_Sound_Click"; diff --git a/addons/optionsmenu/functions/fnc_exportSettings.sqf b/addons/optionsmenu/functions/fnc_exportSettings.sqf index ccb7113915..d32c45f7f6 100644 --- a/addons/optionsmenu/functions/fnc_exportSettings.sqf +++ b/addons/optionsmenu/functions/fnc_exportSettings.sqf @@ -75,6 +75,6 @@ FUNC(clipboardExport) = { }; [_compiledConfig] call FUNC(clipboardExport); -[STRING(settingsExported)] call EFUNC(common,displayTextStructured); +[LSTRING(settingsExported)] call EFUNC(common,displayTextStructured); diff --git a/addons/optionsmenu/functions/fnc_onListBoxShowSelectionChanged.sqf b/addons/optionsmenu/functions/fnc_onListBoxShowSelectionChanged.sqf index b6a2c9ce26..0ddcc8d2a9 100644 --- a/addons/optionsmenu/functions/fnc_onListBoxShowSelectionChanged.sqf +++ b/addons/optionsmenu/functions/fnc_onListBoxShowSelectionChanged.sqf @@ -26,7 +26,7 @@ _settingsMenu = uiNamespace getVariable 'ACE_settingsMenu'; switch (GVAR(optionMenu_openTab)) do { case (MENU_TAB_OPTIONS): { - _localizedHeader = format ["%1: %2", (localize STRING(OpenConfigMenu)), (localize STRING(TabOptions))]; + _localizedHeader = format ["%1: %2", (localize LSTRING(OpenConfigMenu)), (localize LSTRING(TabOptions))]; ctrlSetText [13, _localizedHeader]; lbClear 400; @@ -39,7 +39,7 @@ case (MENU_TAB_OPTIONS): { (_settingsMenu displayCtrl 413) ctrlShow false; }; case (MENU_TAB_COLORS): { - _localizedHeader = format ["%1: %2", (localize STRING(OpenConfigMenu)), (localize STRING(TabColors))]; + _localizedHeader = format ["%1: %2", (localize LSTRING(OpenConfigMenu)), (localize LSTRING(TabColors))]; ctrlSetText [13, _localizedHeader]; lbClear 400; diff --git a/addons/optionsmenu/functions/fnc_onServerListBoxShowSelectionChanged.sqf b/addons/optionsmenu/functions/fnc_onServerListBoxShowSelectionChanged.sqf index 15de7d3c00..669faf74ed 100644 --- a/addons/optionsmenu/functions/fnc_onServerListBoxShowSelectionChanged.sqf +++ b/addons/optionsmenu/functions/fnc_onServerListBoxShowSelectionChanged.sqf @@ -26,7 +26,7 @@ _settingsMenu = uiNamespace getVariable 'ACE_serverSettingsMenu'; switch (GVAR(optionMenu_openTab)) do { case (MENU_TAB_SERVER_OPTIONS): { - _localizedHeader = format ["%1: %2", (localize STRING(OpenConfigMenu)), (localize STRING(TabOptions))]; + _localizedHeader = format ["%1: %2", (localize LSTRING(OpenConfigMenu)), (localize LSTRING(TabOptions))]; ctrlSetText [13, _localizedHeader]; lbClear 400; @@ -43,7 +43,7 @@ case (MENU_TAB_SERVER_OPTIONS): { (_settingsMenu displayCtrl 416) ctrlEnable false; }; case (MENU_TAB_SERVER_COLORS): { - _localizedHeader = format ["%1: %2", (localize STRING(OpenConfigMenu)), (localize STRING(TabColors))]; + _localizedHeader = format ["%1: %2", (localize LSTRING(OpenConfigMenu)), (localize LSTRING(TabColors))]; ctrlSetText [13, _localizedHeader]; lbClear 400; @@ -67,7 +67,7 @@ case (MENU_TAB_SERVER_COLORS): { (_settingsMenu displayCtrl 416) ctrlEnable false; }; case (MENU_TAB_SERVER_VALUES): { - _localizedHeader = format ["%1: %2", (localize STRING(OpenConfigMenu)), (localize STRING(TabValues))]; + _localizedHeader = format ["%1: %2", (localize LSTRING(OpenConfigMenu)), (localize LSTRING(TabValues))]; ctrlSetText [13, _localizedHeader]; lbClear 400; diff --git a/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf b/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf index 145a230a63..4f96438042 100644 --- a/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf +++ b/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf @@ -61,7 +61,7 @@ _menu = uiNamespace getvariable "ACE_serverSettingsMenu"; (_menu displayCtrl 1003) ctrlEnable false; if (GVAR(ClientSettingsExportIncluded)) then { - (_settingsMenu displayCtrl 1102) ctrlSetText localize (STRING(exClientSettings)); + (_settingsMenu displayCtrl 1102) ctrlSetText localize (LSTRING(exClientSettings)); } else { - (_settingsMenu displayCtrl 1102) ctrlSetText localize (STRING(inClientSettings)); + (_settingsMenu displayCtrl 1102) ctrlSetText localize (LSTRING(inClientSettings)); }; diff --git a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf index e95d73a67b..9daee053bb 100644 --- a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf +++ b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf @@ -56,8 +56,8 @@ if (count _collection > 0) then { // Created disable/enable options for bools if ((_setting select 1) == "BOOL") then { lbClear 400; - lbAdd [400, (localize STRING(Disabled))]; - lbAdd [400, (localize STRING(Enabled))]; + lbAdd [400, (localize LSTRING(Disabled))]; + lbAdd [400, (localize LSTRING(Enabled))]; _settingsValue = [0, 1] select _settingsValue; } else { lbClear 400; @@ -77,10 +77,10 @@ if (count _collection > 0) then { // Created disable/enable options for bools _expectedType = switch (_setting select 1) do { - case "STRING": {STRING(stringType)}; - case "ARRAY": {STRING(arrayType)}; - case "SCALAR": {STRING(scalarType)}; - default {STRING(unknownType)}; + case "STRING": {LSTRING(stringType)}; + case "ARRAY": {LSTRING(arrayType)}; + case "SCALAR": {LSTRING(scalarType)}; + default {LSTRING(unknownType)}; }; (_settingsMenu displayCtrl 414) ctrlSetText format["%1", _settingsValue]; (_settingsMenu displayCtrl 415) ctrlSetText format[localize _expectedType]; diff --git a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf index 762a5497d4..f3e393bbfd 100644 --- a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf +++ b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf @@ -37,7 +37,7 @@ switch (GVAR(optionMenu_openTab)) do { // Created disable/enable options for bools _settingsText = if ((_x select 1) == "BOOL") then { - [(localize STRING(Disabled)), (localize STRING(Enabled))] select _settingsValue; + [(localize LSTRING(Disabled)), (localize LSTRING(Enabled))] select _settingsValue; } else { (_x select 5) select _settingsValue; }; diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf index 864033ce1f..3777093ccd 100644 --- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf +++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf @@ -56,8 +56,8 @@ if (count _collection > 0) then { // Created disable/enable options for bools if ((_setting select 1) == "BOOL") then { lbClear 400; - lbAdd [400, (localize STRING(Disabled))]; - lbAdd [400, (localize STRING(Enabled))]; + lbAdd [400, (localize LSTRING(Disabled))]; + lbAdd [400, (localize LSTRING(Enabled))]; _settingsValue = [0, 1] select _settingsValue; } else { lbClear 400; diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf index c3a232ec08..fdd9128ca3 100644 --- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf +++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf @@ -34,7 +34,7 @@ switch (GVAR(optionMenu_openTab)) do { // Created disable/enable options for bools _settingsText = if ((_x select 1) == "BOOL") then { - [(localize STRING(Disabled)), (localize STRING(Enabled))] select _settingsValue; + [(localize LSTRING(Disabled)), (localize LSTRING(Enabled))] select _settingsValue; } else { (_x select 5) select _settingsValue; }; diff --git a/addons/overheating/XEH_postInit.sqf b/addons/overheating/XEH_postInit.sqf index 3b270f2d85..0dad0dd32c 100644 --- a/addons/overheating/XEH_postInit.sqf +++ b/addons/overheating/XEH_postInit.sqf @@ -4,7 +4,7 @@ if !(hasInterface) exitWith {}; // Add keybinds -["ACE3 Weapons", QGVAR(unjamWeapon), localize STRING(UnjamWeapon), +["ACE3 Weapons", QGVAR(unjamWeapon), localize LSTRING(UnjamWeapon), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/overheating/functions/fnc_clearJam.sqf b/addons/overheating/functions/fnc_clearJam.sqf index be6d073b6f..1c7e959a98 100644 --- a/addons/overheating/functions/fnc_clearJam.sqf +++ b/addons/overheating/functions/fnc_clearJam.sqf @@ -52,6 +52,6 @@ if (_weapon in _jammedWeapons) then { }; if (GVAR(DisplayTextOnJam)) then { - [localize STRING(WeaponUnjammed)] call EFUNC(common,displayTextStructured); + [localize LSTRING(WeaponUnjammed)] call EFUNC(common,displayTextStructured); }; }; diff --git a/addons/overheating/functions/fnc_jamWeapon.sqf b/addons/overheating/functions/fnc_jamWeapon.sqf index 487266be32..1249cac690 100644 --- a/addons/overheating/functions/fnc_jamWeapon.sqf +++ b/addons/overheating/functions/fnc_jamWeapon.sqf @@ -62,7 +62,7 @@ if (_unit getVariable [QGVAR(JammingActionID), -1] == -1) then { playSound3D ["a3\sounds_f\weapons\Other\dry9.wss", _this select 0]; if (!(missionNamespace getVariable [QGVAR(knowAboutJam), false]) && {(_this select 1) ammo currentWeapon (_this select 1) > 0} && {GVAR(DisplayTextOnJam)}) then { - [localize STRING(WeaponJammed)] call EFUNC(common,displayTextStructured); + [localize LSTRING(WeaponJammed)] call EFUNC(common,displayTextStructured); GVAR(knowAboutJam) = true; }; }; @@ -75,7 +75,7 @@ if (_unit getVariable [QGVAR(JammingActionID), -1] == -1) then { [_this select 1, currentWeapon (_this select 1), false] call FUNC(clearJam); }; - //_id = [_unit, format ["%1", localize STRING(UnjamWeapon)], "DefaultAction", _condition, _statement, _condition2, _statement2, 10] call EFUNC(common,addActionMenuEventHandler); + //_id = [_unit, format ["%1", localize LSTRING(UnjamWeapon)], "DefaultAction", _condition, _statement, _condition2, _statement2, 10] call EFUNC(common,addActionMenuEventHandler); _id = [_unit, "DefaultAction", _condition, _statement] call EFUNC(common,addActionEventHandler); _unit setVariable [QGVAR(JammingActionID), _id]; diff --git a/addons/overheating/functions/fnc_swapBarrel.sqf b/addons/overheating/functions/fnc_swapBarrel.sqf index f2c92d5b4a..4bd0f734b9 100644 --- a/addons/overheating/functions/fnc_swapBarrel.sqf +++ b/addons/overheating/functions/fnc_swapBarrel.sqf @@ -22,4 +22,4 @@ _player playActionNow "GestureDismountMuzzle"; _player playAction "GestureMountMuzzle"; playSound "ACE_BarrelSwap"; -[10, [_player, _weapon], {(_this select 0) call FUNC(swapBarrelCallback)}, {}, (localize STRING(SwappingBarrel))] call EFUNC(common,progressBar); +[10, [_player, _weapon], {(_this select 0) call FUNC(swapBarrelCallback)}, {}, (localize LSTRING(SwappingBarrel))] call EFUNC(common,progressBar); diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index 415908aea3..5947e381c7 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -16,6 +16,6 @@ EXPLODE_2_PVT(_this,_player,_weapon); // don't consume the barrel, but rotate through them. -[localize STRING(SwappedBarrel), QUOTE(PATHTOF(UI\spare_barrel_ca.paa))] call EFUNC(common,displayTextPicture); +[localize LSTRING(SwappedBarrel), QUOTE(PATHTOF(UI\spare_barrel_ca.paa))] call EFUNC(common,displayTextPicture); _player setVariable [format [QGVAR(%1), _weapon], [0, 0], false]; diff --git a/addons/parachute/XEH_postInit.sqf b/addons/parachute/XEH_postInit.sqf index 9ee62d08ba..a8f83b43a3 100644 --- a/addons/parachute/XEH_postInit.sqf +++ b/addons/parachute/XEH_postInit.sqf @@ -17,7 +17,7 @@ if (!hasInterface) exitWith {}; -["ACE3 Equipment", QGVAR(showAltimeter), localize STRING(showAltimeter), +["ACE3 Equipment", QGVAR(showAltimeter), localize LSTRING(showAltimeter), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotEscorting", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/reload/XEH_postInit.sqf b/addons/reload/XEH_postInit.sqf index 869e151b6a..cd0108f740 100644 --- a/addons/reload/XEH_postInit.sqf +++ b/addons/reload/XEH_postInit.sqf @@ -4,7 +4,7 @@ if !(hasInterface) exitWith {}; // Add keybinds -["ACE3 Weapons", QGVAR(checkAmmo), localize STRING(checkAmmo), +["ACE3 Weapons", QGVAR(checkAmmo), localize LSTRING(checkAmmo), { // Conditions: canInteract if !([ACE_player, (vehicle ACE_player), ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/reload/functions/fnc_startLinkingBelt.sqf b/addons/reload/functions/fnc_startLinkingBelt.sqf index c76dc5ccd5..4bed7f700a 100644 --- a/addons/reload/functions/fnc_startLinkingBelt.sqf +++ b/addons/reload/functions/fnc_startLinkingBelt.sqf @@ -66,4 +66,4 @@ _player playActionNow "PutDown"; [_player, _magazineType, _maxAmmo] call EFUNC(common,removeSpecificMagazine); // Call progress bar -[4, [_player, _target, [_magazineType, _maxAmmo]], _onFinish, _onFailure, (localize STRING(LinkingBelt)), _condition] call EFUNC(common,progressBar); +[4, [_player, _target, [_magazineType, _maxAmmo]], _onFinish, _onFailure, (localize LSTRING(LinkingBelt)), _condition] call EFUNC(common,progressBar); diff --git a/addons/reloadlaunchers/functions/fnc_addMissileReloadActions.sqf b/addons/reloadlaunchers/functions/fnc_addMissileReloadActions.sqf index 40c4e85c62..a07afe8e22 100644 --- a/addons/reloadlaunchers/functions/fnc_addMissileReloadActions.sqf +++ b/addons/reloadlaunchers/functions/fnc_addMissileReloadActions.sqf @@ -30,7 +30,7 @@ _loadableMissiles = [_unit, _weapon] call FUNC(getLoadableMissiles); private ["_name", "_displayName", "_statement", "_condition", "_action"]; _name = format [QGVAR(Missile_%1), _x]; - _displayName = format [localize STRING(LoadMagazine), getText (configFile >> "CfgMagazines" >> _x >> "displayName")]; + _displayName = format [localize LSTRING(LoadMagazine), getText (configFile >> "CfgMagazines" >> _x >> "displayName")]; _statement = { (_this select 2) call DFUNC(load); diff --git a/addons/reloadlaunchers/functions/fnc_load.sqf b/addons/reloadlaunchers/functions/fnc_load.sqf index 9cca572307..745bb2a5cb 100644 --- a/addons/reloadlaunchers/functions/fnc_load.sqf +++ b/addons/reloadlaunchers/functions/fnc_load.sqf @@ -34,15 +34,15 @@ _onSuccess = { (_this select 0 select 0) removeMagazine (_this select 0 select 3); ["reloadLauncher", _this select 0 select 1, _this select 0] call DEFUNC(common,targetEvent); - [localize STRING(LauncherLoaded)] call DEFUNC(common,displayTextStructured); + [localize LSTRING(LauncherLoaded)] call DEFUNC(common,displayTextStructured); }; _onFailure = { - [localize ESTRING(common,ActionAborted)] call DEFUNC(common,displayTextStructured); + [localize LESTRING(common,ActionAborted)] call DEFUNC(common,displayTextStructured); }; _condition = { (_this select 0) call DFUNC(canLoad) && {(_this select 0 select 0) distance (_this select 0 select 1) < 4} }; -[_reloadTime, [_unit, _target, _weapon, _magazine], _onSuccess, _onFailure, localize STRING(LoadingLauncher), _condition] call EFUNC(common,progressBar); +[_reloadTime, [_unit, _target, _weapon, _magazine], _onSuccess, _onFailure, localize LSTRING(LoadingLauncher), _condition] call EFUNC(common,progressBar); diff --git a/addons/respawn/functions/fnc_moveRallypoint.sqf b/addons/respawn/functions/fnc_moveRallypoint.sqf index ef84c93dc8..5a0472cf5b 100644 --- a/addons/respawn/functions/fnc_moveRallypoint.sqf +++ b/addons/respawn/functions/fnc_moveRallypoint.sqf @@ -38,7 +38,7 @@ if (count _position == 0) then {_position = getPosATL _unit}; _position set [2, 0]; -[localize STRING(Deploy)] call EFUNC(common,displayTextStructured); +[localize LSTRING(Deploy)] call EFUNC(common,displayTextStructured); [{ _rallypoint = _this select 0; @@ -53,6 +53,6 @@ _position set [2, 0]; ["rallypointMoved", [_rallypoint, _side, _position]] call EFUNC(common,globalEvent); - [localize STRING(Deployed)] call EFUNC(common,displayTextStructured); + [localize LSTRING(Deployed)] call EFUNC(common,displayTextStructured); }, [_rallypoint, _unit, _position, _rallypoint], 5, 1] call EFUNC(common,waitAndExecute); diff --git a/addons/respawn/functions/fnc_teleportToRallypoint.sqf b/addons/respawn/functions/fnc_teleportToRallypoint.sqf index 11bdad618f..59a9766114 100644 --- a/addons/respawn/functions/fnc_teleportToRallypoint.sqf +++ b/addons/respawn/functions/fnc_teleportToRallypoint.sqf @@ -31,4 +31,4 @@ _rallypoint = missionNamespace getVariable [_rallypoint, objNull], if (isNull _rallypoint) exitWith {}; _unit setPosASL getPosASL _rallypoint; -[[localize STRING(TeleportedToRallypoint), localize STRING(TeleportedToBase)] select _toBase] call EFUNC(common,displayTextStructured); +[[localize LSTRING(TeleportedToRallypoint), localize LSTRING(TeleportedToBase)] select _toBase] call EFUNC(common,displayTextStructured); diff --git a/addons/safemode/XEH_postInit.sqf b/addons/safemode/XEH_postInit.sqf index 9f19fe61c9..7ab283f6b6 100644 --- a/addons/safemode/XEH_postInit.sqf +++ b/addons/safemode/XEH_postInit.sqf @@ -9,7 +9,7 @@ if (!hasInterface) exitWith {}; // Add keybinds -["ACE3 Weapons", QGVAR(safeMode), localize STRING(SafeMode), +["ACE3 Weapons", QGVAR(safeMode), localize LSTRING(SafeMode), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/safemode/functions/fnc_lockSafety.sqf b/addons/safemode/functions/fnc_lockSafety.sqf index b723e25dbd..42a8ef89fb 100644 --- a/addons/safemode/functions/fnc_lockSafety.sqf +++ b/addons/safemode/functions/fnc_lockSafety.sqf @@ -47,7 +47,7 @@ if (_unit getVariable [QGVAR(actionID), -1] == -1) then { [_this select 1, currentWeapon (_this select 1), currentMuzzle (_this select 1)] call FUNC(unlockSafety); }; - //_id = [_unit, format ["%1", localize STRING(TakeOffSafety)], "DefaultAction", _condition, {}, {true}, _statement, 10] call EFUNC(common,addActionMenuEventHandler); + //_id = [_unit, format ["%1", localize LSTRING(TakeOffSafety)], "DefaultAction", _condition, {}, {true}, _statement, 10] call EFUNC(common,addActionMenuEventHandler); _id = [_unit, "DefaultAction", _condition, {}] call EFUNC(common,addActionEventHandler); _unit setVariable [QGVAR(actionID), _id]; @@ -62,4 +62,4 @@ if ((typeName _muzzle) == (typeName "")) then { private "_picture"; _picture = getText (configFile >> "CfgWeapons" >> _weapon >> "picture"); -[localize STRING(PutOnSafety), _picture] call EFUNC(common,displayTextPicture); +[localize LSTRING(PutOnSafety), _picture] call EFUNC(common,displayTextPicture); diff --git a/addons/safemode/functions/fnc_unlockSafety.sqf b/addons/safemode/functions/fnc_unlockSafety.sqf index 742fd878d8..2b4f00a4a9 100644 --- a/addons/safemode/functions/fnc_unlockSafety.sqf +++ b/addons/safemode/functions/fnc_unlockSafety.sqf @@ -59,4 +59,4 @@ if (inputAction "nextWeapon" > 0) then { private "_picture"; _picture = getText (configFile >> "CfgWeapons" >> _weapon >> "picture"); -[localize STRING(TookOffSafety), _picture] call EFUNC(common,displayTextPicture); +[localize LSTRING(TookOffSafety), _picture] call EFUNC(common,displayTextPicture); diff --git a/addons/scopes/XEH_postInit.sqf b/addons/scopes/XEH_postInit.sqf index 18572327ea..e96ac43960 100644 --- a/addons/scopes/XEH_postInit.sqf +++ b/addons/scopes/XEH_postInit.sqf @@ -33,7 +33,7 @@ if !(hasInterface) exitWith {}; // Add keybinds -["ACE3 Scope Adjustment", QGVAR(AdjustUpMinor), localize STRING(AdjustUpMinor), +["ACE3 Scope Adjustment", QGVAR(AdjustUpMinor), localize LSTRING(AdjustUpMinor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -46,7 +46,7 @@ if !(hasInterface) exitWith {}; {false}, [201, [false, false, false]], true] call cba_fnc_addKeybind; -["ACE3 Scope Adjustment", QGVAR(AdjustDownMinor), localize STRING(AdjustDownMinor), +["ACE3 Scope Adjustment", QGVAR(AdjustDownMinor), localize LSTRING(AdjustDownMinor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -59,7 +59,7 @@ if !(hasInterface) exitWith {}; {false}, [209, [false, false, false]], true] call cba_fnc_addKeybind; -["ACE3 Scope Adjustment", QGVAR(AdjustLeftMinor), localize STRING(AdjustLeftMinor), +["ACE3 Scope Adjustment", QGVAR(AdjustLeftMinor), localize LSTRING(AdjustLeftMinor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -72,7 +72,7 @@ if !(hasInterface) exitWith {}; {false}, [209, [false, true, false]], true] call cba_fnc_addKeybind; -["ACE3 Scope Adjustment", QGVAR(AdjustRightMinor), localize STRING(AdjustRightMinor), +["ACE3 Scope Adjustment", QGVAR(AdjustRightMinor), localize LSTRING(AdjustRightMinor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -85,7 +85,7 @@ if !(hasInterface) exitWith {}; {false}, [201, [false, true, false]], true] call cba_fnc_addKeybind; -["ACE3 Scope Adjustment", QGVAR(AdjustUpMajor), localize STRING(AdjustUpMajor), +["ACE3 Scope Adjustment", QGVAR(AdjustUpMajor), localize LSTRING(AdjustUpMajor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -98,7 +98,7 @@ if !(hasInterface) exitWith {}; {false}, [201, [true, false, false]], true] call cba_fnc_addKeybind; -["ACE3 Scope Adjustment", QGVAR(AdjustDownMajor), localize STRING(AdjustDownMajor), +["ACE3 Scope Adjustment", QGVAR(AdjustDownMajor), localize LSTRING(AdjustDownMajor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -111,7 +111,7 @@ if !(hasInterface) exitWith {}; {false}, [209, [true, false, false]], true] call cba_fnc_addKeybind; -["ACE3 Scope Adjustment", QGVAR(AdjustLeftMajor), localize STRING(AdjustLeftMajor), +["ACE3 Scope Adjustment", QGVAR(AdjustLeftMajor), localize LSTRING(AdjustLeftMajor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -124,7 +124,7 @@ if !(hasInterface) exitWith {}; {false}, [209, [true, true, false]], true] call cba_fnc_addKeybind; -["ACE3 Scope Adjustment", QGVAR(AdjustRightMajor), localize STRING(AdjustRightMajor), +["ACE3 Scope Adjustment", QGVAR(AdjustRightMajor), localize LSTRING(AdjustRightMajor), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/switchunits/functions/fnc_switchUnit.sqf b/addons/switchunits/functions/fnc_switchUnit.sqf index 905efa72ea..1fbe8b9b28 100644 --- a/addons/switchunits/functions/fnc_switchUnit.sqf +++ b/addons/switchunits/functions/fnc_switchUnit.sqf @@ -41,7 +41,7 @@ if (GVAR(EnableSafeZone)) then { // exitWith doesn't exit past the "if(EnableSafeZone)" block if (_leave) exitWith { - [localize STRING(TooCloseToEnemy)] call EFUNC(common,displayTextStructured); + [localize LSTRING(TooCloseToEnemy)] call EFUNC(common,displayTextStructured); }; // should switch locality @@ -88,7 +88,7 @@ DFUNC(pfhSwitchUnit) = { [[_oldUnit, _oldOwner], QUOTE({(_this select 0) setOwner (_this select 1)}), 1] call EFUNC(common,execRemoteFnc); }; - [localize STRING(SwitchedUnit)] call EFUNC(common,displayTextStructured); + [localize LSTRING(SwitchedUnit)] call EFUNC(common,displayTextStructured); [(_this select 1)] call cba_fnc_removePerFrameHandler; diff --git a/addons/vector/initKeybinds.sqf b/addons/vector/initKeybinds.sqf index 84459f551a..babef0819c 100644 --- a/addons/vector/initKeybinds.sqf +++ b/addons/vector/initKeybinds.sqf @@ -1,6 +1,6 @@ // by commy2 -["ACE3 Equipment", QGVAR(AzimuthKey), localize STRING(AzimuthKey), +["ACE3 Equipment", QGVAR(AzimuthKey), localize LSTRING(AzimuthKey), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -29,7 +29,7 @@ [15, [false, false, false]], false, 0] call CBA_fnc_addKeybind; //Tab Key -["ACE3 Equipment", QGVAR(DistanceKey), localize STRING(DistanceKey), +["ACE3 Equipment", QGVAR(DistanceKey), localize LSTRING(DistanceKey), { // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/vehiclelock/functions/fnc_lockpick.sqf b/addons/vehiclelock/functions/fnc_lockpick.sqf index 608ad8eeb6..613a7b35dc 100644 --- a/addons/vehiclelock/functions/fnc_lockpick.sqf +++ b/addons/vehiclelock/functions/fnc_lockpick.sqf @@ -54,7 +54,7 @@ case (_funcType == "canLockpick"): { _returnValue = true; }; case (_funcType == "startLockpick"): { - [_vehLockpickStrenth, [_unit, _veh, "finishLockpick"], {(_this select 0) call FUNC(lockpick)}, {}, (localize STRING(Action_LockpickInUse)), _condition] call EFUNC(common,progressBar); + [_vehLockpickStrenth, [_unit, _veh, "finishLockpick"], {(_this select 0) call FUNC(lockpick)}, {}, (localize LSTRING(Action_LockpickInUse)), _condition] call EFUNC(common,progressBar); _returnValue = true; }; case (_funcType == "finishLockpick"): { diff --git a/addons/vehicles/XEH_postInit.sqf b/addons/vehicles/XEH_postInit.sqf index e47f00541d..253f5eab39 100644 --- a/addons/vehicles/XEH_postInit.sqf +++ b/addons/vehicles/XEH_postInit.sqf @@ -4,7 +4,7 @@ if !(hasInterface) exitWith {}; // Add keybinds -["ACE3 Vehicles", QGVAR(speedLimiter), localize STRING(SpeedLimiter), +["ACE3 Vehicles", QGVAR(speedLimiter), localize LSTRING(SpeedLimiter), { // Conditions: canInteract if !([ACE_player, objNull, ["isnotinside"]] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/vehicles/functions/fnc_speedLimiter.sqf b/addons/vehicles/functions/fnc_speedLimiter.sqf index 0b77e3f622..7ddb07433a 100644 --- a/addons/vehicles/functions/fnc_speedLimiter.sqf +++ b/addons/vehicles/functions/fnc_speedLimiter.sqf @@ -7,12 +7,12 @@ _driver = _this select 0; _vehicle = _this select 1; if (GETGVAR(isSpeedLimiter,false)) exitWith { - [localize STRING(Off)] call EFUNC(common,displayTextStructured); + [localize LSTRING(Off)] call EFUNC(common,displayTextStructured); playSound "ACE_Sound_Click"; GVAR(isSpeedLimiter) = false; }; -[localize STRING(On)] call EFUNC(common,displayTextStructured); +[localize LSTRING(On)] call EFUNC(common,displayTextStructured); playSound "ACE_Sound_Click"; GVAR(isSpeedLimiter) = true; diff --git a/addons/weaponselect/XEH_postInit.sqf b/addons/weaponselect/XEH_postInit.sqf index d8676ef60f..08fa7c97fc 100644 --- a/addons/weaponselect/XEH_postInit.sqf +++ b/addons/weaponselect/XEH_postInit.sqf @@ -4,7 +4,7 @@ if !(hasInterface) exitWith {}; // Add keybinds -["ACE3 Weapons", QGVAR(SelectPistolNew), localize STRING(SelectPistol), +["ACE3 Weapons", QGVAR(SelectPistolNew), localize LSTRING(SelectPistol), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -18,7 +18,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 1 Key) -["ACE3 Weapons", QGVAR(SelectRifleNew), localize STRING(SelectRifle), +["ACE3 Weapons", QGVAR(SelectRifleNew), localize LSTRING(SelectRifle), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -32,7 +32,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 2 Key) -["ACE3 Weapons", QGVAR(SelectRifleMuzzleNew), localize STRING(SelectRifleMuzzle), +["ACE3 Weapons", QGVAR(SelectRifleMuzzleNew), localize LSTRING(SelectRifleMuzzle), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -46,7 +46,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 3 Key) -["ACE3 Weapons", QGVAR(SelectLauncherNew), localize STRING(SelectLauncher), +["ACE3 Weapons", QGVAR(SelectLauncherNew), localize LSTRING(SelectLauncher), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -60,7 +60,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 4 Key) -["ACE3 Weapons", QGVAR(SelectBinocularNew), localize STRING(SelectBinocular), +["ACE3 Weapons", QGVAR(SelectBinocularNew), localize LSTRING(SelectBinocular), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -74,7 +74,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 5 Key) -["ACE3 Weapons", QGVAR(SelectGrenadeFrag), localize STRING(SelectGrenadeFrag), +["ACE3 Weapons", QGVAR(SelectGrenadeFrag), localize LSTRING(SelectGrenadeFrag), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -88,7 +88,7 @@ if !(hasInterface) exitWith {}; {false}, [7, [false, false, false]], false] call cba_fnc_addKeybind; //6 Key -["ACE3 Weapons", QGVAR(SelectGrenadeOther), localize STRING(SelectGrenadeOther), +["ACE3 Weapons", QGVAR(SelectGrenadeOther), localize LSTRING(SelectGrenadeOther), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -102,7 +102,7 @@ if !(hasInterface) exitWith {}; {false}, [8, [false, false, false]], false] call cba_fnc_addKeybind; //7 Key -["ACE3 Weapons", QGVAR(HolsterWeapon), localize STRING(HolsterWeapon), +["ACE3 Weapons", QGVAR(HolsterWeapon), localize LSTRING(HolsterWeapon), { // Conditions: canInteract if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -116,7 +116,7 @@ if !(hasInterface) exitWith {}; {false}, [11, [false, false, false]], false] call cba_fnc_addKeybind; //0 Key -["ACE3 Vehicles", QGVAR(EngineOn), localize STRING(EngineOn), +["ACE3 Vehicles", QGVAR(EngineOn), localize LSTRING(EngineOn), { // Conditions: canInteract if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -130,7 +130,7 @@ if !(hasInterface) exitWith {}; {false}, [3, [false, false, false]], false] call cba_fnc_addKeybind; //2 Key -["ACE3 Vehicles", QGVAR(EngineOff), localize STRING(EngineOff), +["ACE3 Vehicles", QGVAR(EngineOff), localize LSTRING(EngineOff), { // Conditions: canInteract if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -144,7 +144,7 @@ if !(hasInterface) exitWith {}; {false}, [2, [false, false, false]], false] call cba_fnc_addKeybind; //1 Key -["ACE3 Vehicles", QGVAR(SelectMainGunNew), localize STRING(SelectMainGun), +["ACE3 Vehicles", QGVAR(SelectMainGunNew), localize LSTRING(SelectMainGun), { // Conditions: canInteract if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -158,7 +158,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 3 Key) -["ACE3 Vehicles", QGVAR(SelectMachineGunNew), localize STRING(SelectMachineGun), +["ACE3 Vehicles", QGVAR(SelectMachineGunNew), localize LSTRING(SelectMachineGun), { // Conditions: canInteract if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -172,7 +172,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 4 Key) -["ACE3 Vehicles", QGVAR(SelectMissilesNew), localize STRING(SelectMissiles), +["ACE3 Vehicles", QGVAR(SelectMissilesNew), localize LSTRING(SelectMissiles), { // Conditions: canInteract if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -186,7 +186,7 @@ if !(hasInterface) exitWith {}; {false}, [0, [false, false, false]], false] call cba_fnc_addKeybind; //Unbound (was 5 Key) -["ACE3 Vehicles", QGVAR(FireSmokeLauncher), localize STRING(FireSmokeLauncher), +["ACE3 Vehicles", QGVAR(FireSmokeLauncher), localize LSTRING(FireSmokeLauncher), { // Conditions: canInteract if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf b/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf index d07768729d..69ea5cdf99 100644 --- a/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf +++ b/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf @@ -37,7 +37,7 @@ if (_nextMuzzle != "") then { GVAR(CurrentGrenadeMuzzleFrag) = ""; GVAR(CurrentGrenadeMuzzleOther) = ""; if (GVAR(DisplayText)) then { - _text = [localize STRING(NoGrenadesLeft), [1,0,0]] call EFUNC(common,stringToColoredText); + _text = [localize LSTRING(NoGrenadesLeft), [1,0,0]] call EFUNC(common,stringToColoredText); [composeText [lineBreak, _text]] call EFUNC(common,displayTextStructured); }; }; diff --git a/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf b/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf index 3ffae72300..91d0023e47 100644 --- a/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf +++ b/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf @@ -36,7 +36,7 @@ if (_nextMuzzle != "") then { // There is a no muzzle with magazines --> select nothing GVAR(CurrentGrenadeMuzzleFrag) = ""; if (GVAR(DisplayText)) then { - _text = [localize STRING(NoFragsLeft), [1,0,0]] call EFUNC(common,stringToColoredText); + _text = [localize LSTRING(NoFragsLeft), [1,0,0]] call EFUNC(common,stringToColoredText); [composeText [lineBreak, _text]] call EFUNC(common,displayTextStructured); }; }; diff --git a/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf b/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf index 0fe6b1c204..28cc0e74d8 100644 --- a/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf +++ b/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf @@ -36,7 +36,7 @@ if (_nextMuzzle != "") then { // There is a no muzzle with magazines --> select nothing GVAR(CurrentGrenadeMuzzleOther) = ""; if (GVAR(DisplayText)) then { - _text = [localize STRING(NoMiscGrenadeLeft), [1,0,0]] call EFUNC(common,stringToColoredText); + _text = [localize LSTRING(NoMiscGrenadeLeft), [1,0,0]] call EFUNC(common,stringToColoredText); [composeText [lineBreak, _text]] call EFUNC(common,displayTextStructured); }; }; diff --git a/addons/weather/XEH_postInit.sqf b/addons/weather/XEH_postInit.sqf index 2b862ef1a5..fb6814dd1f 100644 --- a/addons/weather/XEH_postInit.sqf +++ b/addons/weather/XEH_postInit.sqf @@ -25,7 +25,7 @@ GVAR(rain_period_start_time) = ACE_time; }; }; -["ACE3 Common", QGVAR(WindInfoKey), localize STRING(WindInfoKey), +["ACE3 Common", QGVAR(WindInfoKey), localize LSTRING(WindInfoKey), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; From f48127e6ecab8497007045028504e71e611bb168 Mon Sep 17 00:00:00 2001 From: Josuan Albin Date: Thu, 28 May 2015 17:22:45 +0200 Subject: [PATCH 104/252] Documentation pass 5 - Documentation done except (medical, AtragMX, MicroDAGR, Vector, Kestrel 4500) - Typos fixed - enjoy the review MOWHAHAHAHAH. --- documentation/feature/advanced_ballistics.md | 10 ++-- documentation/feature/ai.md | 4 +- documentation/feature/aircraft.md | 4 +- documentation/feature/attach.md | 16 +++--- documentation/feature/ballistics.md | 16 ++---- documentation/feature/captives.md | 4 +- documentation/feature/common.md | 2 + documentation/feature/disarming.md | 2 +- documentation/feature/dragging.md | 6 +-- documentation/feature/explosives.md | 18 +++---- documentation/feature/fcs.md | 11 ++-- documentation/feature/flashsuppressors.md | 4 +- documentation/feature/goggles.md | 2 +- documentation/feature/grenades.md | 8 ++- documentation/feature/hearing.md | 3 +- documentation/feature/hitreactions.md | 2 +- documentation/feature/inventory.md | 6 +-- documentation/feature/javelin.md | 8 ++- documentation/feature/laserpointer.md | 4 +- documentation/feature/logistics_uavbattery.md | 9 ++-- documentation/feature/logistics_wirecutter.md | 2 +- documentation/feature/magazinerepack.md | 4 +- documentation/feature/main.md | 3 +- documentation/feature/map.md | 4 +- documentation/feature/maptools.md | 14 ++--- documentation/feature/markers.md | 2 +- documentation/feature/missileguidance.md | 17 ++---- documentation/feature/missionmodules.md | 19 +++---- documentation/feature/mk6mortar.md | 53 +++++++++++-------- documentation/feature/movement.md | 25 +++++---- documentation/feature/nametags.md | 14 ++--- documentation/feature/nightvision.md | 17 +++--- documentation/feature/noidle.md | 19 ++----- documentation/feature/noradio.md | 15 ++---- documentation/feature/norearm.md | 19 ++----- documentation/feature/optics.md | 19 ++----- documentation/feature/optionsmenu.md | 24 ++++----- documentation/feature/overheating.md | 32 ++++++----- documentation/feature/overpressure.md | 22 +++----- documentation/feature/parachute.md | 23 ++++---- documentation/feature/protection.md | 20 ++----- documentation/feature/ragdolls.md | 15 ++---- documentation/feature/realisticnames.md | 15 ++---- documentation/feature/recoil.md | 19 +++---- documentation/feature/reload.md | 14 +++-- documentation/feature/reloadlaunchers.md | 19 +++---- documentation/feature/respawn.md | 21 ++++---- documentation/feature/safemode.md | 17 +++--- documentation/feature/scopes.md | 22 +++++--- documentation/feature/smallarms.md | 4 +- documentation/feature/switchunits.md | 21 ++++---- documentation/feature/testmissions.md | 17 ++---- documentation/feature/thermals.md | 13 ++--- documentation/feature/vehicles.md | 33 ++++++------ documentation/feature/viewdistance.md | 2 +- documentation/feature/weaponselect.md | 32 +++++------ documentation/feature/weather.md | 3 +- documentation/missionmaker/modules.md | 2 +- 58 files changed, 337 insertions(+), 438 deletions(-) diff --git a/documentation/feature/advanced_ballistics.md b/documentation/feature/advanced_ballistics.md index f50f6fcd8b..70123a0320 100644 --- a/documentation/feature/advanced_ballistics.md +++ b/documentation/feature/advanced_ballistics.md @@ -9,8 +9,8 @@ parent: wiki ## 1. Overview The Advanced Ballistics module improves internal and external ballistics. -## 2. Features -- Drag modeling based on real-world ballistic coefficients. +## 1.1 Features +- Drag modelling based on real-world ballistic coefficients. - Ambient air density (air pressure, temperature, humidity) affects drag. - Wind affects drag and deflects the trajectory. - Wind speed varies with altitude. @@ -22,10 +22,10 @@ The Advanced Ballistics module improves internal and external ballistics. - Bullet trace effect for supersonic bullets (light refraction due to air pressure waves). - A protractor for quickly measuring the inclination angle. -## 3. Usage +## 2. Usage -### 3.1 Protractor +### 2.1 Protractor Press Ctrl+Shift+K while using a compatible weapon to toggle the protractor. The red line indicates the current inclination angle in degrees. The protractor will disappear if you lower or holster your weapon. -## 4. Dependencies +## 3. Dependencies `ace_ballistics`, `ace_weather`, `ace_modules` diff --git a/documentation/feature/ai.md b/documentation/feature/ai.md index a5deb17bdc..ee75c73af0 100644 --- a/documentation/feature/ai.md +++ b/documentation/feature/ai.md @@ -1,6 +1,6 @@ --- layout: wiki -title: AI (Artifical Intelligence) +title: AI (Artificial Intelligence) description: Config based changes to AI to ensure compatibility with advanced AI modifications group: feature order: 5 @@ -10,7 +10,7 @@ parent: wiki ## 1. Overview ### 1.1 Adjusted AI skill values -The idea here is to reduce the AI's godlike aiming capabilties while retaining it's high intelligence. The AI should be smart enough to move through a town, but also be 'human' in their reaction time and aim. +The idea here is to reduce the AI's godlike aiming capabilities while retaining it's high intelligence. The AI should be smart enough to move through a town, but also be 'human' in their reaction time and aim. Note: All these values can still be adjusted via scripts, these arrays just change what 0 & 1 are for setSkill. ### 1.2 Firing in burst mode diff --git a/documentation/feature/aircraft.md b/documentation/feature/aircraft.md index cb0ddb9c5f..be8cb6e966 100644 --- a/documentation/feature/aircraft.md +++ b/documentation/feature/aircraft.md @@ -1,7 +1,7 @@ --- layout: wiki title: Aircraft -description: Changes the flight behaviour of various aircraft +description: Aircraft overhaul group: feature order: 5 parent: wiki @@ -35,7 +35,7 @@ Adds a HUD to the AH-9 based on the Comanche's HUD. ## 2. Usage ### 2.1 Switching flare modes -Press Ctrl+C to switch between flare firing modes +Press CTRL+C to switch between flare firing modes (ARMA3 default keybind `countermeasure mode`) ## 3. Dependencies diff --git a/documentation/feature/attach.md b/documentation/feature/attach.md index 90bb33d585..7fe3ccbd12 100644 --- a/documentation/feature/attach.md +++ b/documentation/feature/attach.md @@ -1,7 +1,7 @@ --- layout: wiki title: Attach -description: Allows players to attach items to objects +description: Allow players to attach items to vehicles or themselves group: feature parent: wiki --- @@ -17,17 +17,17 @@ Adds an attachable IR strobe, which is only visible using night vision devices a ## 2. Usage ### 2.1 Attaching to yourself -- Use Self Interact Ctrl+Left Windows. -- Choose `Equipment`. -- Choose `Attach item`. +- Use Self Interact CTRL+Left Windows (ACE3 default keybind `Self Interaction Key`). +- Select `Equipment`. +- Select `Attach item`. - Select which item you want to attach. -- Repeat to detach. +- Repeat the process to detach. ### 2.2 Attaching to a vehicle -- Interact with the vehicle Left Windows. -- Choose `Attach item`. +- Interact with the vehicle Left Windows (ACE3 default keybind `Interact Key`). +- Select `Attach item`. - Select your item and follow the instructions on the screen. -- Repeat to detach. +- Repeat the process to detach. ## 3. Dependencies diff --git a/documentation/feature/ballistics.md b/documentation/feature/ballistics.md index 3d82da9bc7..c04d8c2e19 100644 --- a/documentation/feature/ballistics.md +++ b/documentation/feature/ballistics.md @@ -12,25 +12,19 @@ parent: wiki ### 1.1 Realistic ballistics Changes include adjusted muzzle velocity, air friction and dispersion based on real life values. -### 1.2 Weaker body armor -Decreases protection values of vests, CSAT uniforms and various campaign only gear to better represent realism. - -### 1.3 Realistic silencers and subsonic ammunition +### 1.2 Realistic silencers and subsonic ammunition Silencers no longer decrease the muzzle velocity and are generally less effective when used with normal ammunition. They now only remove the muzzle blast and flash. To prevent the crack caused by supersonic projectiles, ACE3 introduces subsonic ammunition for the 7.62mm caliber. This is also fully compatible with AI. -### 1.4 Flash suppressors -Flash suppressors are devices that reduce the muzzle flash while firing by cooling or dispersing the burning gases that exit the muzzle. Its intent is to reduce the chances that the shooter will be blinded in low-light shooting conditions as well as reducing the intensity of the flash visible to the enemy. - -### 1.5 Armor piercing ammunition +### 1.3 Armor piercing ammunition Armor piercing rounds have higher penetration values against light armored targets and other obstacles on the battlefield. Their drawback is a slightly decreased man-stopping power. AP rounds are available in multiple calibers incudling 5.56mm and 7.62mm. -### 1.6 IR-Dim tracer ammunition +### 1.4 IR-Dim tracer ammunition IR-Dim ammunition is similar to tracer rounds, but these tracers are only visible using night vision devices. -### 1.7 M118 long range ammunition +### 1.5 M118 long range ammunition The M14 EBR now uses ammunition with decreased muzzle velocity and air friction to improve precision and energy retention at long ranges. -### 1.8 Fully config-based +### 1.6 Fully config-based This module applies configuration changes only and does not decrease game performance. ## 2. Dependencies diff --git a/documentation/feature/captives.md b/documentation/feature/captives.md index 14395e62a1..8a8773e252 100644 --- a/documentation/feature/captives.md +++ b/documentation/feature/captives.md @@ -24,14 +24,14 @@ You can surrender. While surrendering AI will cease fire. ### 2.1 Taking a unit into captivity - You need `Cable Tie`. -- Approach the unit and Interact Left Windows. +- Approach the unit and Interact Left Windows (ACE3 default keybind `Interact Key`). - The interaction is located around the hands in the form of a handcuffs icon. - Repeat to release. ### 2.2 Escorting a captive - Interact with the captive Left Windows. - Select the `Escort prisoner` option. -- To stop escorting, use the mousewheel and select `Release` or use Self Interaction Ctrl+Left windows and select `Release`. +- To stop escorting, use the mousewheel and select `Release` or use Self Interaction CTRL+Left windows and select `Release`. ### 2.3 Loading and unloading a captive into/from a vehicle - Escort the captive. diff --git a/documentation/feature/common.md b/documentation/feature/common.md index d15cad3573..b9296ad0a0 100644 --- a/documentation/feature/common.md +++ b/documentation/feature/common.md @@ -13,3 +13,5 @@ Common functions and systems used by most other components. ## 2. Dependencies `ace_main` + +Note: The Common module is required by nearly all other modules. Avoid disabling it! diff --git a/documentation/feature/disarming.md b/documentation/feature/disarming.md index 7feef4575a..fd781b4e53 100644 --- a/documentation/feature/disarming.md +++ b/documentation/feature/disarming.md @@ -14,7 +14,7 @@ You can search the inventory and disarm captured or unconscious units. ## 2. Usage ### 2.1 Searching and disarming -- Interact with the captured or unconscious unit Ctrl+Left Windows. +- Interact with the captured or unconscious unit Left Windows (ACE3 default keybind `Interaction Key`). - Select `Open inventory`. - Drag & Drop the items you wish to remove from the unit. diff --git a/documentation/feature/dragging.md b/documentation/feature/dragging.md index 56928ff4a8..7a7e53e5a6 100644 --- a/documentation/feature/dragging.md +++ b/documentation/feature/dragging.md @@ -14,9 +14,9 @@ This adds the option to drag or carry units or objects. ### 2.1 Dragging / Carrying units and objects - You can only drag or carry an unconscious unit. -- Interact with the unit or object Left Windows -- Choose `Drag` or `Carry` -- To release, use the mousewheel and select `Release` or use Self Interaction Ctrl+Left windows and select `Release`. +- Interact with the unit or object Left Windows (ACE3 default keybind `Interact Key`). +- Select `Drag` or `Carry`. +- To release, use the mousewheel and select `Release` or use Self Interaction CTRL+Left windows and select `Release`. ## 3. Dependencies diff --git a/documentation/feature/explosives.md b/documentation/feature/explosives.md index 1fd02f9af1..02f7f6f7f3 100644 --- a/documentation/feature/explosives.md +++ b/documentation/feature/explosives.md @@ -20,19 +20,19 @@ Enables attaching explosives to vehicles. ## 2. Usage ### 2.1 Placing explosives -- Use self interaction Ctrl+Left Windows -- Select `Explosives` -- Choose your explosive type and follow the instructions on the screen +- Use self interaction CTRL+Left Windows (ACE3 default keybind `Self Interaction Key`). +- Select `Explosives`. +- Choose your explosive type and follow the instructions on the screen. ### 2.2 Arming and detonating explosives -- Interact with the explosive Left Windows -- Choose the arming method -- For clackers use Self Interaction `Explosives` -> `Detonate` and choose the corresponding Firing Device +- Interact with the explosive Left Windows (ACE3 default keybind `Interact Key`). +- Choose the arming method. +- For clackers use Self Interaction `Explosives` -> `Detonate` and choose the corresponding Firing Device. ### 2.3 Defusing explosives -- A `Defusal Kit` is required -- Interact with the explosive Left Windows -- Choose `Disarm` +- A `Defusal Kit` is required. +- Interact with the explosive Left Windows. +- Select `Disarm`. - You are safe to pick it up after the action is complete. ## 3. Dependencies diff --git a/documentation/feature/fcs.md b/documentation/feature/fcs.md index 6ac4353599..f2f03db7a0 100644 --- a/documentation/feature/fcs.md +++ b/documentation/feature/fcs.md @@ -17,20 +17,19 @@ Changes the default rangefinders, including those in vehicles, to require manual ### 1.3 Air burst ammunition Anti air cannons can now use airburst ammunition. It will explode on the FCS' zeroed in range. - ## 2. Usage ### 2.1 Engaging moving targets - - Place the crosshair on the enemy vehicle. -- Press and hold tab (by default) and follow the target for about 2 seconds. -- Release tab +- Press and hold TAB (ACE 3 default keybind `Lock Target [Hold]`) and follow the target for about 2 seconds. +- Release TAB. - The optic is now adjusted sideways to ensue a hit. ### 2.2 Ranging stationary targets - - Place the crosshair on the object to range. -- Tap tab (by default) the optic is now adjusted. +- Tap TAB the optic is now adjusted. + +NOTE: GBU guidance is **DISABLED** as of ACE3 3.0.1 ## 3. Dependencies diff --git a/documentation/feature/flashsuppressors.md b/documentation/feature/flashsuppressors.md index eebf908369..74a0899eb9 100644 --- a/documentation/feature/flashsuppressors.md +++ b/documentation/feature/flashsuppressors.md @@ -8,7 +8,9 @@ parent: wiki ## 1. Overview -Adds flash suppressors, they reduce the muzzle flash of your weapon. +This add the ability to use the flash suppressors that are already in game but not accessible. + +Flash suppressors are devices that reduce the muzzle flash while firing by cooling or dispersing the burning gases that exit the muzzle. Its intent is to reduce the chances that the shooter will be blinded in low-light shooting conditions as well as reducing the intensity of the flash visible to the enemy. ## 2. Dependencies diff --git a/documentation/feature/goggles.md b/documentation/feature/goggles.md index 17e9670d1b..9e0916bbe4 100644 --- a/documentation/feature/goggles.md +++ b/documentation/feature/goggles.md @@ -17,7 +17,7 @@ nearby (e.g. explosions, rotor wash, bullet impacts, muzzle blast). ## 2. Usage ### 2.1 Cleaning your goggles --To clean your goggles press shift+alt+T(default keybind) +- To clean your goggles press SHIFT + ALT + T(ACE3 deault keybind `Wipe goggles`) ## 3. Dependencies diff --git a/documentation/feature/grenades.md b/documentation/feature/grenades.md index 4cfe023e1f..d017b60b02 100644 --- a/documentation/feature/grenades.md +++ b/documentation/feature/grenades.md @@ -17,16 +17,14 @@ Adds throwable hand flares in the colors white, red, green and yellow. Additiona ### 1.3 M84 stun grenade Adds stun grenade. This will also affect AI. - ## 2. Usage ### 2.1 Switching between throw modes -- Press 8 (by default) +- Press 8 (ACE3 default keybind `Switch Grenade Mode`) ### 2.2 Switching between grenades -- Press 6 (by default) to switch between `LETHAL` grenades -- Press 7 (by default) to switch between `NON LETHAL` grenades - +- Press 6 (ACE3 default keybind `Select frag`) to switch between `LETHAL` grenades +- Press 7 (ACE3 default keybind `Select non-frag`) to switch between `NON LETHAL` grenades ## 3. Dependencies diff --git a/documentation/feature/hearing.md b/documentation/feature/hearing.md index 01b8100bb1..eb81ede1ea 100644 --- a/documentation/feature/hearing.md +++ b/documentation/feature/hearing.md @@ -15,12 +15,11 @@ Introduces hearing damage caused by nearby explosions and large-caliber weapons. Adds ear plugs to mitigate that effect. Soldiers with high caliber weapons or missile launchers will be equipped with those, but remember to put them in. - ## 2. Usage ### 2.1 Equipping earplugs - For this you obviously need `Ear plugs`. -- Press the self interaction key ctrl+left windows (by default). +- Press the self interaction key CTRL + left windows (ACE3 default keybind `Self Interaction Key`). - Select `equipment`. - Select `Earplugs in`. - Same method to remove them but the option is `Earplugs out`. diff --git a/documentation/feature/hitreactions.md b/documentation/feature/hitreactions.md index fae394fa73..919c09e9f6 100644 --- a/documentation/feature/hitreactions.md +++ b/documentation/feature/hitreactions.md @@ -10,7 +10,7 @@ parent: wiki ### 1.1 Falling under fire If a unit is shot while running it falls to the ground in a prone position, the area where the shot lands does not matters. -Note that the shot needs to inflict a certain amout of damage to make the unit fall, a small cut won't make the unit stumble. +Note that the shot needs to inflict a certain amount of damage to make the unit fall, a small cut won't make the unit stumble. ## 2. Dependencies diff --git a/documentation/feature/inventory.md b/documentation/feature/inventory.md index 20aa5204a2..37d3e4cc50 100644 --- a/documentation/feature/inventory.md +++ b/documentation/feature/inventory.md @@ -1,7 +1,7 @@ --- layout: wiki title: Inventory -description: +description: group: feature parent: wiki --- @@ -11,17 +11,15 @@ parent: wiki ### 1.1 Resized inventory UI Makes the inventory dialog bigger and increases the number of items that can be seen in the list at once. - ## 2. Usage ### 2.1 Changing the size of the UI -- Press escape . +- Press escape. - Click on `ACE OPTIONS` on the top left corner of the screen. - Click on `Make Inventory Display Bigger`. - Choose the size desired on the right drop down menu. - Press the `Close` button, your changes are automatically saved. - ## 3. Dependencies `ace_common` diff --git a/documentation/feature/javelin.md b/documentation/feature/javelin.md index be31f65e91..0c8e3e47af 100644 --- a/documentation/feature/javelin.md +++ b/documentation/feature/javelin.md @@ -14,22 +14,20 @@ The locking capabilities of the Titan and Javelin got improved, you can now lock ### 1.2 Fire mode switching The Titan / Javelin now posses the ability to be used in top down attack or direct. - ## 2. Usage ### 2.1 Locking with the Titan / Javelin - For this feature you need to have a compatible launcher. - Fully zoom with the launcher. -- Switch to thermals n (by default). -- While keeping your aim steadily on target press and hold tab . +- Switch to thermals N (ARMA3 default keybind `Night vision`). +- While keeping your aim steadily on target press and hold TAB (ACE3 default keybind `Lock Target [Hold]`). - When the sound changes and a cross appears on the screen it's time to fire. ### 2.2 Switching fire mode - For this feature you need to have a compatible launcher. -- When aiming with your launcher press ctrl+tab (by default). +- When aiming with your launcher press CTRL + TAB. - On the right side of the screen (for most launchers) you should see that `TOP`is now in green that means that your missile will be fired in top down mode. - ## 3. Dependencies `ace_main`, `ace_common`, `ace_missileguidance` diff --git a/documentation/feature/laserpointer.md b/documentation/feature/laserpointer.md index ee6d566733..a1031e7cd8 100644 --- a/documentation/feature/laserpointer.md +++ b/documentation/feature/laserpointer.md @@ -1,7 +1,7 @@ --- layout: wiki title: Laser Pointer -description: +description: Switching laser modes, daylight lasers group: feature parent: wiki --- @@ -15,7 +15,7 @@ ACE3 adds visible light laser. This feature is compatible with BI's lasers as we ### 2.1 Switching laser mode - For this feature you need to have a compatible side attachment. -- Press ctrl+L (by default). +- Press ctrl + L (ACE3 default keybind `Switch Laser / IR Laser`). - A hint indicating the mode switch will appear in the top right corner. ## 3. Dependencies diff --git a/documentation/feature/logistics_uavbattery.md b/documentation/feature/logistics_uavbattery.md index a63a13cf4e..0c3d9e9973 100644 --- a/documentation/feature/logistics_uavbattery.md +++ b/documentation/feature/logistics_uavbattery.md @@ -1,7 +1,7 @@ --- layout: wiki title: Logistics - UAV Battery -description: +description: UAV recharging group: feature parent: wiki --- @@ -9,13 +9,14 @@ parent: wiki ## 1. Overview ### 1.1 Rechargeable darters. -Adds an item `ACE_UAVBattery` that allows refuelling/recharging of the "Darter" quadcopter UAVs. +Adds an item `ACE_UAVBattery` that allows refuelling/recharging of the "Darter" quad-copter UAVs. ## 2. Usage ### 2.1 Recharging the darter -- For this you need a `UAV battery` and the UAV needs to be a quadcopter. -- INTERACTION LAYER NOT IMPLEMENTED YET TO BE COMPLETED. +- For this you need a `UAV battery` and the UAV needs to be a quad-copter. +- Interact with the UAV left windows (ACE3 default keybind `Interact Key`) +- Select `recharge` ## 3. Dependencies diff --git a/documentation/feature/logistics_wirecutter.md b/documentation/feature/logistics_wirecutter.md index db93c85836..2ea7b4683c 100644 --- a/documentation/feature/logistics_wirecutter.md +++ b/documentation/feature/logistics_wirecutter.md @@ -16,7 +16,7 @@ Adds an item `ACE_wirecutter` that allows cutting of fences in A3 and AiA maps. ### 2.1 Using the wirecutter - For this you need a `Wirecutter`. - Approach the fence you want to cut. -- Press the interaction key left windows (by default). +- Press the interaction key left windows (ACE3 default keybind `Interaction Key`). - Find the interaction point and select `cut fence` (the only option). ## 3. Dependencies diff --git a/documentation/feature/magazinerepack.md b/documentation/feature/magazinerepack.md index cc78dd1a00..d55081737a 100644 --- a/documentation/feature/magazinerepack.md +++ b/documentation/feature/magazinerepack.md @@ -1,7 +1,7 @@ --- layout: wiki title: Magazine Repack -description: +description: Repacking magazines, and maybe your bananas. group: feature parent: wiki --- @@ -16,7 +16,7 @@ Adds the ability to repack magazines of the same type. ### 2.1 Repacking - For this you need multiple half empty mags of the same type. -- Press the self interaction button ctrl+left windows (by default). +- Press the self interaction button CTRL + left windows (ACE3 default keybind `Self Interaction Key`). - Select `Repack magazines`. - Select the type of magazines you want to repack. diff --git a/documentation/feature/main.md b/documentation/feature/main.md index 3bfecf852a..3fcda268cf 100644 --- a/documentation/feature/main.md +++ b/documentation/feature/main.md @@ -1,7 +1,7 @@ --- layout: wiki title: Main -description: +description: main module group: feature parent: wiki --- @@ -10,7 +10,6 @@ parent: wiki Main module which acts as the ACE core module. - ## 2. Dependencies `Arma 3` and `CBA (RC6 minimum)` diff --git a/documentation/feature/map.md b/documentation/feature/map.md index b9dbb53c3b..e1de3c9038 100644 --- a/documentation/feature/map.md +++ b/documentation/feature/map.md @@ -1,7 +1,7 @@ --- layout: wiki title: Map -description: +description: Map improvements group: feature parent: wiki --- @@ -18,7 +18,7 @@ The mission maker / server owner can restrict the maximum zoom level of the map. While walking your map will move all around the place. ### 1.4 Map illumination (optional) -The map illumination will be the same as your surroundings meaning that in a dark night you'll either need a lightsource or NVGs to see your map. +The map illumination will be the same as your surroundings meaning that in a dark night you'll either need a light source or NVGs to see your map. ### 1.5 Blufor tracker (optional) With blufor tracker you'll never loose your leader anymore, it marks the position of your faction group leader on the map. diff --git a/documentation/feature/maptools.md b/documentation/feature/maptools.md index 81b3507db2..10d94caadd 100644 --- a/documentation/feature/maptools.md +++ b/documentation/feature/maptools.md @@ -1,7 +1,7 @@ --- layout: wiki title: Map Tools -description: +description: Map tools, a roamer and pens group: feature parent: wiki --- @@ -21,17 +21,17 @@ If you are equipped with a vanilla GPS it will be shown on the map. (You don't n ### 2.1 Using map tools - For this you need to have `Map Tools`. -- Open the map M (by default). -- Press the self interaction key ctrl+left windows (by default). +- Open the map M (ARMA3 default keybind `Map`). +- Press the self interaction key CTRL + left windows (ACE3 default keybind `Self Interaction Key`). - Select `Map tools`. - Select the type of tools you want to use. -- Note that you can drag the Roamer (map tool) around with LMB and rotate it with ctrl+LMB . +- Note that you can drag the Roamer (map tool) around with LMB and rotate it with CTRL + LMB. ### 2.2 Drawing lines - To draw lines `Map Tools` are not required. -- Press alt+left click (by default) to start the line, left click again to end it. -- To delete a line simply press delete around the center of the line. - +- Press ALT + LMB to start the line, left click again to end it. +- To delete a line simply press delete around the center of the line. +- Note that you can change the color of the lines by clicking on one of the coloured column on top of the screen (While the map is opened) ## 3. Dependencies diff --git a/documentation/feature/markers.md b/documentation/feature/markers.md index c9e27b6a6d..84f133760c 100644 --- a/documentation/feature/markers.md +++ b/documentation/feature/markers.md @@ -1,7 +1,7 @@ --- layout: wiki title: Markers -description: +description: improved markers group: feature parent: wiki --- diff --git a/documentation/feature/missileguidance.md b/documentation/feature/missileguidance.md index 939381a426..9ce7a60932 100644 --- a/documentation/feature/missileguidance.md +++ b/documentation/feature/missileguidance.md @@ -6,21 +6,10 @@ group: feature parent: wiki --- -## Overview +## 1. Overview -### Sub-feature 1 -Short description of sub-feature 1. +Adds the AMG framework, for more information about it refer to the [AMG framework documentation] (http://ace3mod.com/wiki/framework/advanced-missile-guidance.html) -### Sub-feature 2 -Short description of sub-feature 2. - - -## Usage - -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 2. Dependencies `ace_laser` diff --git a/documentation/feature/missionmodules.md b/documentation/feature/missionmodules.md index 5ef66a7b31..c434016fc2 100644 --- a/documentation/feature/missionmodules.md +++ b/documentation/feature/missionmodules.md @@ -1,26 +1,19 @@ --- layout: wiki title: Mission Modules -description: +description: modules that can be used by mission makers. group: feature parent: wiki --- -## Overview +## 1. Overview -### Sub-feature 1 -Short description of sub-feature 1. +Add modules that can be used by mission makers. -### Sub-feature 2 -Short description of sub-feature 2. +### 1.1 Ambient sounds +That module can be used to add ambient sounds around players, it let you choose the sounds and some parameters (distance, volume interval). -## Usage - -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 2. Dependencies `ace_common` diff --git a/documentation/feature/mk6mortar.md b/documentation/feature/mk6mortar.md index 8995b8a761..5c9f99c8d5 100644 --- a/documentation/feature/mk6mortar.md +++ b/documentation/feature/mk6mortar.md @@ -9,45 +9,56 @@ parent: wiki ## 1. Overview ### 1.1 mk6 mortar overhaul - ACE3 adds wind deflection for shells as well as a rangetable to accurately take out your target without the artillery computer. ## 2. Usage ### 2.1 Switching charge -- Press F (fire mode switch) to switch between charges +- Press F (ARMA3 default keybind `fire mode switch`) to switch between charges ### 2.2 Working with the rangetable - To open the table: - - Self interact ctrl + left windows (by default). + - Self interact CTRL + left windows - Select `equipment`. - Select `Open 82mm Rangetable`. + - Using the table: - Get the distance and elevation difference between you and the target for this you can use map tools. For this example we'll say we're 2 000m away and 50m below (we're at 20m they are at 70m, 70-20=50). - - Select the charge you want to use (0 = close / 1 = medium / 2 = far). For this case we're using charge 2. - - Check the range column on the table, we're at 2 000 then look at the corresponding entry in the column on the right (ELEV = elevation) For this example it's 1339. - - After that's done move by one column on the right that's the elevation for 100m heigh so in our case we're subtracting 2 (4:2 = 2) if our target was 300m above us we would have to subtract 12 from our elevation (3x4 = 12). - - After you finished your maths, it's time to aim, get the cross of the mortar on target, if you don't see it use a waypoint if possible. In our case ELEV is 1339-2 = 1337. - - On the right side of the screen, while looking through the mk6 scope you should see ELV, we need to match this number with the one we found. - - To adjust the ELV use pageUp and pageDown . + + - Select the charge you want to use (0 = close / 1 = medium / 2 = far). For this case we're using charge 2. + + - Check the range column on the table, we're at 2 000 then look at the corresponding entry in the column on the right (ELEV = elevation) For this example it's 1339. + + - After that's done move by one column on the right that's the elevation for 100m heigh so in our case we're subtracting 2 (4:2 = 2) if our target was 300m above us we would have to subtract 12 from our elevation (3x4 = 12). + + - Once you finished your maths, it's time to aim, get the cross of the mortar on target, if you don't see it use a waypoint if possible. In our case ELEV is 1339-2 = 1337. + + - On the right side of the screen, while looking through the mk6 scope you should see ELV, we need to match this number with the one we found. + - To adjust the ELV use pageUP and pageDOWN. - Once the number you found and ELV are the same FIRE ! - On top of that you can calculate the time the shell will take to land by using the third row from the left, in our case the shell need to travel 2000m that's 20xthe number indicated. so 20x0,5 = 10s. ### 2.3 Working with the rangetable (Crosswinds enabled) - Same as above there's just an extra step, I'll provide an other example in case you forgot. - - Get the distance and elevation difference between you and the target for this you can use map tools. For this example we'll say we're 2 400m away and 223m below (we're at 2m they are at 225, 225-2=223) - - Select the charge you want to use (0 = close / 1 = medium / 2 = far). For this case we're using charge 2. - - Check the range column on the table, we're 2 400m a then look at the corresponding entry in the column on the right (ELEV = elevation) For this example it's 1145. - - After that's done move by one column on the right that's the elevation for 100m heigh so in our case we're subtracting 22 (2,2 x 10 (2,2 because we're around 220m below)). + + - Get the distance and elevation difference between you and the target for this you can use map tools. For this example we'll say we're 2 400m away and 223m below (we're at 2m they are at 225, 225-2=223) + - Select the charge you want to use (0 = close / 1 = medium / 2 = far). For this case we're using charge 2. + + - Check the range column on the table, we're 2 400m a then look at the corresponding entry in the column on the right (ELEV = elevation) For this example it's 1145. + - After that's done move by one column on the right that's the elevation for 100m heigh so in our case we're subtracting 22 (2,2 x 10 (2,2 because we're around 220m below)). - Extra step needed here, a kestrel 4500 IS NEEDED. - - Pick the crosswind on your kestrel (for this refer to the kestrel documentation). - - For this example the crosswind is of 2 MPS on my table I can see under Azimuth correction that for each 1MPS I need to correct by 2.5 mill. - - So in this case i'm subtracting 5 mill from the ELV. - - It's MATH TIME the ELV given by the table is 1 145, we subtract 22 because of the heigh, we also subtract 5 for the crosswind ( 1 145-22-5 = 1 118 ). - - After you finished your maths, it's time to aim, get the cross of the mortar on target, if you don't see it use a waypoint if possible. In our case ELEV is 1 118. - - On the right side of the screen, while looking through the mk6 scope you should see ELV, we need to match this number with the one we found. - - FIREEEE !!!! - - Little advantage of having crosswind enabled is that you don't have to calculate the flight time, it's marked on the table in this case it's 33,8s. + - Pick the crosswind on your kestrel (for this refer to the kestrel documentation). + + - For this example the crosswind is of 2 MPS on my table I can see under Azimuth correction that for each 1MPS I need to correct by 2.5 mill. + - So in this case i'm subtracting 5 mill from the ELV. + + - It's MATH TIME the ELV given by the table is 1 145, we subtract 22 because of the heigh, we also subtract 5 for the crosswind ( 1 145-22-5 = 1 118 ). + - After you finished your maths, it's time to aim, get the cross of the mortar on target, if you don't see it use a waypoint if possible. In our case ELEV is 1 118. + + - On the right side of the screen, while looking through the mk6 scope you should see ELV, we need to match this number with the one we found. + + - FIREEEE !!!! + - Little advantage of having crosswind enabled is that you don't have to calculate the flight time, it's marked on the table in this case it's 33,8s. ## 3. Dependencies diff --git a/documentation/feature/movement.md b/documentation/feature/movement.md index a9a55b4f1b..ecdd470365 100644 --- a/documentation/feature/movement.md +++ b/documentation/feature/movement.md @@ -1,34 +1,39 @@ --- layout: wiki title: Movement -description: +description: Movement improvements group: feature parent: wiki --- -## Overview +## 1. Overview -### Jumping +### 1.1 Jumping Adds the ability to jump when pressing the vault key while moving. (V - key) -### Minor animation tweaks +### 1.2 Minor animation tweaks Walking slowly with the weapon lowered now has a less silly looking animation. -### Fatigue adjustments +### 1.3 Fatigue adjustments Soldiers get fatigued slower, but regain their stamina slower aswell. Fatigued soldiers have a faster walking speed and no longer turn into snails. -### Weight display +### 1.4 Weight display Adds a weight of the current loadout display in the inventory to estimate the fatigue gain while moving in combat. Can be adjusted to display lb. instead of kg in the ACE Options Menu. -### Optics view in all stances +### 1.5 Optics view in all stances The player can now use the sights of rifles and pistols in all prone stances. -## Usage +## 2. Usage -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. +### 2.1 Jumping +- For this you need your weapon up +- While jogging or running press V +### 2.2 Climbing +- Approach what you want to climb. +- Press ctrl + V (ACE3 default keybind `Climb`). +- Note that when climbing your character will put his weapon on his back. ## Dependencies diff --git a/documentation/feature/nametags.md b/documentation/feature/nametags.md index 840c8b6a12..7d4f554f34 100644 --- a/documentation/feature/nametags.md +++ b/documentation/feature/nametags.md @@ -6,18 +6,14 @@ group: feature parent: wiki --- -## Overview +## 1. Overview -### Nametag and rank display +### 1.1 Nametag and rank display Adds nametags and soldier ranks to friendly players in multiplayer. This can be adjusted in the ACE Options Menu to not display the rank, display all nametags of nearby soldiers instead of those who are looked directly at, to require a button press to show the nametags or to disable them altogether. +### 1.2 TFAR and ACRE soundwaves +A soundwave effect is shown when someone is speaking letting you know who's eating his banana with his push-to-talk button pushed. -## Usage - -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 2. Dependencies `ace_interaction` diff --git a/documentation/feature/nightvision.md b/documentation/feature/nightvision.md index 91a26cbe12..f905dbb818 100644 --- a/documentation/feature/nightvision.md +++ b/documentation/feature/nightvision.md @@ -6,27 +6,26 @@ group: feature parent: wiki --- -## Overview +## 1. Overview -### Multiple Generation NVGs +### 1.1 Multiple Generation NVGs Adds different night vision devices with varying image quality and field of view. New Classnames for Generations 1, 2, and 4 NVGs (default ArmA3 NVGs represents Generation 3) and a wide view NVG. -### Blending effects +### 1.2 Blending effects Adds a blending effect depending on ammunition type when firing while using a night vision device. Especially tracer rounds are bright, but you can use the IR-dim tracers from the Ballistics module to reduce tis effect. -### Brightness adjustment +### 1.3 Brightness adjustment Enables the user to manually adjust NVG brightness. +## 2. Usage +### 2.1 Adjusting brightness +- Use ALT + PageUP and ALT + PageDOWN to adjust NVG brightness (ACE3 default keybind `Increase/Decrease NVG Brightness`). -## Usage -Use Alt+PageUp and Alt+PageDown to adjust NVG brightness. - - -## Dependencies +## 3. Dependencies `ace_common` diff --git a/documentation/feature/noidle.md b/documentation/feature/noidle.md index 11f35c87f0..c44cf406f1 100644 --- a/documentation/feature/noidle.md +++ b/documentation/feature/noidle.md @@ -1,26 +1,17 @@ --- layout: wiki title: No Idle -description: +description: Disable idle animations group: feature parent: wiki --- -## Overview +## 1. Overview -### Sub-feature 1 -Short description of sub-feature 1. +### 1.1 Idle animations removed -### Sub-feature 2 -Short description of sub-feature 2. +This removes idle animations, you're not going to be wiping your forhead with your rifle every 20 seconds anymore. - -## Usage - -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 2. Dependencies `ace_common` diff --git a/documentation/feature/noradio.md b/documentation/feature/noradio.md index 562c8ab7be..e7452ed840 100644 --- a/documentation/feature/noradio.md +++ b/documentation/feature/noradio.md @@ -1,24 +1,17 @@ --- layout: wiki title: No Radio -description: +description: Disable callouts group: feature parent: wiki --- -## Overview +## 1. Overview -### Silent avatar +### 1.1 Silent avatar Mutes the player's automatic callouts ("Enemy man, 100 meters, front!"). Does not mute AI callouts. - -## Usage - -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 2. Dependencies `ace_common` diff --git a/documentation/feature/norearm.md b/documentation/feature/norearm.md index e57e052c01..73ed1c35cc 100644 --- a/documentation/feature/norearm.md +++ b/documentation/feature/norearm.md @@ -1,26 +1,15 @@ --- layout: wiki title: No Rearm -description: +description: Remove rearm from group: feature parent: wiki --- -## Overview +## 1. Overview -### Sub-feature 1 -Short description of sub-feature 1. +Hides the rearm action for players (on cars / boxes / corpses / ground) -### Sub-feature 2 -Short description of sub-feature 2. - - -## Usage - -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 2. Dependencies `ace_common` diff --git a/documentation/feature/optics.md b/documentation/feature/optics.md index ed945c6f51..9bfba4993f 100644 --- a/documentation/feature/optics.md +++ b/documentation/feature/optics.md @@ -1,26 +1,15 @@ --- layout: wiki title: Optics -description: +description: 2D and PIP optics group: feature parent: wiki --- -## Overview +## 1. Overview -### Sub-feature 1 -Short description of sub-feature 1. +Adds animated 2D and PIP variants of some optics (RCO/MRCO/ARCO/LRPS/MOS) -### Sub-feature 2 -Short description of sub-feature 2. - - -## Usage - -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 2. Dependencies `ace_common` diff --git a/documentation/feature/optionsmenu.md b/documentation/feature/optionsmenu.md index be53472353..482f8a0506 100644 --- a/documentation/feature/optionsmenu.md +++ b/documentation/feature/optionsmenu.md @@ -1,27 +1,27 @@ --- layout: wiki title: Options Menu -description: +description: ACE3 options menu group: feature parent: wiki --- -## Overview +## 1. Overview -### Sub-feature 1 -Short description of sub-feature 1. +Adds the options menu used by other components. -### Sub-feature 2 -Short description of sub-feature 2. +## 2. Usage +### 2.1 Opening the user menu +- Press escape +- In the top left corner of the screen you should see `ace options`. +- Click it. -## Usage +### 2.2 Options menu informations +- You don't have to press a save button. When a setting is changed it's saved automatically. +- There's actually a tab for colors, look up ! -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 3. Dependencies `ace_common` diff --git a/documentation/feature/overheating.md b/documentation/feature/overheating.md index b6538e49b4..54ad1147f9 100644 --- a/documentation/feature/overheating.md +++ b/documentation/feature/overheating.md @@ -1,37 +1,45 @@ --- layout: wiki title: Overheating -description: -description: +description: Weapon temperature and jamming, barrel swapping. group: feature parent: wiki --- -## Overview +## 1. Overview -### Weapon Jamming -Adds a propability to jam a weapon when firing. Jams can be cleared by +### 1.1 Weapon Jamming +Adds a probability to jam a weapon when firing. Jams can be cleared by reloading or by using the clear jam-key. -### Temperature simulation +### 1.2 Temperature simulation Introduces weapon temperature simulation depending on weapon and bullet mass. Hot weapons are more prone to jamming. Depending on weapon type the accuracy and in extreme cases the muzzle velocity might be reduced -on high temperatues. Adds smoke puff and heat refraction effects to +on high temperatures. Adds smoke puff and heat refraction effects to indicate this. -### Spare barrels +### 1.3 Spare barrels Adds the ability to changes barrels on machine guns to compensate for those effects. -## Usage -To clear a jammed weapon, press Shift+R. +## 2. Usage +### 2.1 Clearing a jammed weapon +- To clear a jammed weapon, press SHIFT + R (ACE3 default keybind `Clear jam`). -*needs documentation on swapping barrels* +### 2.2 Swapping barrels +- For this you need a `Spare barrel` and a compatible weapon. +- Press self interaction CTRL + left windows (ACE3 default keybind `Self Interaction Key`). +- Select `equipment`. +- Select `Swap barrel`. +### 2.3 Checking your barrel temperature +- Press self interaction CTRL + left windows. +- Select `equipment`. +- Select `Check weapon temperature`. -## Dependencies +## 3. Dependencies `ace_interaction` diff --git a/documentation/feature/overpressure.md b/documentation/feature/overpressure.md index f9646722ac..85ed13e8ca 100644 --- a/documentation/feature/overpressure.md +++ b/documentation/feature/overpressure.md @@ -1,26 +1,16 @@ --- layout: wiki title: Overpressure -description: +description: backblast and overpressure group: feature parent: wiki --- -## Overview +## 1. Overview -### Sub-feature 1 -Short description of sub-feature 1. +### 1.1 Overpressure +Adds backblast to AT launchers and overpressure zones to tank cannons, don't stay behind a firing RPG or it'll hurt. -### Sub-feature 2 -Short description of sub-feature 2. +## 2. Dependencies - -## Usage - -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies - -List of modules that must be present for this module to work. +`ace_common` diff --git a/documentation/feature/parachute.md b/documentation/feature/parachute.md index fa37e52656..e3491ff260 100644 --- a/documentation/feature/parachute.md +++ b/documentation/feature/parachute.md @@ -1,31 +1,30 @@ --- layout: wiki title: Parachute -description: +description: Add an altimeter and a non-steerable parachute group: feature parent: wiki --- -## Overview +## 1. Overview -### Altimeter +### 1.1 Altimeter Removes the altitude and descend speed UI elements when free-falling and parachuting on higher difficulties and instead adds an altimeter watch type item. -### Non-steerable parachute +### 1.2 Non-steerable parachute Adds a non-steerable parachute variant for jet pilots. -### Landing animation -Smoothens parachute landing animation. +### 1.3 Landing animation +Smoother the parachute landing animation. +## 2. Usage -## Usage +### 2.1 bringing up the altimeter +- For this you need to have an `altimeter watch` in the watch slot. +- Press O (ARMA3 default keybind `Watch`) to bring up the altimeter. -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 3. Dependencies `ace_common` diff --git a/documentation/feature/protection.md b/documentation/feature/protection.md index 4a35d1e0ba..e5da3b2861 100644 --- a/documentation/feature/protection.md +++ b/documentation/feature/protection.md @@ -1,26 +1,16 @@ --- layout: wiki title: Protection -description: +description: Tweaks armor values group: feature parent: wiki --- -## Overview +## 1. Overview -### Sub-feature 1 -Short description of sub-feature 1. +### 1.1 Tweaked protection values +Fixes and tweaks the protection values of body armour, Helmets and uniforms. -### Sub-feature 2 -Short description of sub-feature 2. - - -## Usage - -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 2. Dependencies `ace_common` diff --git a/documentation/feature/ragdolls.md b/documentation/feature/ragdolls.md index 3a29c73eb6..235e8e97be 100644 --- a/documentation/feature/ragdolls.md +++ b/documentation/feature/ragdolls.md @@ -1,23 +1,16 @@ --- layout: wiki title: Ragdolls -description: +description: group: feature parent: wiki --- -## Overview +## 1. Overview -### Adjusted Ragdolls +### 1.1 Adjusted Ragdolls Changes the ragdolls to react more to the force of shots and explosions. - -## Usage - -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 2. Dependencies `ace_common` diff --git a/documentation/feature/realisticnames.md b/documentation/feature/realisticnames.md index a60190025a..0517bcf091 100644 --- a/documentation/feature/realisticnames.md +++ b/documentation/feature/realisticnames.md @@ -1,24 +1,17 @@ --- layout: wiki title: Realistic Names -description: +description: More realistic weapon names group: feature parent: wiki --- -## Overview +## 1. Overview -### Real names +### 1.1 Real names Changes the names of vehicles, magazines, weapons, grenades, explosive charges and mines to their respective real-world counterparts whenever possible. - -## Usage - -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 2. Dependencies `ace_common` diff --git a/documentation/feature/recoil.md b/documentation/feature/recoil.md index 6393a1cd78..b684a1c8ce 100644 --- a/documentation/feature/recoil.md +++ b/documentation/feature/recoil.md @@ -1,29 +1,22 @@ --- layout: wiki title: Recoil -description: +description: Recoil overhaul group: feature parent: wiki --- -## Overview +## 1. Overview -### Recoil adjustment +### 1.1 Recoil adjustment Overhauls the recoil system reducing upwards recoil. -### Advanced cam shake +### 1.2 Advanced cam shake Introducing camshake when firing on foot or as vehicle gunner depending on stance and weapon type. -### Burst dispersion +### 1.3 Burst dispersion Firing in longer burst (> 3 rounds per burst) slightly reduces the accuracy. Firing machine guns in bursts is now useful. - -## Usage - -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 2. Dependencies `ace_common` diff --git a/documentation/feature/reload.md b/documentation/feature/reload.md index 4b4b4dc19a..5cdc19d955 100644 --- a/documentation/feature/reload.md +++ b/documentation/feature/reload.md @@ -6,18 +6,16 @@ group: feature parent: wiki --- -## Overview +## 1. Overview -### Ammo count +### 1.1 Ammo count Hides the actual round count of magazines and removes the icon when the current magazine is emptied. The player can instead check the magazine weight, but that gives only estimated values for magazines with more than 10 rounds. +## 2. Usage -## Usage +### 2.1 Checking your ammo +- Press CTRL + R (ACE3 default keybind `Check Ammo`). -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 3. Dependencies `ace_interaction` diff --git a/documentation/feature/reloadlaunchers.md b/documentation/feature/reloadlaunchers.md index 5dc5003beb..e5e4cb3c2d 100644 --- a/documentation/feature/reloadlaunchers.md +++ b/documentation/feature/reloadlaunchers.md @@ -1,25 +1,20 @@ --- layout: wiki title: Reload Launchers -description: +description: group: feature parent: wiki --- -## Overview +## 1. Overview -### Sub-feature 1 -Short description of sub-feature 1. +Add the ability to reload someone else's launcher. -### Sub-feature 2 -Short description of sub-feature 2. +### 2. Usage +### 2.1 Reloading someone else's launcher +- TBA -## Usage - -Short overview of how to use the feature, e.g. menu options, key bindings, instructions. May not apply to all modules. - - -## Dependencies +## 3. Dependencies `ace_interaction` diff --git a/documentation/feature/respawn.md b/documentation/feature/respawn.md index 1a58597ebd..61df64b756 100644 --- a/documentation/feature/respawn.md +++ b/documentation/feature/respawn.md @@ -1,29 +1,32 @@ --- layout: wiki title: Respawn -description: +description: Same gear on respawn, FF message, rallypoints group: feature parent: wiki --- -## Overview +## 1. Overview -### Respawn with same gear +### 1.1 Respawn with same gear Requires the Respawn Gear module to be placed. Respawned soldiers now have their loadout when killed. -### Friendly Fire messages +### 1.2 Friendly Fire messages Shows friendly fire warnings in system chat if the module is placed. Works even in higher difficulties where kill messages are normally disabled. -### Rallypoints +### 1.3 Rallypoints Adds rallypoints to all 3 sides to enable teleportation from base spawn to FOBs. Requires some setup from the mission maker. -## Usage +## 2. Usage -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. +### 2.1 Using rallypoints +- For this to work pre-emptive preparations need to be made by the mission maker. +- Approach the rallypoint flagpole +- Use the interaction key left windows (ACE3 default keybind `Interaction key`). +- Select teleport to (base / rallypoint). -## Dependencies +## 3. Dependencies `ace_common` diff --git a/documentation/feature/safemode.md b/documentation/feature/safemode.md index f6b06ba016..ec06ab99e8 100644 --- a/documentation/feature/safemode.md +++ b/documentation/feature/safemode.md @@ -1,23 +1,22 @@ --- layout: wiki title: Safe Mode -description: +description: Introduce safe mode group: feature parent: wiki --- -## Overview +## 1. Overview -### Safety +### 1.1 Safety You can now use the safety mode of any weapon. Switching weapon modes takes the safety off. +## 2. Usage -## Usage +### 2.1 Switching safety on / off +- To turn it on press CTRL + ² (ACE3 default keybind `Safe Mode`). +- To turn it off press CTRL + ² again or switch firing mode. -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 3. Dependencies `ace_common` diff --git a/documentation/feature/scopes.md b/documentation/feature/scopes.md index af95bfede4..ec7c5fb7ec 100644 --- a/documentation/feature/scopes.md +++ b/documentation/feature/scopes.md @@ -1,23 +1,31 @@ --- layout: wiki title: Scopes -description: +description: Scope adjustment group: feature parent: wiki --- -## Overview +## 1. Overview ### Sniper Scope Adjustment Enables snipers to adjust their scopes horizontally and vertically in mils. +## 2. Usage -## Usage +### 2.1 Adjusting your scope vertically +Please not that the following key combinations are ACE3 default keybinds. +- Minor adjustment up pageUP. +- Minor adjustment down pageDOWN. +- Major adjustment up Shift + pageUP. +- Major adjustment down Shift + pageDOWN. -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. +### 2.2 Adjusting your scope horizontally +- Minor adjustment right CTRL + pageUP. +- Minor adjustment left CTRL + pageDOWN. +- Major adjustment right CTRL + Shift + pageUP. +- Major adjustment left CTRL + Shift + pageDOWN. - -## Dependencies +## 3. Dependencies `ace_common` diff --git a/documentation/feature/smallarms.md b/documentation/feature/smallarms.md index 5897123f9a..51fc7c0440 100644 --- a/documentation/feature/smallarms.md +++ b/documentation/feature/smallarms.md @@ -15,8 +15,8 @@ Unifies the name formatting of magazines similar to Arma 2 standards. Assault rifles no longer have tracer rounds in their non-tracer magazines. This doesn't effect the additional tracers in the last rounds of machine gun magazines. ### 1.3 Real magazine round counts -All pistol and sub machine gun magazines now have adjusted capacaties to match their real life counterparts. +All pistol and sub machine gun magazines now have adjusted capacities to match their real life counterparts. -## Dependencies +## 2. Dependencies `ace_common` diff --git a/documentation/feature/switchunits.md b/documentation/feature/switchunits.md index 03fd98b3fd..d79aa8d386 100644 --- a/documentation/feature/switchunits.md +++ b/documentation/feature/switchunits.md @@ -6,21 +6,24 @@ group: feature parent: wiki --- -## Overview +## 1. Overview -### Sub-feature 1 -Short description of sub-feature 1. +### 1.1 Switch units -### Sub-feature 2 -Short description of sub-feature 2. +"ACE SwitchUnits" is a tool for mission makers to quickly add PvP (Player vs. Player) elements to a mission. In short it enables a player to control AI units. Allowing players to perform as enemies even during a COOP mission increases the authenticity of the enemy and thus the immersion for everyone. +The most prominent feature of ACE SwitchUnits is that you can add it to nearly every existing mission and get AI control out of the box. Dynamic mission like "Enemy Assault", "Patrol Ops", "Invade & Annex", etc. don't need to be touched to make all random spawned AI's controllable. -## Usage +In its current form you're able to switch to infantry (vehicles, etc. are planned) from all four sides (West, East, Independent, Civilian). -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. +## 2. Usage +### 2.1 Switching to a unit +- Open your map +- Find a unit you can access (they are showed with special icons and names on the map). +- Press LMB then RMB in a rapid succession. +- You'll control that unit until it dies, after that you'll be brought back to your original unit. -## Dependencies +## 3. Dependencies `ace_common` diff --git a/documentation/feature/testmissions.md b/documentation/feature/testmissions.md index 418e5d06f9..8b61c47327 100644 --- a/documentation/feature/testmissions.md +++ b/documentation/feature/testmissions.md @@ -6,21 +6,10 @@ group: feature parent: wiki --- -## Overview +## 1. Overview -### Sub-feature 1 -Short description of sub-feature 1. +adds ACE3 test missions -### Sub-feature 2 -Short description of sub-feature 2. - - -## Usage - -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 2. Dependencies `ace_common` diff --git a/documentation/feature/thermals.md b/documentation/feature/thermals.md index 98cc5ca24e..495ba30eaf 100644 --- a/documentation/feature/thermals.md +++ b/documentation/feature/thermals.md @@ -6,18 +6,11 @@ group: feature parent: wiki --- -## Overview +## 1. Overview -### Body Warmth +### 1.1 Body Warmth Adjusts the thermal properties of humans making them less like torches. - -## Usage - -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 2. Dependencies `ace_common` diff --git a/documentation/feature/vehicles.md b/documentation/feature/vehicles.md index 5c3a07af08..98f969b681 100644 --- a/documentation/feature/vehicles.md +++ b/documentation/feature/vehicles.md @@ -6,42 +6,41 @@ group: feature parent: wiki --- -## Overview +## 1. Overview -### Speedlimiter +### 1.1 Speed limiter Adds ability to limit the max. speed of any vehicle. -### Engine start delay +### 1.2 Engine start delay The engine has to be started before the vehicle can move. Starting the engine takes aprox. 1 to 2 seconds. -### Fuel capacity -The range of all vehicle gets signifigantly reduced to reflect ranges of their real life counterparts. Scaled down to match the relative short distances in Arma. A full vehicle on mission start should still most likely never need a refueling during a mission. +### 1.3 Fuel capacity +The range of all vehicle gets significantly reduced to reflect ranges of their real life counterparts. Scaled down to match the relative short distances in Arma. A full vehicle on mission start should still most likely never need a refuelling during a mission. -### Main gun muzzles +### 1.4 Main gun muzzles APCs and Tanks now share a muzzle for all ammunition types of their main guns. This prevents an exploit that skips the reloading time of a round or clip while changing the ammunition type. Also makes it possible to switch between ammunition types using the scroll wheel like in Arma 2. -### Boat machine gun tracers +### 1.5 Boat machine gun tracers NATO and AAF armed boats now use their respective tracer colours like any vehicle when they fire their rear gun. (Red for BluFor, yellow for Indep) -### Improved smoke launcher of Fennek (Strider) +### 1.6 Improved smoke launcher of Fennek (Strider) Reduced smoke shell count and launch angle of the AAF Fennek to match the models smoke launcher. -### Stabilized optic of Fennek (Strider) +### 1.7 Stabilized optic of Fennek (Strider) Stabilizes the commander's view in the Fennek (Strider). -### Vehicle mounted machine guns ROF +### 1.8 Vehicle mounted machine guns ROF The rate of fire of vehicle mounted miniguns and machine guns is adjusted to match real life values. -### 120mm gun and mortar behavior +### 1.9 120mm gun and mortar behaviour MBT main guns and mortars can no longer lock on enemies. The AT rounds of both now have raised cost values to encourage the AI to not use those rounds against foot soldiers over their machine guns or HE rounds. +## 2. Usage -## Usage +### 2.1 Turning the engine on / off +- To turn the engine on press 2. +- To turn the engine off press 1. -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. - - -## Dependencies +## 3. Dependencies `ace_common` diff --git a/documentation/feature/viewdistance.md b/documentation/feature/viewdistance.md index 23d44bfd3c..0ed4a32aa5 100644 --- a/documentation/feature/viewdistance.md +++ b/documentation/feature/viewdistance.md @@ -10,7 +10,7 @@ parent: wiki ACE3 View Distance is enabled by default. It adds the ability to have different view distance settings when on foot, in a vehicle or in the air. ## 2. Usage -- When ingame, push ESC. +- When in-game, press ESC. - Click `ACE Options` in the top-left corner. - Scroll down to the `Client View Distance` settings. - Adjust to taste. diff --git a/documentation/feature/weaponselect.md b/documentation/feature/weaponselect.md index 8f737d1d1e..232e643416 100644 --- a/documentation/feature/weaponselect.md +++ b/documentation/feature/weaponselect.md @@ -1,35 +1,35 @@ --- layout: wiki title: Weapon Select -description: group: feature parent: wiki --- -## Overview +## 1. Overview -### Weapon select -The number key can be used to quickly switch between weapons. (1 key - pistol, 2 key - rifle, 3 key - grenade launcher, 4 key - rocket launcher, 5 key - binocular) +### 1.1 Holster weapon +Adds the ability to holster a weapon on the back. -### Holster weapon -Adds the ability to holster a weapon on the back. (0 key) +### 1.2 Quick weapon select +Adds key bindings to quickly switch weapons while on foot or in a vehicle. (Unbound by default). -### Engine select -Quickly turn engine on and off (1 key - turn off, 2 key - turn on) +### 1.3 Quick vehicle engine on/off +Adds key bindings to quickly turn a vehicle engine on or off. -### Weapon select -Quickly switch between vehicle weapons (1-3 key) +### 1.4 Grenade select +Changes the grenade selection key bindings to help prevent accidents. -### Grenade select -To prevent accidents a grenade has to be selected before it can be thrown. Toggles between explosive and non-explosive grenades. When spamming the throw key, the player won't automatically switch to frag grenades when all smokes are used up. Also shows an indicator to quickly see how many grenades are left when selecting and after throwing (6 key - switch between frag grenades, 7 key - switch between other grenades) +## 2. Usage +### 2.1 Weapons -## Usage +- Press 0 to holster and unholster a weapon. +- When a weapon is holstered, the weapon fire button will not pull the weapon out. This can be used as an additional level of safety or as a role-playing feature. -Short overview of how to use the feature, e.g. menu options, key bindings, -instructions. May not apply to all modules. +Quick weapon selection is not bound by default, but can be bound in the controls menu under `ACE3 Weapons`. +Quick vehicle weapon selection is not bound by default, but can be bound in the controls menu under `ACE3 Vehicles`. -## Dependencies +## 3. Dependencies `ace_common` diff --git a/documentation/feature/weather.md b/documentation/feature/weather.md index 1c8f33978d..dc8b4bdd78 100644 --- a/documentation/feature/weather.md +++ b/documentation/feature/weather.md @@ -10,8 +10,9 @@ parent: wiki ACE3 Weather is enabled by default. This feature simulates realistic weather according to map location, time of day, date, etc and makes sure every player experiences the same weather effects. ## 2. Usage + ### 2.1 Wind info -- Wind info is toggled on/off using Shift+K +- Wind info is toggled on/off using SHIFT + K. - The arrow representing wind info is based on [Beaufort scale](http://en.wikipedia.org/wiki/Beaufort_scale#Modern_scale) ## 3. Dependencies diff --git a/documentation/missionmaker/modules.md b/documentation/missionmaker/modules.md index 5279f4793a..2402078bb5 100644 --- a/documentation/missionmaker/modules.md +++ b/documentation/missionmaker/modules.md @@ -40,7 +40,7 @@ Muzzle velocity varies with barrel length.
Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics).
9. **Simulation Interval (Number)**
Defines the interval between every calculation step.
-`Default value: 0.05` +`Default value: 0.00` 10. **Simulation Radius (Number)**
Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles.
`Default value: 3000` From 45f5bb8625b574470f6c335a64ea04c021d7420b Mon Sep 17 00:00:00 2001 From: Josuan Albin Date: Fri, 29 May 2015 09:40:29 +0200 Subject: [PATCH 105/252] typos --- documentation/feature/common.md | 2 +- documentation/feature/flashsuppressors.md | 2 +- documentation/feature/parachute.md | 2 +- documentation/feature/protection.md | 2 +- documentation/feature/scopes.md | 2 +- documentation/feature/vehicles.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/documentation/feature/common.md b/documentation/feature/common.md index b9296ad0a0..694b8d3682 100644 --- a/documentation/feature/common.md +++ b/documentation/feature/common.md @@ -14,4 +14,4 @@ Common functions and systems used by most other components. `ace_main` -Note: The Common module is required by nearly all other modules. Avoid disabling it! +Note: The Common module is required by nearly all other modules. Do NOT remove it! diff --git a/documentation/feature/flashsuppressors.md b/documentation/feature/flashsuppressors.md index 74a0899eb9..82696fcc91 100644 --- a/documentation/feature/flashsuppressors.md +++ b/documentation/feature/flashsuppressors.md @@ -8,7 +8,7 @@ parent: wiki ## 1. Overview -This add the ability to use the flash suppressors that are already in game but not accessible. +This adds the ability to use the flash suppressors that are already in game but not accessible. Flash suppressors are devices that reduce the muzzle flash while firing by cooling or dispersing the burning gases that exit the muzzle. Its intent is to reduce the chances that the shooter will be blinded in low-light shooting conditions as well as reducing the intensity of the flash visible to the enemy. diff --git a/documentation/feature/parachute.md b/documentation/feature/parachute.md index e3491ff260..7109566dc0 100644 --- a/documentation/feature/parachute.md +++ b/documentation/feature/parachute.md @@ -17,7 +17,7 @@ item. Adds a non-steerable parachute variant for jet pilots. ### 1.3 Landing animation -Smoother the parachute landing animation. +Smoothens the parachute landing animation. ## 2. Usage diff --git a/documentation/feature/protection.md b/documentation/feature/protection.md index e5da3b2861..628d05d972 100644 --- a/documentation/feature/protection.md +++ b/documentation/feature/protection.md @@ -9,7 +9,7 @@ parent: wiki ## 1. Overview ### 1.1 Tweaked protection values -Fixes and tweaks the protection values of body armour, Helmets and uniforms. +Fixes and tweaks the protection values of body armour, helmets and uniforms. ## 2. Dependencies diff --git a/documentation/feature/scopes.md b/documentation/feature/scopes.md index ec7c5fb7ec..f72e81ebbc 100644 --- a/documentation/feature/scopes.md +++ b/documentation/feature/scopes.md @@ -9,7 +9,7 @@ parent: wiki ## 1. Overview ### Sniper Scope Adjustment -Enables snipers to adjust their scopes horizontally and vertically in mils. +Allows snipers to adjust their scopes horizontally and vertically in mils. ## 2. Usage diff --git a/documentation/feature/vehicles.md b/documentation/feature/vehicles.md index 98f969b681..9fde3a92c3 100644 --- a/documentation/feature/vehicles.md +++ b/documentation/feature/vehicles.md @@ -15,7 +15,7 @@ Adds ability to limit the max. speed of any vehicle. The engine has to be started before the vehicle can move. Starting the engine takes aprox. 1 to 2 seconds. ### 1.3 Fuel capacity -The range of all vehicle gets significantly reduced to reflect ranges of their real life counterparts. Scaled down to match the relative short distances in Arma. A full vehicle on mission start should still most likely never need a refuelling during a mission. +The range of all vehicle gets significantly reduced to reflect ranges of their real life counterparts. Scaled down to match the relative short distances in Arma. A full vehicle on mission start should still most likely never need a refueling during a mission. ### 1.4 Main gun muzzles APCs and Tanks now share a muzzle for all ammunition types of their main guns. This prevents an exploit that skips the reloading time of a round or clip while changing the ammunition type. Also makes it possible to switch between ammunition types using the scroll wheel like in Arma 2. From 01810b8723cdf9e09d80b99bc6d75918776cc9a6 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 29 May 2015 09:49:07 +0200 Subject: [PATCH 106/252] - Altitude is only taken into account when AB is enabled - Separate solution caches for Vanilla and AB ballistics --- addons/rangecard/functions/fnc_updateRangeCard.sqf | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/addons/rangecard/functions/fnc_updateRangeCard.sqf b/addons/rangecard/functions/fnc_updateRangeCard.sqf index fb0995e107..35a7552ef8 100644 --- a/addons/rangecard/functions/fnc_updateRangeCard.sqf +++ b/addons/rangecard/functions/fnc_updateRangeCard.sqf @@ -112,13 +112,16 @@ _atmosphereModel = _ammoConfig select 8; _boreHeight = 3.81; _zeroRange = 100; -_barometricPressure = EGVAR(weather,altitude) call EFUNC(weather,calculateBarometricPressure); +_barometricPressure = 1013.25; +if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + _barometricPressure = EGVAR(weather,altitude) call EFUNC(weather,calculateBarometricPressure); +}; _relativeHumidity = 0.5; ctrlSetText [770001, format["Drop Tables for B.P.: %1mb; Corrected for MVV at Air/Ammo Temperatures -15-35 °C", round(_barometricPressure * 100) / 100]]; ctrlSetText [77004 , format["B.P.: %1mb", round(_barometricPressure * 100) / 100]]; -_cacheEntry = missionNamespace getVariable format[QGVAR(%1_%2), _ammoClass, _weaponClass]; +_cacheEntry = missionNamespace getVariable format[QGVAR(%1_%2_%3), _ammoClass, _weaponClass, missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]]; if (isNil {_cacheEntry}) then { { _mvShift = [_ammoConfig select 9, _x] call EFUNC(advanced_ballistics,calculateAmmoTemperatureVelocityShift); @@ -139,7 +142,7 @@ if (isNil {_cacheEntry}) then { }; }; - missionNamespace setVariable [format[QGVAR(%1_%2), _ammoClass, _weaponClass], [GVAR(rangeCardDataElevation), GVAR(rangeCardDataWindage), GVAR(rangeCardDataLead), GVAR(rangeCardDataMVs), GVAR(lastValidRow)]]; + missionNamespace setVariable [format[QGVAR(%1_%2_%3), _ammoClass, _weaponClass, missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]], [GVAR(rangeCardDataElevation), GVAR(rangeCardDataWindage), GVAR(rangeCardDataLead), GVAR(rangeCardDataMVs), GVAR(lastValidRow)]]; } else { GVAR(rangeCardDataElevation) = _cacheEntry select 0; GVAR(rangeCardDataWindage) = _cacheEntry select 1; From 83f2e35907d4a779723682ea0062c3065a5e6eaf Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 29 May 2015 10:30:30 +0200 Subject: [PATCH 107/252] Fixed incorrect unit conversion in the barometric pressure calculation --- addons/atragmx/functions/fnc_calculate_range_card.sqf | 2 +- addons/atragmx/functions/fnc_calculate_target_solution.sqf | 2 +- addons/weather/functions/fnc_calculateBarometricPressure.sqf | 2 +- extensions/advanced_ballistics/AdvancedBallistics.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/atragmx/functions/fnc_calculate_range_card.sqf b/addons/atragmx/functions/fnc_calculate_range_card.sqf index 5d5253d1bf..483be187f0 100644 --- a/addons/atragmx/functions/fnc_calculate_range_card.sqf +++ b/addons/atragmx/functions/fnc_calculate_range_card.sqf @@ -47,7 +47,7 @@ _temperature = GVAR(temperature); _barometricPressure = GVAR(barometricPressure); _relativeHumidity = GVAR(relativeHumidity); if (!GVAR(atmosphereModeTBH)) then { - _barometricPressure = 1013.25 * exp(-(_altitude) / 7990); + _barometricPressure = (101325 * exp(-(_altitude) / 7990)) / 100; _relativeHumidity = 50; }; diff --git a/addons/atragmx/functions/fnc_calculate_target_solution.sqf b/addons/atragmx/functions/fnc_calculate_target_solution.sqf index 2be1197a9b..ffbfc7b4bd 100644 --- a/addons/atragmx/functions/fnc_calculate_target_solution.sqf +++ b/addons/atragmx/functions/fnc_calculate_target_solution.sqf @@ -47,7 +47,7 @@ _temperature = GVAR(temperature); _barometricPressure = GVAR(barometricPressure); _relativeHumidity = GVAR(relativeHumidity); if (!GVAR(atmosphereModeTBH)) then { - _barometricPressure = 1013.25 * exp(-(_altitude) / 7990); + _barometricPressure = (101325 * exp(-(_altitude) / 7990)) / 100; _relativeHumidity = 50; }; diff --git a/addons/weather/functions/fnc_calculateBarometricPressure.sqf b/addons/weather/functions/fnc_calculateBarometricPressure.sqf index 1e1d47098c..2062fc4695 100644 --- a/addons/weather/functions/fnc_calculateBarometricPressure.sqf +++ b/addons/weather/functions/fnc_calculateBarometricPressure.sqf @@ -14,4 +14,4 @@ */ #include "script_component.hpp" -(1013.25 * exp(-(GVAR(Altitude) + _this) / 7990) - 10 * overcast) +(101325 * exp(-(GVAR(Altitude) + _this) / 7990) - 1000 * overcast) / 100 diff --git a/extensions/advanced_ballistics/AdvancedBallistics.cpp b/extensions/advanced_ballistics/AdvancedBallistics.cpp index 06a398f342..5c2753f296 100644 --- a/extensions/advanced_ballistics/AdvancedBallistics.cpp +++ b/extensions/advanced_ballistics/AdvancedBallistics.cpp @@ -501,7 +501,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) trueSpeed = sqrt(pow(trueVelocity[0], 2) + pow(trueVelocity[1], 2) + pow(trueVelocity[2], 2)); temperature = bulletDatabase[index].temperature - 0.0065 * position[2]; - pressure = 1013.25 * exp(-(bulletDatabase[index].altitude + position[2]) / 7990) - 10 * bulletDatabase[index].overcast; + pressure = (101325 * exp(-(bulletDatabase[index].altitude + position[2]) / 7990) - 1000 * bulletDatabase[index].overcast) / 100; if (bulletDatabase[index].ballisticCoefficients.size() == bulletDatabase[index].velocityBoundaries.size() + 1) { dragRef = deltaT * bulletDatabase[index].airFriction * bulletSpeed * bulletSpeed; From 69b9d0e122b8919d116b186f5b9a453750b6d2da Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 29 May 2015 11:18:40 +0200 Subject: [PATCH 108/252] More in-depth barometric pressure calculation: * Temperature is now taken into account --- addons/atragmx/functions/fnc_calculate_range_card.sqf | 2 +- addons/atragmx/functions/fnc_calculate_target_solution.sqf | 2 +- addons/weather/functions/fnc_calculateBarometricPressure.sqf | 2 +- extensions/advanced_ballistics/AdvancedBallistics.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/atragmx/functions/fnc_calculate_range_card.sqf b/addons/atragmx/functions/fnc_calculate_range_card.sqf index 483be187f0..516138fcee 100644 --- a/addons/atragmx/functions/fnc_calculate_range_card.sqf +++ b/addons/atragmx/functions/fnc_calculate_range_card.sqf @@ -47,7 +47,7 @@ _temperature = GVAR(temperature); _barometricPressure = GVAR(barometricPressure); _relativeHumidity = GVAR(relativeHumidity); if (!GVAR(atmosphereModeTBH)) then { - _barometricPressure = (101325 * exp(-(_altitude) / 7990)) / 100; + _barometricPressure = 1013.25 * (1 - (0.0065 * _altitude) / (273.15 + _temperature + 0.0065 * _altitude)) ^ 5.255754495; _relativeHumidity = 50; }; diff --git a/addons/atragmx/functions/fnc_calculate_target_solution.sqf b/addons/atragmx/functions/fnc_calculate_target_solution.sqf index ffbfc7b4bd..b014da6a61 100644 --- a/addons/atragmx/functions/fnc_calculate_target_solution.sqf +++ b/addons/atragmx/functions/fnc_calculate_target_solution.sqf @@ -47,7 +47,7 @@ _temperature = GVAR(temperature); _barometricPressure = GVAR(barometricPressure); _relativeHumidity = GVAR(relativeHumidity); if (!GVAR(atmosphereModeTBH)) then { - _barometricPressure = (101325 * exp(-(_altitude) / 7990)) / 100; + _barometricPressure = 1013.25 * (1 - (0.0065 * _altitude) / (273.15 + _temperature + 0.0065 * _altitude)) ^ 5.255754495; _relativeHumidity = 50; }; diff --git a/addons/weather/functions/fnc_calculateBarometricPressure.sqf b/addons/weather/functions/fnc_calculateBarometricPressure.sqf index 2062fc4695..e0d8e8f878 100644 --- a/addons/weather/functions/fnc_calculateBarometricPressure.sqf +++ b/addons/weather/functions/fnc_calculateBarometricPressure.sqf @@ -14,4 +14,4 @@ */ #include "script_component.hpp" -(101325 * exp(-(GVAR(Altitude) + _this) / 7990) - 1000 * overcast) / 100 +((1013.25 - 10 * overcast) * (1 - (0.0065 * (GVAR(Altitude) + _this)) / (KELVIN(GVAR(currentTemperature)) + 0.0065 * GVAR(Altitude))) ^ 5.255754495); \ No newline at end of file diff --git a/extensions/advanced_ballistics/AdvancedBallistics.cpp b/extensions/advanced_ballistics/AdvancedBallistics.cpp index 5c2753f296..f5f4e64193 100644 --- a/extensions/advanced_ballistics/AdvancedBallistics.cpp +++ b/extensions/advanced_ballistics/AdvancedBallistics.cpp @@ -501,7 +501,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) trueSpeed = sqrt(pow(trueVelocity[0], 2) + pow(trueVelocity[1], 2) + pow(trueVelocity[2], 2)); temperature = bulletDatabase[index].temperature - 0.0065 * position[2]; - pressure = (101325 * exp(-(bulletDatabase[index].altitude + position[2]) / 7990) - 1000 * bulletDatabase[index].overcast) / 100; + pressure = (1013.25 - 10 * bulletDatabase[index].overcast) * pow(1 - (0.0065 * (bulletDatabase[index].altitude + position[2])) / (273.15 + temperature + 0.0065 * bulletDatabase[index].altitude), 5.255754495); if (bulletDatabase[index].ballisticCoefficients.size() == bulletDatabase[index].velocityBoundaries.size() + 1) { dragRef = deltaT * bulletDatabase[index].airFriction * bulletSpeed * bulletSpeed; From abf0149b1dbdeae17262696ff70cbe425b835c1c Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 29 May 2015 11:36:37 +0200 Subject: [PATCH 109/252] Added speed of sound calculation: * Influences the advanced ballistics transonic instability * Influences the ATragMX range card output --- .../atragmx/functions/fnc_update_range_card.sqf | 6 ++++-- addons/weather/XEH_preInit.sqf | 1 + .../functions/fnc_calculateSpeedOfSound.sqf | 17 +++++++++++++++++ .../advanced_ballistics/AdvancedBallistics.cpp | 3 ++- 4 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 addons/weather/functions/fnc_calculateSpeedOfSound.sqf diff --git a/addons/atragmx/functions/fnc_update_range_card.sqf b/addons/atragmx/functions/fnc_update_range_card.sqf index 7e19abc36e..d084754959 100644 --- a/addons/atragmx/functions/fnc_update_range_card.sqf +++ b/addons/atragmx/functions/fnc_update_range_card.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -private ["_range", "_elevation", "_windage1", "_windage2", "_clickSize", "_clickNumber", "_clickInterval", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput"]; +private ["_range", "_elevation", "_windage1", "_windage2", "_clickSize", "_clickNumber", "_clickInterval", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput", "_speedOfSound"]; _lastColumnOutput = ""; if (GVAR(showWind2) && GVAR(rangeCardCurrentColumn) == 0) then { @@ -32,6 +32,8 @@ if (GVAR(currentUnit) == 1) then { lnbClear 5007; +_speedOfSound = GVAR(temperature) call EFUNC(weather,calculateSpeedOfSound); + { _range = _x select 0; _elevation = _x select 1; @@ -72,7 +74,7 @@ lnbClear 5007; _windageOutput = Str(Round(_windage1 * 100) / 100); _rangeOutput = Str(_range); - if (_velocity < 340.29) then { + if (_velocity < _speedOfSound) then { _rangeOutput = _rangeOutput + "*"; }; diff --git a/addons/weather/XEH_preInit.sqf b/addons/weather/XEH_preInit.sqf index 2a6487f51c..177b58ec82 100644 --- a/addons/weather/XEH_preInit.sqf +++ b/addons/weather/XEH_preInit.sqf @@ -8,6 +8,7 @@ PREP(calculateBarometricPressure); PREP(calculateDewPoint); PREP(calculateHeatIndex); PREP(calculateRoughnessLength); +PREP(calculateSpeedOfSound); PREP(calculateTemperatureAtHeight); PREP(calculateWetBulb); PREP(calculateWindChill); diff --git a/addons/weather/functions/fnc_calculateSpeedOfSound.sqf b/addons/weather/functions/fnc_calculateSpeedOfSound.sqf new file mode 100644 index 0000000000..322ba75ac5 --- /dev/null +++ b/addons/weather/functions/fnc_calculateSpeedOfSound.sqf @@ -0,0 +1,17 @@ +/* + * Author: Ruthberg + * + * Calculates the speed of sound for a given temperature + * + * Arguments: + * temperature - degrees celcius + * + * Return Value: + * speed of sound - m/s + * + * Return value: + * None + */ +#include "script_component.hpp" + +(331.3 + (0.6 * _this)) diff --git a/extensions/advanced_ballistics/AdvancedBallistics.cpp b/extensions/advanced_ballistics/AdvancedBallistics.cpp index 06a398f342..e276ffbea4 100644 --- a/extensions/advanced_ballistics/AdvancedBallistics.cpp +++ b/extensions/advanced_ballistics/AdvancedBallistics.cpp @@ -577,7 +577,8 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) positionOffset[0] += sin(bulletDir + M_PI / 2) * spinDriftPartial; positionOffset[1] += cos(bulletDir + M_PI / 2) * spinDriftPartial; - if (bulletSpeed < 345 && bulletSpeedAvg > 340 && bulletSpeed > 335) { + float speedOfSound = 331.3 + (0.6 * temperature); + if (bulletSpeed < (speedOfSound + 5) && bulletSpeedAvg > speedOfSound && bulletSpeed > (speedOfSound - 5)) { std::uniform_real_distribution distribution(0.0, 1.0); double coef = 1.0f - bulletDatabase[index].transonicStabilityCoef; From ade2cc1c56bda34683cf23b81d89c960f625e7af Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 29 May 2015 12:55:16 +0200 Subject: [PATCH 110/252] Refined the reference barometric pressure calculation --- addons/rangecard/functions/fnc_updateRangeCard.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/rangecard/functions/fnc_updateRangeCard.sqf b/addons/rangecard/functions/fnc_updateRangeCard.sqf index 35a7552ef8..9f828157bf 100644 --- a/addons/rangecard/functions/fnc_updateRangeCard.sqf +++ b/addons/rangecard/functions/fnc_updateRangeCard.sqf @@ -114,7 +114,7 @@ _zeroRange = 100; _barometricPressure = 1013.25; if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { - _barometricPressure = EGVAR(weather,altitude) call EFUNC(weather,calculateBarometricPressure); + _barometricPressure = 1013.25 * (1 - (0.0065 * EGVAR(weather,altitude)) / 288.15) ^ 5.255754495; }; _relativeHumidity = 0.5; From a5a96052b82657e9fae00f14d67216ffb62ce2a6 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 29 May 2015 13:34:34 +0200 Subject: [PATCH 111/252] Made use of the newly implemented speed of sound calculation --- addons/rangecard/functions/fnc_calculateSolution.sqf | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/rangecard/functions/fnc_calculateSolution.sqf b/addons/rangecard/functions/fnc_calculateSolution.sqf index 68189ac36b..f92d8eccb9 100644 --- a/addons/rangecard/functions/fnc_calculateSolution.sqf +++ b/addons/rangecard/functions/fnc_calculateSolution.sqf @@ -44,7 +44,7 @@ */ #include "script_component.hpp" -private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire", "_rangeCardSlot"]; +private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire", "_rangeCardSlot", "_speedOfSound"]; _scopeBaseAngle = _this select 0; _bulletMass = _this select 1; _boreHeight = _this select 2; @@ -136,6 +136,8 @@ _bulletVelocity set [0, 0]; _bulletVelocity set [1, Cos(_scopeBaseAngle) * _muzzleVelocity]; _bulletVelocity set [2, Sin(_scopeBaseAngle) * _muzzleVelocity]; +_speedOfSound = _temperature call EFUNC(weather,calculateSpeedOfSound); + while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do { _bulletSpeed = vectorMagnitude _bulletVelocity; @@ -143,7 +145,7 @@ while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do { _stepsTotal = _stepsTotal + 1; _speedAverage = (_speedTotal / _stepsTotal); - if (_speedAverage > 400 && _bulletSpeed < 340) exitWith {}; + if (_speedAverage > 400 && _bulletSpeed < _speedOfSound) exitWith {}; if (atan((_bulletPos select 2) / (abs(_bulletPos select 1) + 1)) < -2.25) exitWith {}; _trueVelocity = _bulletVelocity vectorDiff _wind1; From 98652c7bdcbaf51a7080e553c2bc77340af663ab Mon Sep 17 00:00:00 2001 From: Josuan Albin Date: Fri, 29 May 2015 13:37:12 +0200 Subject: [PATCH 112/252] reloadlaunchers usage --- documentation/feature/reloadlaunchers.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/documentation/feature/reloadlaunchers.md b/documentation/feature/reloadlaunchers.md index e5e4cb3c2d..4186bc0f4c 100644 --- a/documentation/feature/reloadlaunchers.md +++ b/documentation/feature/reloadlaunchers.md @@ -13,7 +13,9 @@ Add the ability to reload someone else's launcher. ### 2. Usage ### 2.1 Reloading someone else's launcher -- TBA +- Press the interaction key left windows and aim at your buddy's launcher. +- Select `reload launcher`. +- Select the type of ammo. ## 3. Dependencies From 6d1e8eebce959e7fbe867f6c5530f3245cb918ba Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 29 May 2015 15:07:30 +0200 Subject: [PATCH 113/252] Reworked the range card output when AB is disabled --- addons/rangecard/XEH_postInit.sqf | 2 + .../functions/fnc_calculateSolution.sqf | 14 +-- addons/rangecard/functions/fnc_canShow.sqf | 2 +- .../rangecard/functions/fnc_canShowCopy.sqf | 2 +- .../rangecard/functions/fnc_openRangeCard.sqf | 6 +- .../functions/fnc_updateClassNames.sqf | 22 +++-- .../functions/fnc_updateRangeCard.sqf | 97 ++++++++++++++----- 7 files changed, 101 insertions(+), 44 deletions(-) diff --git a/addons/rangecard/XEH_postInit.sqf b/addons/rangecard/XEH_postInit.sqf index 7d475c86f3..8396d76b39 100644 --- a/addons/rangecard/XEH_postInit.sqf +++ b/addons/rangecard/XEH_postInit.sqf @@ -7,7 +7,9 @@ GVAR(RangeCardOpened) = false; GVAR(controls) = []; GVAR(ammoClass) = "B_65x39_Caseless"; +GVAR(magazineClass) = "30Rnd_65x39_caseless_mag"; GVAR(weaponClass) = "arifle_MXM_F"; GVAR(ammoClassCopy) = "";//"ACE_762x51_Ball_M118LR"; +GVAR(magazineClassCopy) = "";//"ACE_20Rnd_762x51_M118LR_Mag"; GVAR(weaponClassCopy) = "";//srifle_DMR_06_olive_F"; diff --git a/addons/rangecard/functions/fnc_calculateSolution.sqf b/addons/rangecard/functions/fnc_calculateSolution.sqf index f92d8eccb9..3a171c4517 100644 --- a/addons/rangecard/functions/fnc_calculateSolution.sqf +++ b/addons/rangecard/functions/fnc_calculateSolution.sqf @@ -44,7 +44,7 @@ */ #include "script_component.hpp" -private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire", "_rangeCardSlot", "_speedOfSound"]; +private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire", "_rangeCardSlot"]; _scopeBaseAngle = _this select 0; _bulletMass = _this select 1; _boreHeight = _this select 2; @@ -71,16 +71,20 @@ _directionOfFire = _this select 21; _rangeCardSlot = _this select 22; if (_storeRangeCardData) then { - GVAR(rangeCardDataMVs) pushBack format[" %1", round(_muzzleVelocity)]; + GVAR(rangeCardDataMVs) set [_rangeCardSlot, format[" %1", round(_muzzleVelocity)]]; }; -private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"]; +private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT", "_speedOfSound"]; _bulletPos = [0, 0, 0]; _bulletVelocity = [0, 0, 0]; _bulletAccel = [0, 0, 0]; _bulletSpeed = 0; _gravity = [0, sin(_scopeBaseAngle + _inclinationAngle) * -9.80665, cos(_scopeBaseAngle + _inclinationAngle) * -9.80665]; _deltaT = 1 / _simSteps; +_speedOfSound = 0; +if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + _speedOfSound = _temperature call EFUNC(weather,calculateSpeedOfSound); +}; private ["_elevation", "_windage1", "_windage2", "_lead", "_TOF", "_trueVelocity", "_trueSpeed", "_kineticEnergy", "_verticalCoriolis", "_verticalDeflection", "_horizontalCoriolis", "_horizontalDeflection", "_spinDrift", "_spinDeflection"]; _elevation = 0; @@ -136,8 +140,6 @@ _bulletVelocity set [0, 0]; _bulletVelocity set [1, Cos(_scopeBaseAngle) * _muzzleVelocity]; _bulletVelocity set [2, Sin(_scopeBaseAngle) * _muzzleVelocity]; -_speedOfSound = _temperature call EFUNC(weather,calculateSpeedOfSound); - while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do { _bulletSpeed = vectorMagnitude _bulletVelocity; @@ -146,7 +148,7 @@ while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do { _speedAverage = (_speedTotal / _stepsTotal); if (_speedAverage > 400 && _bulletSpeed < _speedOfSound) exitWith {}; - if (atan((_bulletPos select 2) / (abs(_bulletPos select 1) + 1)) < -2.25) exitWith {}; + if (atan((_bulletPos select 2) / (abs(_bulletPos select 1) + 1)) < -2.254) exitWith {}; _trueVelocity = _bulletVelocity vectorDiff _wind1; _trueSpeed = vectorMagnitude _trueVelocity; diff --git a/addons/rangecard/functions/fnc_canShow.sqf b/addons/rangecard/functions/fnc_canShow.sqf index d069048acb..f7450e10e3 100644 --- a/addons/rangecard/functions/fnc_canShow.sqf +++ b/addons/rangecard/functions/fnc_canShow.sqf @@ -15,4 +15,4 @@ */ #include "script_component.hpp" -(GVAR(ammoClass) != "" && GVAR(weaponClass) != "" && !GVAR(RangeCardOpened) && !(underwater ACE_player) && ("ACE_RangeCard" in (uniformItems ACE_player)) || ("ACE_RangeCard" in (vestItems ACE_player))) +(GVAR(ammoClass) != "" && GVAR(magazineClass) != "" && GVAR(weaponClass) != "" && !GVAR(RangeCardOpened) && !(underwater ACE_player) && ("ACE_RangeCard" in (uniformItems ACE_player)) || ("ACE_RangeCard" in (vestItems ACE_player))) diff --git a/addons/rangecard/functions/fnc_canShowCopy.sqf b/addons/rangecard/functions/fnc_canShowCopy.sqf index 1dd1318764..49fd891953 100644 --- a/addons/rangecard/functions/fnc_canShowCopy.sqf +++ b/addons/rangecard/functions/fnc_canShowCopy.sqf @@ -15,4 +15,4 @@ */ #include "script_component.hpp" -(GVAR(ammoClassCopy) != "" && GVAR(weaponClassCopy) != "" && !GVAR(RangeCardOpened) && !(underwater ACE_player) && ("ACE_RangeCard" in (uniformItems ACE_player)) || ("ACE_RangeCard" in (vestItems ACE_player))) +(GVAR(ammoClassCopy) != "" && GVAR(magazineClassCopy) != "" && GVAR(weaponClassCopy) != "" && !GVAR(RangeCardOpened) && !(underwater ACE_player) && ("ACE_RangeCard" in (uniformItems ACE_player)) || ("ACE_RangeCard" in (vestItems ACE_player))) diff --git a/addons/rangecard/functions/fnc_openRangeCard.sqf b/addons/rangecard/functions/fnc_openRangeCard.sqf index 2c59ef1da1..3e886eb97a 100644 --- a/addons/rangecard/functions/fnc_openRangeCard.sqf +++ b/addons/rangecard/functions/fnc_openRangeCard.sqf @@ -18,12 +18,12 @@ if (GVAR(RangeCardOpened)) exitWith {}; if (_this) then { - if (GVAR(ammoClassCopy) != "" && GVAR(weaponClassCopy) != "") then { + if (GVAR(ammoClassCopy) != "" && GVAR(magazineClassCopy) != "" && GVAR(weaponClassCopy) != "") then { GVAR(RangeCardOpened) = true; createDialog "ACE_RangeCard_Dialog"; - [GVAR(ammoClassCopy), GVAR(weaponClassCopy)] call FUNC(updateRangeCard); + [GVAR(ammoClassCopy), GVAR(magazineClassCopy), GVAR(weaponClassCopy)] call FUNC(updateRangeCard); }; } else { if (ACE_player call FUNC(updateClassNames)) then { @@ -31,6 +31,6 @@ if (_this) then { createDialog "ACE_RangeCard_Dialog"; - [GVAR(ammoClass), GVAR(weaponClass)] call FUNC(updateRangeCard); + [GVAR(ammoClass), GVAR(magazineClass), GVAR(weaponClass)] call FUNC(updateRangeCard); }; }; diff --git a/addons/rangecard/functions/fnc_updateClassNames.sqf b/addons/rangecard/functions/fnc_updateClassNames.sqf index 203b2db926..70cf25825e 100644 --- a/addons/rangecard/functions/fnc_updateClassNames.sqf +++ b/addons/rangecard/functions/fnc_updateClassNames.sqf @@ -15,29 +15,35 @@ */ #include "script_component.hpp" -private ["_unit", "_ammoClass", "_weaponClass", "_ammo", "_ammoConfig", "_parentClasses"]; +private ["_unit", "_ammoClass", "_magazineClass", "_weaponClass", "_ammo", "_ammoConfig", "_parentClasses"]; _unit = _this; _ammoClass = ""; +_magazineClass = ""; _weaponClass = primaryWeapon _unit; -if (_weaponClass == "") exitWith { (GVAR(ammoClass) != "" && GVAR(weaponClass) != "") }; +if (_weaponClass == "") exitWith { (GVAR(ammoClass) != "" && GVAR(magazineClass) != "" && GVAR(weaponClass) != "") }; { _ammo = getText (configFile >> "CfgMagazines" >> _x >> "ammo"); _ammoConfig = (configFile >> "CfgAmmo" >> _ammo); _parentClasses = [_ammoConfig, true] call BIS_fnc_returnParents; - if ("BulletBase" in _parentClasses) exitWith { _ammoClass = _ammo; }; + if ("BulletBase" in _parentClasses) exitWith { + _ammoClass = _ammo; + _magazineClass = _x; + }; } forEach (primaryWeaponMagazine _unit); -if (_ammoClass == "") exitWith { (GVAR(ammoClass) != "" && GVAR(weaponClass) != "") }; +if (_ammoClass == "") exitWith { (GVAR(ammoClass) != "" && GVAR(magazineClass) != "" && GVAR(weaponClass) != "") }; if (_unit == ACE_player) then { - GVAR(ammoClass) = _ammoClass; - GVAR(weaponClass) = _weaponClass; + GVAR(ammoClass) = _ammoClass; + GVAR(magazineClass) = _magazineClass; + GVAR(weaponClass) = _weaponClass; } else { - GVAR(ammoClassCopy) = _ammoClass; - GVAR(weaponClassCopy) = _weaponClass; + GVAR(ammoClassCopy) = _ammoClass; + GVAR(magazineClassCopy) = _magazineClass; + GVAR(weaponClassCopy) = _weaponClass; }; true diff --git a/addons/rangecard/functions/fnc_updateRangeCard.sqf b/addons/rangecard/functions/fnc_updateRangeCard.sqf index 9f828157bf..c33587a185 100644 --- a/addons/rangecard/functions/fnc_updateRangeCard.sqf +++ b/addons/rangecard/functions/fnc_updateRangeCard.sqf @@ -4,7 +4,8 @@ * * Arguments: * 0: ammo class - * 1: weapon class + * 1: magazine class + * 2: weapon class * * Return Value: * Nothing @@ -19,11 +20,11 @@ disableSerialization; #define __dsp (uiNamespace getVariable "RangleCard_Display") -private ["_airFriction", "_ammoConfig", "_atmosphereModel", "_barometricPressure", "_barrelLength", "_barrelTwist", "_bc", "_boreHeight", "_cacheEntry", "_column", "_control", "_dragModel", "_i", "_muzzleVelocity", "_mv", "_mvShift", "_offset", "_relativeHumidity", "_result", "_row", "_scopeBaseAngle", "_weaponConfig", "_zeroRange"]; +private ["_airFriction", "_ammoConfig", "_atmosphereModel", "_barometricPressure", "_barrelLength", "_barrelTwist", "_bc", "_boreHeight", "_cacheEntry", "_column", "_control", "_dragModel", "_i", "_muzzleVelocity", "_mv", "_mvShift", "_offset", "_relativeHumidity", "_result", "_row", "_scopeBaseAngle", "_weaponConfig", "_zeroRange", "_initSpeed", "_initSpeedCoef"]; -PARAMS_2(_ammoClass,_weaponClass); +PARAMS_3(_ammoClass,_magazineClass,_weaponClass); -if (_ammoClass == "" || _weaponClass == "") exitWith {}; +if (_ammoClass == "" || _magazineClass == "" || _weaponClass == "") exitWith {}; { ctrlDelete _x; @@ -45,7 +46,7 @@ for "_row" from 0 to 49 do { }; for "_column" from 0 to 8 do { for "_row" from 0 to 49 do { - _offset = if (_row < 5) then {0} else {0.003}; + _offset = if (_row < 5) then {0} else {0.003}; _control = (__dsp ctrlCreate ["RangeCard_RscText", 90000 + _column * 100 + _row]); _control ctrlSetPosition [safeZoneX + 0.249 + _column * 0.055, safeZoneY + 0.374 + 0.027 * _row + _offset, 0.052, 0.025]; _control ctrlCommit 0; @@ -80,15 +81,17 @@ lnbClear 770300; lnbClear 770400; lnbAddRow [770100, ["4mps Wind(MRADs)", "1mps LEAD(MRADs)"]]; -lnbAddRow [770100, ["Air/Ammo Temp", "Air/Ammo Temp"]]; +if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + lnbAddRow [770100, ["Air/Ammo Temp", "Air/Ammo Temp"]]; -lnbAddRow [770200, ["-15°C", " -5°C", " 5°C", " 10°C", " 15°C", " 20°C", " 25°C", " 30°C", " 35°C"]]; -lnbAddRow [770300, ["-15°C", " 10°C", " 35°C", "-15°C", " 10°C", " 35°C"]]; + lnbAddRow [770200, ["-15°C", " -5°C", " 5°C", " 10°C", " 15°C", " 20°C", " 25°C", " 30°C", " 35°C"]]; + lnbAddRow [770300, ["-15°C", " 10°C", " 35°C", "-15°C", " 10°C", " 35°C"]]; +}; GVAR(rangeCardDataElevation) = [[], [], [], [], [], [], [], [], []]; GVAR(rangeCardDataWindage) = [[], [], [], [], [], [], [], [], []]; GVAR(rangeCardDataLead) = [[], [], [], [], [], [], [], [], []]; -GVAR(rangeCardDataMVs) = []; +GVAR(rangeCardDataMVs) = ["", "", "", "", "", "", "", "", ""]; GVAR(lastValidRow) = []; GVAR(currentUnit) = 2; @@ -101,10 +104,28 @@ _weaponConfig = _weaponClass call EFUNC(advanced_ballistics,readWeaponDataFromCo _airFriction = _ammoConfig select 0; _barrelTwist = _weaponConfig select 0; _barrelLength = _weaponConfig select 2; -_muzzleVelocity = [_barrelLength, _ammoConfig select 10, _ammoConfig select 11, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift); +_muzzleVelocity = 0; +if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + _muzzleVelocity = [_barrelLength, _ammoConfig select 10, _ammoConfig select 11, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift); +} else { + _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazineClass >> "initSpeed"); + _initSpeedCoef = getNumber (configFile >> "CfgWeapons" >> _weaponClass >> "initSpeed"); + if (_initSpeedCoef < 0) then { + _initSpeed = _initSpeed * -_initSpeedCoef; + }; + if (_initSpeedCoef > 0) then { + _initSpeed = _initSpeedCoef; + }; + _muzzleVelocity = _initSpeed; +}; -ctrlSetText [770000, format["%1'' - %2 gr (%3)", round((_ammoConfig select 1) * 39.3700787) / 1000, round((_ammoConfig select 3) * 15.4323584), _ammoClass]]; -ctrlSetText [770002, format["Barrel: %1'' 1:%2'' twist", round(_barrelLength * 0.0393700787), round(_barrelTwist * 0.0393700787)]]; +if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + ctrlSetText [770000, format["%1'' - %2 gr (%3)", round((_ammoConfig select 1) * 39.3700787) / 1000, round((_ammoConfig select 3) * 15.4323584), _ammoClass]]; + ctrlSetText [770002, format["Barrel: %1'' 1:%2'' twist", round(_barrelLength * 0.0393700787), round(_barrelTwist * 0.0393700787)]]; +} else { + ctrlSetText [770000, getText (configFile >> "CfgMagazines" >> _magazineClass >> "displayNameShort")]; + ctrlSetText [770002, ""]; +}; _bc = (_ammoConfig select 6) select 0; _dragModel = _ammoConfig select 5; @@ -118,27 +139,45 @@ if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) t }; _relativeHumidity = 0.5; -ctrlSetText [770001, format["Drop Tables for B.P.: %1mb; Corrected for MVV at Air/Ammo Temperatures -15-35 °C", round(_barometricPressure * 100) / 100]]; -ctrlSetText [77004 , format["B.P.: %1mb", round(_barometricPressure * 100) / 100]]; +if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + ctrlSetText [770001, format["Drop Tables for B.P.: %1mb; Corrected for MVV at Air/Ammo Temperatures -15-35 °C", round(_barometricPressure * 100) / 100]]; + ctrlSetText [77004 , format["B.P.: %1mb", round(_barometricPressure * 100) / 100]]; +} else { + ctrlSetText [770001, getText (configFile >> "CfgWeapons" >> _weaponClass >> "displayName")]; + ctrlSetText [77004 , ""]; +}; _cacheEntry = missionNamespace getVariable format[QGVAR(%1_%2_%3), _ammoClass, _weaponClass, missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]]; if (isNil {_cacheEntry}) then { - { - _mvShift = [_ammoConfig select 9, _x] call EFUNC(advanced_ballistics,calculateAmmoTemperatureVelocityShift); - _mv = _muzzleVelocity + _mvShift; - - _result = [0, 0, _boreHeight, _airFriction, _mv, _x, 1013.25, 0.5, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculateSolution); + if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + { + _mvShift = [_ammoConfig select 9, _x] call EFUNC(advanced_ballistics,calculateAmmoTemperatureVelocityShift); + _mv = _muzzleVelocity + _mvShift; + + _result = [0, 0, _boreHeight, _airFriction, _mv, _x, 1013.25, 0.5, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculateSolution); + _scopeBaseAngle = (_result select 0) / 60; + + [_scopeBaseAngle,27,_boreHeight,_airFriction,_mv,_x,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,_forEachIndex] call FUNC(calculateSolution); + } forEach [-15, -5, 5, 10, 15, 20, 25, 30, 35]; + } else { + _result = [0, 0, _boreHeight, _airFriction, _muzzleVelocity, _x, 1013.25, 0.5, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculateSolution); _scopeBaseAngle = (_result select 0) / 60; - [_scopeBaseAngle,27,_boreHeight,_airFriction,_mv,_x,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,4,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,_forEachIndex] call FUNC(calculateSolution); - } forEach [-15, -5, 5, 10, 15, 20, 25, 30, 35]; - + [_scopeBaseAngle,27,_boreHeight,_airFriction,_muzzleVelocity,_x,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,3] call FUNC(calculateSolution); + }; + for "_i" from 0 to 9 do { GVAR(lastValidRow) pushBack count (GVAR(rangeCardDataElevation) select _i); while {count (GVAR(rangeCardDataElevation) select _i) < 50} do { - (GVAR(rangeCardDataElevation) select _i) pushBack "###"; - (GVAR(rangeCardDataWindage) select _i) pushBack "##"; - (GVAR(rangeCardDataLead) select _i) pushBack "##"; + if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + (GVAR(rangeCardDataElevation) select _i) pushBack "###"; + (GVAR(rangeCardDataWindage) select _i) pushBack "##"; + (GVAR(rangeCardDataLead) select _i) pushBack "##"; + } else { + (GVAR(rangeCardDataElevation) select _i) pushBack ""; + (GVAR(rangeCardDataWindage) select _i) pushBack ""; + (GVAR(rangeCardDataLead) select _i) pushBack ""; + }; }; }; @@ -175,3 +214,11 @@ for "_column" from 0 to 8 do { _control ctrlCommit 0; }; } forEach [0, 3, 8]; + +if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + ctrlSetText [770020, "For best results keep ammunition at ambient air temperature. Tables calculated for the above listed barrel"]; + ctrlSetText [770021, "and load with optic mounted 1.5'' above line of bore."]; +} else { + ctrlSetText [770020, ""]; + ctrlSetText [770021, ""]; +}; \ No newline at end of file From 26a9f7f38e47c29f2815d57038b771623da4baa7 Mon Sep 17 00:00:00 2001 From: Josuan Albin Date: Fri, 29 May 2015 15:31:48 +0200 Subject: [PATCH 114/252] navid and SPMG barrel swapping added - added navid class to barrel swapping config - added SPMG class to barrel swapping config --- addons/overheating/CfgWeapons.hpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/addons/overheating/CfgWeapons.hpp b/addons/overheating/CfgWeapons.hpp index 12ec43024f..f88aa9327b 100644 --- a/addons/overheating/CfgWeapons.hpp +++ b/addons/overheating/CfgWeapons.hpp @@ -40,7 +40,25 @@ class CfgWeapons { ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9}; ACE_Overheating_JamChance[] = {0, 0.0003, 0.0015, 0.0075}; }; + + class MMG_02_base_F : rifle_Base_F { + ACE_clearJamAction = ""; + ACE_checkTemperatureAction = ""; + ACE_Overheating_allowSwapBarrel = 1; + ACE_Overheating_Dispersion[] = {0, -0.001, 0.001, 0.004}; + ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9}; + ACE_Overheating_JamChance[] = {0, 0.0003, 0.0015, 0.0075}; + }; + class MMG_01_base_F : rifle_Base_F { + ACE_clearJamAction = ""; + ACE_checkTemperatureAction = ""; + ACE_Overheating_allowSwapBarrel = 1; + ACE_Overheating_Dispersion[] = {0, -0.001, 0.001, 0.004}; + ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9}; + ACE_Overheating_JamChance[] = {0, 0.0003, 0.0015, 0.0075}; + }; + class arifle_MX_SW_F : arifle_MX_Base_F { ACE_clearJamAction = ""; // Custom jam clearing action. Use empty string to undefine. ACE_Overheating_allowSwapBarrel = 1; // 1 to enable barrel swap. 0 to disable. Meant for machine guns where you can easily swap the barrel without dismantling the whole weapon. From d0e1af6e47a8515b61ee48dd871925999b86c6c9 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 29 May 2015 19:39:54 +0200 Subject: [PATCH 115/252] Improved missing config error handling --- .../functions/fnc_updateRangeCard.sqf | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/addons/rangecard/functions/fnc_updateRangeCard.sqf b/addons/rangecard/functions/fnc_updateRangeCard.sqf index c33587a185..d58e7ff6bb 100644 --- a/addons/rangecard/functions/fnc_updateRangeCard.sqf +++ b/addons/rangecard/functions/fnc_updateRangeCard.sqf @@ -105,7 +105,7 @@ _airFriction = _ammoConfig select 0; _barrelTwist = _weaponConfig select 0; _barrelLength = _weaponConfig select 2; _muzzleVelocity = 0; -if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { +if (_barrelLength > 0 && missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { _muzzleVelocity = [_barrelLength, _ammoConfig select 10, _ammoConfig select 11, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift); } else { _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazineClass >> "initSpeed"); @@ -121,7 +121,11 @@ if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) t if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { ctrlSetText [770000, format["%1'' - %2 gr (%3)", round((_ammoConfig select 1) * 39.3700787) / 1000, round((_ammoConfig select 3) * 15.4323584), _ammoClass]]; - ctrlSetText [770002, format["Barrel: %1'' 1:%2'' twist", round(_barrelLength * 0.0393700787), round(_barrelTwist * 0.0393700787)]]; + if (_barrelLength > 0 && _barrelTwist > 0) then { + ctrlSetText [770002, format["Barrel: %1'' 1:%2'' twist", round(_barrelLength * 0.0393700787), round(_barrelTwist * 0.0393700787)]]; + } else { + ctrlSetText [770002, ""]; + }; } else { ctrlSetText [770000, getText (configFile >> "CfgMagazines" >> _magazineClass >> "displayNameShort")]; ctrlSetText [770002, ""]; @@ -196,6 +200,11 @@ for "_column" from 0 to 8 do { for "_row" from 0 to 49 do { _control = (__dsp displayCtrl (90000 + _column * 100 + _row)); _control ctrlSetText ((GVAR(rangeCardDataElevation) select _column) select _row); + if (_row >= (GVAR(lastValidRow) select _column)) then { + _control ctrlSetTextColor [0, 0, 0, 0.6]; + } else { + _control ctrlSetTextColor [0, 0, 0, 1.0]; + }; _control ctrlCommit 0; }; }; @@ -203,6 +212,11 @@ for "_column" from 0 to 8 do { for "_row" from 0 to 49 do { _control = (__dsp displayCtrl (90000 + (9 + _forEachIndex) * 100 + _row)); _control ctrlSetText ((GVAR(rangeCardDataWindage) select _x) select _row); + if (_row >= (GVAR(lastValidRow) select _x)) then { + _control ctrlSetTextColor [0, 0, 0, 0.6]; + } else { + _control ctrlSetTextColor [0, 0, 0, 1.0]; + }; _control ctrlCommit 0; }; } forEach [0, 3, 8]; @@ -211,6 +225,11 @@ for "_column" from 0 to 8 do { for "_row" from 0 to 49 do { _control = (__dsp displayCtrl (90000 + (12 + _forEachIndex) * 100 + _row)); _control ctrlSetText ((GVAR(rangeCardDataLead) select _x) select _row); + if (_row >= (GVAR(lastValidRow) select _x)) then { + _control ctrlSetTextColor [0, 0, 0, 0.6]; + } else { + _control ctrlSetTextColor [0, 0, 0, 1.0]; + }; _control ctrlCommit 0; }; } forEach [0, 3, 8]; From 65b9e67991f545e41a4806b37d898d86ebf20dd7 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 29 May 2015 20:11:07 +0200 Subject: [PATCH 116/252] Refined the abort condition for the range card calculation --- addons/rangecard/functions/fnc_calculateSolution.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/rangecard/functions/fnc_calculateSolution.sqf b/addons/rangecard/functions/fnc_calculateSolution.sqf index 3a171c4517..baaaf8506a 100644 --- a/addons/rangecard/functions/fnc_calculateSolution.sqf +++ b/addons/rangecard/functions/fnc_calculateSolution.sqf @@ -147,7 +147,7 @@ while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do { _stepsTotal = _stepsTotal + 1; _speedAverage = (_speedTotal / _stepsTotal); - if (_speedAverage > 400 && _bulletSpeed < _speedOfSound) exitWith {}; + if (_speedAverage > 450 && _bulletSpeed < _speedOfSound) exitWith {}; if (atan((_bulletPos select 2) / (abs(_bulletPos select 1) + 1)) < -2.254) exitWith {}; _trueVelocity = _bulletVelocity vectorDiff _wind1; From 2d7b4e5bdc207d0a1d7eb164b9323013fb2237d4 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 29 May 2015 20:11:44 +0200 Subject: [PATCH 117/252] Fixed incorrect barrel length --- optionals/compat_bwa3/CfgWeapons.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/optionals/compat_bwa3/CfgWeapons.hpp b/optionals/compat_bwa3/CfgWeapons.hpp index 9966eaafdf..731396ed73 100644 --- a/optionals/compat_bwa3/CfgWeapons.hpp +++ b/optionals/compat_bwa3/CfgWeapons.hpp @@ -20,11 +20,11 @@ class CfgWeapons { }; class BWA3_G28_Standard: Rifle_Long_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=419; + ACE_barrelLength=421; }; class BWA3_G28_Assault: BWA3_G28_Standard { ACE_barrelTwist=304.8; - ACE_barrelLength=305; + ACE_barrelLength=421; }; class BWA3_G27: BWA3_G28_Standard { ACE_barrelTwist=304.8; From a57d8486ca23ed955fc5240ae9d7e84d37dc5572 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 29 May 2015 20:51:20 +0200 Subject: [PATCH 118/252] Removed some unneeded code --- .../functions/fnc_calculateSolution.sqf | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/addons/rangecard/functions/fnc_calculateSolution.sqf b/addons/rangecard/functions/fnc_calculateSolution.sqf index baaaf8506a..d8f0fe0cac 100644 --- a/addons/rangecard/functions/fnc_calculateSolution.sqf +++ b/addons/rangecard/functions/fnc_calculateSolution.sqf @@ -101,15 +101,9 @@ _horizontalDeflection = 0; _spinDrift = 0; _spinDeflection = 0; -private ["_n", "_range", "_rangeFactor"]; +private ["_n", "_range"]; _n = 0; _range = 0; -_rangeFactor = 1; -if (_storeRangeCardData) then { - if (GVAR(currentUnit) == 1) then { - _rangeFactor = 1.0936133; - }; -}; private ["_wind1", "_wind2", "_windDrift"]; _wind1 = [cos(270 - _windDirection * 30) * _windSpeed1, sin(270 - _windDirection * 30) * _windSpeed1, 0]; @@ -124,14 +118,6 @@ _speedTotal = 0; _stepsTotal = 0; _speedAverage = 0; -private ["_eoetvoesMultiplier"]; -_eoetvoesMultiplier = 0; -if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { - _eoetvoesMultiplier = 2 * (0.0000729 * _muzzleVelocity / -9.80665) * cos(_latitude) * sin(_directionOfFire); -}; - -_TOF = 0; - _bulletPos set [0, 0]; _bulletPos set [1, 0]; _bulletPos set [2, -(_boreHeight / 100)]; @@ -173,7 +159,7 @@ while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do { if (_storeRangeCardData) then { _range = GVAR(rangeCardStartRange) + _n * GVAR(rangeCardIncrement); - if ((_bulletPos select 1) * _rangeFactor >= _range && _range <= GVAR(rangeCardEndRange)) then { + if ((_bulletPos select 1) >= _range && _range <= GVAR(rangeCardEndRange)) then { if ((_bulletPos select 1) > 0) then { _elevation = - atan((_bulletPos select 2) / (_bulletPos select 1)); _windage1 = - atan((_bulletPos select 0) / (_bulletPos select 1)); From 00acbaf44d1e1b088c714a8901f10e69d613c4e6 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 29 May 2015 21:56:07 +0200 Subject: [PATCH 119/252] Added blur background client setting --- addons/interact_menu/ACE_Settings.hpp | 11 +++++++++-- addons/interact_menu/XEH_clientInit.sqf | 3 +++ addons/interact_menu/stringtable.xml | 6 ++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/addons/interact_menu/ACE_Settings.hpp b/addons/interact_menu/ACE_Settings.hpp index 19347b0d6d..227f73d023 100644 --- a/addons/interact_menu/ACE_Settings.hpp +++ b/addons/interact_menu/ACE_Settings.hpp @@ -4,7 +4,7 @@ class ACE_Settings { typeName = "BOOL"; isClientSettable = 1; displayName = "$STR_ACE_Interact_Menu_AlwaysUseCursorSelfInteraction"; - }; + }; class GVAR(cursorKeepCentered) { value = 0; typeName = "BOOL"; @@ -54,7 +54,7 @@ class ACE_Settings { isClientSettable = 1; displayName = "$STR_ACE_Interact_textSize"; values[] = {"$str_very_small", "$str_small", "$str_medium", "$str_large", "$str_very_large"}; - }; + }; class GVAR(shadowSetting) { value = 2; typeName = "SCALAR"; @@ -69,4 +69,11 @@ class ACE_Settings { isClientSettable = 1; displayName = "$STR_ACE_Interact_Menu_ActionOnKeyRelease"; }; + class GVAR(blurScreen) { + value = 0; + typeName = "BOOL"; + isClientSettable = 1; + displayName = "$STR_ACE_Interact_Menu_blurScreen"; + description = "$STR_ACE_Interact_Menu_blurScreenDesc"; + }; }; diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index bbd2b74263..221233e375 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -62,3 +62,6 @@ addMissionEventHandler ["Draw3D", DFUNC(render)]; // disable firing while the interact menu is is is opened ["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventHandler); + +["interactMenuOpened", { if (GVAR(blurScreen)) then {[QGVAR(blurScreen), true] call EFUNC(common,blurScreen);}; }] call EFUNC(common,addEventHandler); +["interactMenuClosed", { if (GVAR(blurScreen)) then {[QGVAR(blurScreen), false] call EFUNC(common,blurScreen);}; }] call EFUNC(common,addEventHandler); diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 8f60fa6879..2bd9bdbaf3 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -217,5 +217,11 @@ Körvonal Contorno + + Blur screen on interaction + + + Blur the background while the interaction menu is open. + From 7603e714686f02f4321df0fcf2c0f5e67a62a833 Mon Sep 17 00:00:00 2001 From: Josuan Albin Date: Fri, 29 May 2015 22:08:13 +0200 Subject: [PATCH 120/252] removed useless entries --- addons/overheating/CfgWeapons.hpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/addons/overheating/CfgWeapons.hpp b/addons/overheating/CfgWeapons.hpp index f88aa9327b..7fdc08c973 100644 --- a/addons/overheating/CfgWeapons.hpp +++ b/addons/overheating/CfgWeapons.hpp @@ -42,8 +42,6 @@ class CfgWeapons { }; class MMG_02_base_F : rifle_Base_F { - ACE_clearJamAction = ""; - ACE_checkTemperatureAction = ""; ACE_Overheating_allowSwapBarrel = 1; ACE_Overheating_Dispersion[] = {0, -0.001, 0.001, 0.004}; ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9}; @@ -51,8 +49,6 @@ class CfgWeapons { }; class MMG_01_base_F : rifle_Base_F { - ACE_clearJamAction = ""; - ACE_checkTemperatureAction = ""; ACE_Overheating_allowSwapBarrel = 1; ACE_Overheating_Dispersion[] = {0, -0.001, 0.001, 0.004}; ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9}; From d457d9ffeac7dd1a8fc4a2c95013ef69e65b8c9b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 29 May 2015 15:37:53 -0500 Subject: [PATCH 121/252] NightVision adjustment - use CSE's gamma --- addons/nightvision/functions/fnc_changeNVGBrightness.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/nightvision/functions/fnc_changeNVGBrightness.sqf b/addons/nightvision/functions/fnc_changeNVGBrightness.sqf index e1894aba00..29c6b976cf 100644 --- a/addons/nightvision/functions/fnc_changeNVGBrightness.sqf +++ b/addons/nightvision/functions/fnc_changeNVGBrightness.sqf @@ -22,12 +22,12 @@ PARAMS_2(_player,_changeInBrightness); _brightness = _player getVariable [QGVAR(NVGBrightness), 0]; -_brightness = ((round (10 * _brightness + _changeInBrightness) / 10) min 1) max -1; +_brightness = ((round (10 * _brightness + _changeInBrightness) / 10) min 0.5) max -0.5; _player setVariable [QGVAR(NVGBrightness), _brightness, false]; -GVAR(ppEffectNVGBrightness) ppEffectAdjust [1, 1, _brightness / 4, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]; +GVAR(ppEffectNVGBrightness) ppEffectAdjust [1, (_brightness + 1), 0, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]; GVAR(ppEffectNVGBrightness) ppEffectCommit 0; -[format [(localize "STR_ACE_NightVision_NVGBrightness"), (_brightness * 100)]] call EFUNC(common,displayTextStructured); +[format [(localize "STR_ACE_NightVision_NVGBrightness"), (_brightness * 10)]] call EFUNC(common,displayTextStructured); playSound "ACE_Sound_Click"; From 5efde255858832778e60351d5506fb87bd84ad07 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 29 May 2015 21:03:47 -0500 Subject: [PATCH 122/252] Fix ace_settings --- addons/common/XEH_postInit.sqf | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 291cfc442e..d39ba13ba8 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -255,11 +255,18 @@ GVAR(commonPostInited) = true; // If post inits are not ready then wait if !(SLX_XEH_MACHINE select 8) exitWith {}; // If settings are not initialized then wait - if !(GVAR(SettingsInitialized)) exitWith {}; + if (isNil QGVAR(settings)) exitWith { + diag_log text format["[ACE] Waiting on settings from server"]; + }; [(_this select 1)] call cba_fnc_removePerFrameHandler; diag_log text format["[ACE] Settings initialized"]; + + //Load from profile and localize settings: + ["ServerSettingsReceived", []] call FUNC(localEvent); + + //Event that settings are safe to use: ["SettingsInitialized", []] call FUNC(localEvent); }, 0, []] call cba_fnc_addPerFrameHandler; From b416e66509aa2f4eb6a55e3ff309813f2ca81c9f Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 30 May 2015 00:31:52 -0300 Subject: [PATCH 123/252] Fix problem with #1214. Probably solve #1273 --- addons/common/XEH_preInit.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index fbd5f3ddd5..85478c03ca 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -309,8 +309,8 @@ GVAR(SettingsInitialized) = false; // Load settings on the server and broadcast them if (isServer) then { call FUNC(loadSettingsOnServer); - // Raise a local event for other modules to listen too - ["ServerSettingsReceived", []] call FUNC(localEvent); + // Raise a global event to notify settings from the server have arrived + ["ServerSettingsReceived", []] call FUNC(globalEvent); }; ACE_player = player; From afa6a2fad90bec49f96b567347b6f9b576c7507e Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 30 May 2015 00:43:51 -0300 Subject: [PATCH 124/252] Remove the "ServerSettingsReceived" event, which is not longer needed. As per @pabstmirror solution, the GVAR(Settings) variable is monitored to determine when the server info has arrived. Fix #1273 --- addons/common/XEH_postInit.sqf | 14 ++++++++++---- addons/common/XEH_preInit.sqf | 14 -------------- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index d39ba13ba8..07ffe970cb 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -254,6 +254,7 @@ GVAR(commonPostInited) = true; [{ // If post inits are not ready then wait if !(SLX_XEH_MACHINE select 8) exitWith {}; + // If settings are not initialized then wait if (isNil QGVAR(settings)) exitWith { diag_log text format["[ACE] Waiting on settings from server"]; @@ -261,11 +262,16 @@ GVAR(commonPostInited) = true; [(_this select 1)] call cba_fnc_removePerFrameHandler; + diag_log text format["[ACE] Settings received from server"]; + + // Load user settings from profile + if (hasInterface) then { + call FUNC(loadSettingsFromProfile); + call FUNC(loadSettingsLocalizedText); + }; + diag_log text format["[ACE] Settings initialized"]; - - //Load from profile and localize settings: - ["ServerSettingsReceived", []] call FUNC(localEvent); - + //Event that settings are safe to use: ["SettingsInitialized", []] call FUNC(localEvent); diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index fbd5f3ddd5..4d93705898 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -294,23 +294,9 @@ GVAR(waitAndExecArray) = []; //Debug ACE_COUNTERS = []; -// Wait for server settings to arrive -GVAR(SettingsInitialized) = false; -["ServerSettingsReceived", { - diag_log text format["[ACE] Settings received from server"]; - // Load user settings from profile - if (hasInterface) then { - call FUNC(loadSettingsFromProfile); - call FUNC(loadSettingsLocalizedText); - }; - GVAR(SettingsInitialized) = true; -}] call FUNC(addEventhandler); - // Load settings on the server and broadcast them if (isServer) then { call FUNC(loadSettingsOnServer); - // Raise a local event for other modules to listen too - ["ServerSettingsReceived", []] call FUNC(localEvent); }; ACE_player = player; From 333cb80171940d878143e1378a4b1d3dbc42aa5d Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 30 May 2015 01:18:23 -0300 Subject: [PATCH 125/252] Delay initialization of ACE_Modules until settings are properly setup --- addons/common/XEH_postInit.sqf | 3 ++ addons/modules/XEH_postInit.sqf | 72 +++++++++++++++++---------------- 2 files changed, 40 insertions(+), 35 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 07ffe970cb..98702cc554 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -264,6 +264,9 @@ GVAR(commonPostInited) = true; diag_log text format["[ACE] Settings received from server"]; + // Event so that ACE_Modules have their settings loaded: + ["InitSettingsFromModules", []] call FUNC(localEvent); + // Load user settings from profile if (hasInterface) then { call FUNC(loadSettingsFromProfile); diff --git a/addons/modules/XEH_postInit.sqf b/addons/modules/XEH_postInit.sqf index b6aecf5f90..2e115d020b 100644 --- a/addons/modules/XEH_postInit.sqf +++ b/addons/modules/XEH_postInit.sqf @@ -1,44 +1,46 @@ #include "script_component.hpp" -// TODO This is a basic and limited implementation that mimics some of the functionality from the A3 module framework, but not all of it. -// We have to execute this in the postInit XEH because on object init, the parameters of the modules are not yet available. They are if we execute it at the start of postInit execution. -{ - [_x] call { - private ["_logic", "_logicType", "_config", "_isGlobal", "_isDisposable", "_isPersistent","_function"]; - _logic = _this select 0; - _logicType = typeof _logic; - _logic hideobject true; +["InitSettingsFromModules", { + // TODO This is a basic and limited implementation that mimics some of the functionality from the A3 module framework, but not all of it. + // We have to execute this in the postInit XEH because on object init, the parameters of the modules are not yet available. They are if we execute it at the start of postInit execution. + { + [_x] call { + private ["_logic", "_logicType", "_config", "_isGlobal", "_isDisposable", "_isPersistent","_function"]; + _logic = _this select 0; + _logicType = typeof _logic; + _logic hideobject true; - if (_logic getvariable [QGVAR(initalized), false]) exitwith {}; - _config = (configFile >> "CfgVehicles" >> _logicType); - if !(isClass _config) exitwith {}; + if (_logic getvariable [QGVAR(initalized), false]) exitwith {}; + _config = (configFile >> "CfgVehicles" >> _logicType); + if !(isClass _config) exitwith {}; - // isGlobal = 1; - _isGlobal = getNumber (_config >> "isGlobal") > 0; - _isDisposable = getNumber (_config >> "isDisposable") > 0; - _isPersistent = getNumber (_config >> "isPersistent") > 0 || getnumber (_config >> "isGlobal") > 1; - _function = getText (_config >> "function"); - if (isnil _function) then { - _function = compile _function; - } else { - _function = missionNamespace getvariable _function; - }; + // isGlobal = 1; + _isGlobal = getNumber (_config >> "isGlobal") > 0; + _isDisposable = getNumber (_config >> "isDisposable") > 0; + _isPersistent = getNumber (_config >> "isPersistent") > 0 || getnumber (_config >> "isGlobal") > 1; + _function = getText (_config >> "function"); + if (isnil _function) then { + _function = compile _function; + } else { + _function = missionNamespace getvariable _function; + }; - if (_isGlobal) then { - [_logic, [], true] call _function; - } else { - if (isServer) then { + if (_isGlobal) then { [_logic, [], true] call _function; + } else { + if (isServer) then { + [_logic, [], true] call _function; + }; + }; + + if !(_isPersistent) then { + _logic setvariable [QGVAR(initalized), true]; + }; + + if (_isDisposable) then { + deleteVehicle _logic; }; }; - - if !(_isPersistent) then { - _logic setvariable [QGVAR(initalized), true]; - }; - - if (_isDisposable) then { - deleteVehicle _logic; - }; - }; -}foreach GVAR(moduleInitCollection); + }foreach GVAR(moduleInitCollection); +}] call FUNC(addEventhandler); From 9d29aa210725482ec1d136f4690b7294d1e275be Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 30 May 2015 01:37:41 -0300 Subject: [PATCH 126/252] - Change all modules on ACE using settings to type ACE_Module, so we can guarantee that they wait for settings before initing. - Make ace_common require ace_modules, so all ACE pbos are guaranteed to have it --- addons/common/CfgVehicles.hpp | 13 +++++-------- addons/common/config.cpp | 2 +- addons/explosives/CfgModule.hpp | 7 ++----- addons/hearing/CfgVehicles.hpp | 4 ++-- addons/interaction/CfgVehicles.hpp | 4 ++-- addons/map/CfgVehicles.hpp | 6 ++++-- addons/microdagr/CfgVehicles.hpp | 10 +++------- addons/mk6mortar/CfgVehicles.hpp | 9 +++------ addons/nametags/CfgVehicles.hpp | 9 +++------ addons/respawn/CfgVehicles.hpp | 17 +++++++---------- addons/switchunits/CfgVehicles.hpp | 4 ++-- addons/vehiclelock/CfgVehicles.hpp | 13 +++++-------- 12 files changed, 39 insertions(+), 59 deletions(-) diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp index 1adf622494..01e9bc7431 100644 --- a/addons/common/CfgVehicles.hpp +++ b/addons/common/CfgVehicles.hpp @@ -25,11 +25,8 @@ class CfgVehicles { // += needs a non inherited entry in that class, otherwise it simply overwrites //#include - class Logic; - class Module_F: Logic { - class ModuleDescription {}; - }; - class ACE_ModuleCheckPBOs: Module_F { + class ACE_Module; + class ACE_ModuleCheckPBOs: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Common_CheckPBO_DisplayName"; @@ -72,12 +69,12 @@ class CfgVehicles { }; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Common_CheckPBO_Description"; }; }; - class ACE_ModuleLSDVehicles: Module_F { + class ACE_ModuleLSDVehicles: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Common_LSDVehicles_DisplayName"; @@ -87,7 +84,7 @@ class CfgVehicles { isGlobal = 1; class Arguments { }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Common_LSDVehicles_Description"; sync[] = {"AnyVehicle"}; }; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 3f1e5a6308..dd13d10ec0 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {"ACE_Box_Misc", "ACE_bananaItem"}; weapons[] = {"ACE_ItemCore","ACE_FakePrimaryWeapon", "ACE_Banana"}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_main"}; + requiredAddons[] = {"ace_main","ace_modules"}; author[] = {"KoffeinFlummi"}; authorUrl = "https://github.com/KoffeinFlummi/"; VERSION_CONFIG; diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index 52f70ea3af..a091d927ac 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -1,8 +1,5 @@ -class Logic; -class Module_F: Logic { - class ModuleDescription {}; -}; -class ACE_ModuleExplosive: Module_F { +class ACE_Module; +class ACE_ModuleExplosive: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Explosive_Module_DisplayName"; diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index 16bb47014a..eaa765d814 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -94,8 +94,8 @@ class CfgVehicles { }; - class Module_F; - class ACE_ModuleHearing: Module_F { + class ACE_Module; + class ACE_ModuleHearing: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Hearing_Module_DisplayName"; diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 804aba1100..0f07accdee 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -1,7 +1,7 @@ class CfgVehicles { - class Module_F; - class ACE_ModuleInteraction: Module_F { + class ACE_Module; + class ACE_ModuleInteraction: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_InteractionSystem_Module_DisplayName"; diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp index a5194e015e..43db54628b 100644 --- a/addons/map/CfgVehicles.hpp +++ b/addons/map/CfgVehicles.hpp @@ -1,6 +1,7 @@ class CfgVehicles { - class Module_F; - class ACE_ModuleMap: Module_F { + + class ACE_Module; + class ACE_ModuleMap: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Map_Module_DisplayName"; @@ -39,6 +40,7 @@ class CfgVehicles { }; }; + class Module_F; class ACE_ModuleBlueForceTracking: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; diff --git a/addons/microdagr/CfgVehicles.hpp b/addons/microdagr/CfgVehicles.hpp index 949860742d..bd3164ac72 100644 --- a/addons/microdagr/CfgVehicles.hpp +++ b/addons/microdagr/CfgVehicles.hpp @@ -36,12 +36,8 @@ class CfgVehicles { }; }; - class Logic; - class Module_F: Logic { - class ArgumentsBaseUnits {}; - class ModuleDescription {}; - }; - class GVAR(dagrModule): Module_F { + class ACE_Module; + class GVAR(dagrModule): ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Dagr_Module_DisplayName"; @@ -62,7 +58,7 @@ class CfgVehicles { }; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Dagr_Module_Description"; }; }; diff --git a/addons/mk6mortar/CfgVehicles.hpp b/addons/mk6mortar/CfgVehicles.hpp index e4a9d0f2a5..5708f3c670 100644 --- a/addons/mk6mortar/CfgVehicles.hpp +++ b/addons/mk6mortar/CfgVehicles.hpp @@ -43,11 +43,8 @@ class CfgVehicles { }; }; - class Logic; - class Module_F: Logic { - class ModuleDescription {}; - }; - class GVAR(module): Module_F { + class ACE_Module; + class GVAR(module): ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_mk6mortar_Module_DisplayName"; @@ -76,7 +73,7 @@ class CfgVehicles { defaultValue = 1; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_mk6mortar_Module_Description"; }; }; diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index fabd3b09cb..50439218aa 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -1,9 +1,6 @@ class CfgVehicles { - class Logic; - class Module_F: Logic { - class ModuleDescription {}; - }; - class ACE_ModuleNameTags : Module_F { + class ACE_Module; + class ACE_ModuleNameTags: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_NameTags_Module_DisplayName"; @@ -65,7 +62,7 @@ class CfgVehicles { defaultValue = 0; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_NameTags_Module_Description"; }; }; diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp index e90f4ba08e..6fd60e6321 100644 --- a/addons/respawn/CfgVehicles.hpp +++ b/addons/respawn/CfgVehicles.hpp @@ -1,9 +1,6 @@ class CfgVehicles { - class Logic; - class Module_F: Logic { - class ModuleDescription {}; - }; - class ACE_ModuleRespawn: Module_F { + class ACE_Module; + class ACE_ModuleRespawn: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Respawn_Module_DisplayName"; @@ -27,12 +24,12 @@ class CfgVehicles { defaultValue = 1; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Respawn_Module_Description"; }; }; - class ACE_ModuleFriendlyFire: Module_F { + class ACE_ModuleFriendlyFire: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_FriendlyFire_Module_DisplayName"; @@ -42,12 +39,12 @@ class CfgVehicles { icon = QUOTE(PATHTOF(UI\Icon_Module_FriendlyFire_ca.paa)); class Arguments {}; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_FriendlyFire_Module_Description"; }; }; - class ACE_ModuleRallypoint: Module_F { + class ACE_ModuleRallypoint: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Rallypoint_Module_DisplayName"; @@ -57,7 +54,7 @@ class CfgVehicles { icon = QUOTE(PATHTOF(UI\Icon_Module_Rallypoint_ca.paa)); class Arguments {}; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Rallypoint_Module_Description"; }; }; diff --git a/addons/switchunits/CfgVehicles.hpp b/addons/switchunits/CfgVehicles.hpp index 0f76c78568..d2548448b1 100644 --- a/addons/switchunits/CfgVehicles.hpp +++ b/addons/switchunits/CfgVehicles.hpp @@ -1,6 +1,6 @@ class CfgVehicles { - class Module_F; - class ACE_ModuleSwitchUnits: Module_F { + class ACE_Module; + class ACE_ModuleSwitchUnits: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_SwitchUnits_Module_DisplayName"; diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 60cb67d4c4..1230fd5221 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -62,11 +62,8 @@ class CfgVehicles { MACRO_LOCK_ACTIONS }; - class Logic; - class Module_F: Logic { - class ModuleDescription {}; - }; - class ACE_VehicleLock_ModuleSetup: Module_F { + class ACE_Module; + class ACE_VehicleLock_ModuleSetup: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_VehicleLock_Module_DisplayName"; @@ -99,12 +96,12 @@ class CfgVehicles { defaultValue = "10"; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_VehicleLock_Module_Description"; }; }; - class ACE_VehicleLock_ModuleSyncedAssign: Module_F { + class ACE_VehicleLock_ModuleSyncedAssign: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_VehicleLock_VehicleKeyAssign_Module_DisplayName"; @@ -114,7 +111,7 @@ class CfgVehicles { icon = QUOTE(PATHTOF(UI\Icon_Module_VehicleKey_ca.paa)); functionPriority = 0; class Arguments {}; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_VehicleLock_VehicleKeyAssign_Module_Description"; sync[] = {"AnyPlayer", "AnyVehicle"}; }; From 84d940e69d91627ca9c51ed36b7e94d328b038d2 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 30 May 2015 00:31:07 -0500 Subject: [PATCH 127/252] Fix circular dependency - ModuleDescription --- addons/advanced_ballistics/config.cpp | 2 +- addons/common/CfgVehicles.hpp | 11 +++++++---- addons/explosives/CfgModule.hpp | 2 +- addons/medical/config.cpp | 2 +- addons/modules/config.cpp | 2 +- addons/vehiclelock/CfgVehicles.hpp | 8 ++++++-- addons/weather/config.cpp | 2 +- addons/zeus/config.cpp | 2 +- 8 files changed, 19 insertions(+), 12 deletions(-) diff --git a/addons/advanced_ballistics/config.cpp b/addons/advanced_ballistics/config.cpp index 1a2187783b..3f974b18df 100644 --- a/addons/advanced_ballistics/config.cpp +++ b/addons/advanced_ballistics/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_ballistics", "ace_weather", "ace_modules"}; + requiredAddons[] = {"ace_ballistics", "ace_weather"}; author[] = {"Ruthberg"}; authorUrl = "https://github.com/ulteq"; VERSION_CONFIG; diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp index 01e9bc7431..87d131934b 100644 --- a/addons/common/CfgVehicles.hpp +++ b/addons/common/CfgVehicles.hpp @@ -24,8 +24,11 @@ class CfgVehicles { // += needs a non inherited entry in that class, otherwise it simply overwrites //#include - - class ACE_Module; + class Logic; + class Module_F: Logic { + class ModuleDescription; + }; + class ACE_Module: Module_F {}; class ACE_ModuleCheckPBOs: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; @@ -69,7 +72,7 @@ class CfgVehicles { }; }; }; - class ModuleDescription { + class ModuleDescription: ModuleDescription { description = "$STR_ACE_Common_CheckPBO_Description"; }; }; @@ -84,7 +87,7 @@ class CfgVehicles { isGlobal = 1; class Arguments { }; - class ModuleDescription { + class ModuleDescription: ModuleDescription { description = "$STR_ACE_Common_LSDVehicles_Description"; sync[] = {"AnyVehicle"}; }; diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index a091d927ac..2bb8e18f96 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -21,7 +21,7 @@ class ACE_ModuleExplosive: ACE_Module { defaultValue = 1; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Explosive_Module_Description"; }; }; \ No newline at end of file diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index f86f5d166e..463ed95406 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {"ACE_medicalSupplyCrate", "ACE_medicalSupplyCrate_advanced", "ACE_fieldDressingItem", "ACE_packingBandageItem", "ACE_elasticBandageItem", "ACE_tourniquetItem", "ACE_morphineItem", "ACE_atropineItem", "ACE_epinephrineItem", "ACE_plasmaIVItem", "ACE_bloodIVItem", "ACE_salineIVItem", "ACE_quikclotItem", "ACE_personalAidKitItem", "ACE_surgicalKitItem", "ACE_bodyBagItem", "ACE_bodyBagObject"}; weapons[] = {"ACE_fieldDressing", "ACE_packingBandage", "ACE_elasticBandage", "ACE_tourniquet", "ACE_morphine", "ACE_atropine", "ACE_epinephrine", "ACE_plasmaIV", "ACE_plasmaIV_500", "ACE_plasmaIV_250", "ACE_bloodIV", "ACE_bloodIV_500", "ACE_bloodIV_250", "ACE_salineIV", "ACE_salineIV_500", "ACE_salineIV_250", "ACE_quikclot", "ACE_personalAidKit", "ACE_surgicalKit", "ACE_bodyBag"}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_interaction","ace_modules", "ace_apl"}; + requiredAddons[] = {"ace_interaction", "ace_apl"}; author[] = {"Glowbal", "KoffeinFlummi"}; authorUrl = ""; VERSION_CONFIG; diff --git a/addons/modules/config.cpp b/addons/modules/config.cpp index c5880e7bb1..ee96c5251f 100644 --- a/addons/modules/config.cpp +++ b/addons/modules/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; + requiredAddons[] = {}; author[] = {"Glowbal"}; authorUrl = ""; VERSION_CONFIG; diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 1230fd5221..6e07148262 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -62,7 +62,11 @@ class CfgVehicles { MACRO_LOCK_ACTIONS }; - class ACE_Module; + class Logic; + class Module_F: Logic { + class ModuleDescription; + }; + class ACE_Module: Module_F {}; class ACE_VehicleLock_ModuleSetup: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; @@ -111,7 +115,7 @@ class CfgVehicles { icon = QUOTE(PATHTOF(UI\Icon_Module_VehicleKey_ca.paa)); functionPriority = 0; class Arguments {}; - class ModuleDescription { + class ModuleDescription: ModuleDescription { description = "$STR_ACE_VehicleLock_VehicleKeyAssign_Module_Description"; sync[] = {"AnyPlayer", "AnyVehicle"}; }; diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp index 18059fe9e8..50e2f8ace0 100644 --- a/addons/weather/config.cpp +++ b/addons/weather/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common", "ace_modules"}; + requiredAddons[] = {"ace_common"}; author[] = {"q1184", "Rocko", "esteldunedain", "Ruthberg"}; VERSION_CONFIG; }; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 4bdc1cd5e1..5ea4212dbb 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common","ace_modules"}; + requiredAddons[] = {"ace_common"}; author[] = {"SilentSpike"}; authorUrl = "https://github.com/SilentSpike"; VERSION_CONFIG; From b49b2fa3d16370efa0aeb1981f3e00fe853f4d6a Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 30 May 2015 01:21:47 -0500 Subject: [PATCH 128/252] Send to RPT and Clipboard --- .../functions/fnc_debugDumpToClipboard.sqf | 68 ++++++++++--------- addons/optionsmenu/gui/settingsMenu.hpp | 1 + addons/optionsmenu/stringtable.xml | 3 + 3 files changed, 41 insertions(+), 31 deletions(-) diff --git a/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf index 350ba2a05e..04f66112e7 100644 --- a/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf +++ b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf @@ -15,43 +15,49 @@ */ #include "script_component.hpp" -private ["_var", "_unit"]; +private ["_var", "_unit", "_outputText", "_text"]; #define MIN_ARRAY_SIZE 10 -"ace_clipboard" callExtension "---ACE Debug--- -"; - -"ace_clipboard" callExtension format ["--Performance-- -diag_fps = %1 -count ace_common_waitAndExecArray = %2 -count cba_common_perFrameHandlerArray = %3 (max %4) -count diag_activeSQFScripts = %5 -count diag_activeSQSScripts = %6 -count diag_activeMissionFSMs = %7 - -", diag_fps, count ace_common_waitAndExecArray, {!isNil "_x"} count cba_common_perFrameHandlerArray, count cba_common_perFrameHandlerArray, count diag_activeSQFScripts, count diag_activeSQSScripts,count diag_activeMissionFSMs]; - -"ace_clipboard" callExtension "--Player-- -"; -if (isNull ACE_player) then { - "ace_clipboard" callExtension "Null - -"; -} else { - "ace_clipboard" callExtension format ["typeOf = %1 -animationState = %2 - -", typeOf ace_player, animationState ace_player]; +_outputText = { + diag_log text (_this select 0); + "ace_clipboard" callExtension ((_this select 0) + " +"); }; -"ace_clipboard" callExtension format ["--Array Info (count >= %1)-- -", MIN_ARRAY_SIZE]; +_text = format ["~~~~~~~~~ACE Debug~~~~~~~~~ +time = %1 + +------Performance------ +diag_fps = %2 +count ace_common_waitAndExecArray = %3 +count cba_common_perFrameHandlerArray = %4 (max %5) +count diag_activeSQFScripts = %6 +count diag_activeSQSScripts = %7 +count diag_activeMissionFSMs = %8", +time, diag_fps, count ace_common_waitAndExecArray, {!isNil "_x"} count cba_common_perFrameHandlerArray, count cba_common_perFrameHandlerArray, count diag_activeSQFScripts, count diag_activeSQSScripts,count diag_activeMissionFSMs]; +[_text] call _outputText; + + +_text = format [" +------Player------ +typeOf = %1 +animationState = %2", +if (isNull ace_player) then {"null"} else {typeOf ace_player}, +if (isNull ace_player) then {"null"} else {animationState ace_player}]; +[_text] call _outputText; + + +_text = format [" +------Array Info (count >= %1)------", MIN_ARRAY_SIZE]; +[_text] call _outputText; + + { _var = missionNamespace getVariable [_x, nil]; if(!isnil "_var" && {(typeName _var) == "ARRAY"} && {(count _var) > MIN_ARRAY_SIZE}) then { - "ace_clipboard" callExtension format ["%1 - ARRAY SIZE: %2 -", _x, (count _var)]; + _text = format ["%1 - ARRAY SIZE: %2", _x, (count _var)]; + [_text] call _outputText; }; } forEach (allVariables missionNamespace); @@ -60,8 +66,8 @@ animationState = %2 { _var = _unit getVariable [_x, nil]; if(!isnil "_var" && {(typeName _var) == "ARRAY"} && {(count _var) > MIN_ARRAY_SIZE}) then { - "ace_clipboard" callExtension format ["%1 on [%2] - ARRAY SIZE: %3 -", _x, _unit, (count _var)]; + _text = format ["%1 on [%2] - ARRAY SIZE: %3", _x, _unit, (count _var)]; + [_text] call _outputText; }; } forEach (allVariables _unit); } forEach allUnits; diff --git a/addons/optionsmenu/gui/settingsMenu.hpp b/addons/optionsmenu/gui/settingsMenu.hpp index 8da18a303b..15eb411019 100644 --- a/addons/optionsmenu/gui/settingsMenu.hpp +++ b/addons/optionsmenu/gui/settingsMenu.hpp @@ -253,6 +253,7 @@ class ACE_settingsMenu { text = "$STR_ACE_OptionsMenu_DumpDebug"; x = X_PART(26.5); action = QUOTE([] call FUNC(debugDumpToClipboard)); + tooltip = "$STR_ACE_OptionsMenu_DumpDebugTooltip"; }; }; }; diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index a39af6da9f..ce34356a66 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -299,5 +299,8 @@ Debug To Clipboard + + Sends debug information to RPT and clipboard. + From d7d225cebc8bc2cd4431c894bc15846b12c952a2 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 30 May 2015 01:28:15 -0500 Subject: [PATCH 129/252] Send waiting debug msg only once --- addons/common/XEH_postInit.sqf | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 07ffe970cb..b91d9b9a39 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -252,12 +252,17 @@ GVAR(commonPostInited) = true; // Create a pfh to wait until all postinits are ready and settings are initialized [{ + PARAMS_1(_args); + EXPLODE_1_PVT(_args,_waitingMsgSent); // If post inits are not ready then wait if !(SLX_XEH_MACHINE select 8) exitWith {}; // If settings are not initialized then wait if (isNil QGVAR(settings)) exitWith { - diag_log text format["[ACE] Waiting on settings from server"]; + if (!_waitingMsgSent) then { + _args set [0, true]; + diag_log text format["[ACE] Waiting on settings from server"]; + }; }; [(_this select 1)] call cba_fnc_removePerFrameHandler; @@ -275,4 +280,4 @@ GVAR(commonPostInited) = true; //Event that settings are safe to use: ["SettingsInitialized", []] call FUNC(localEvent); -}, 0, []] call cba_fnc_addPerFrameHandler; +}, 0, [false]] call cba_fnc_addPerFrameHandler; From 5746128a0fd304c9bb92892b3531286dfd8084e8 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 30 May 2015 20:06:55 +0200 Subject: [PATCH 130/252] Further improved error handling when AB is enabled with incomplete configs: * Calculates correct solutions when parts of the ammo config are missing * Calculates correct solutions when parts of the weapon config are missing * Performance improvement when AB is enabled --- .../functions/fnc_calculateSolution.sqf | 20 ++++-- .../functions/fnc_updateRangeCard.sqf | 62 ++++++++++--------- 2 files changed, 49 insertions(+), 33 deletions(-) diff --git a/addons/rangecard/functions/fnc_calculateSolution.sqf b/addons/rangecard/functions/fnc_calculateSolution.sqf index d8f0fe0cac..ea86d9986e 100644 --- a/addons/rangecard/functions/fnc_calculateSolution.sqf +++ b/addons/rangecard/functions/fnc_calculateSolution.sqf @@ -24,7 +24,9 @@ * 18: Stability factor * 19: Twist Direction * 20: Latitude - * 21: Range Card Slot + * 21: Direction of Fire + * 22: Range Card Slot + * 23: Use advanced ballistics config? * * Return Value: * 0: Elevation (MOA) @@ -44,7 +46,7 @@ */ #include "script_component.hpp" -private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire", "_rangeCardSlot"]; +private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire", "_rangeCardSlot", "_useABConfig"]; _scopeBaseAngle = _this select 0; _bulletMass = _this select 1; _boreHeight = _this select 2; @@ -69,6 +71,7 @@ _twistDirection = _this select 19; _latitude = _this select 20; _directionOfFire = _this select 21; _rangeCardSlot = _this select 22; +_useABConfig = _this select 23; if (_storeRangeCardData) then { GVAR(rangeCardDataMVs) set [_rangeCardSlot, format[" %1", round(_muzzleVelocity)]]; @@ -109,10 +112,17 @@ private ["_wind1", "_wind2", "_windDrift"]; _wind1 = [cos(270 - _windDirection * 30) * _windSpeed1, sin(270 - _windDirection * 30) * _windSpeed1, 0]; _wind2 = [cos(270 - _windDirection * 30) * _windSpeed2, sin(270 - _windDirection * 30) * _windSpeed2, 0]; _windDrift = 0; -if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { +if (_useABConfig) then { _bc = [_bc, _temperature, _barometricPressure, _relativeHumidity, _atmosphereModel] call EFUNC(advanced_ballistics,calculateAtmosphericCorrection); }; +private ["_airFrictionCoef", "_airDensity"]; +_airFrictionCoef = 1; +if (!_useABConfig && (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])) then { + _airDensity = [_temperature, _barometricPressure, _relativeHumidity] call EFUNC(weather,calculateAirDensity); + _airFrictionCoef = _airDensity / 1.22498; +}; + private ["_speedTotal", "_stepsTotal", "_speedAverage"]; _speedTotal = 0; _stepsTotal = 0; @@ -139,7 +149,7 @@ while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do { _trueVelocity = _bulletVelocity vectorDiff _wind1; _trueSpeed = vectorMagnitude _trueVelocity; - if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + if (_useABConfig) then { _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then { parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed])) } else { @@ -147,7 +157,7 @@ while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do { }; _bulletAccel = (vectorNormalized _trueVelocity) vectorMultiply (-1 * _drag); } else { - _bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction); + _bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction * _airFrictionCoef); }; _bulletAccel = _bulletAccel vectorAdd _gravity; diff --git a/addons/rangecard/functions/fnc_updateRangeCard.sqf b/addons/rangecard/functions/fnc_updateRangeCard.sqf index d58e7ff6bb..4c3a1626ee 100644 --- a/addons/rangecard/functions/fnc_updateRangeCard.sqf +++ b/addons/rangecard/functions/fnc_updateRangeCard.sqf @@ -20,7 +20,8 @@ disableSerialization; #define __dsp (uiNamespace getVariable "RangleCard_Display") -private ["_airFriction", "_ammoConfig", "_atmosphereModel", "_barometricPressure", "_barrelLength", "_barrelTwist", "_bc", "_boreHeight", "_cacheEntry", "_column", "_control", "_dragModel", "_i", "_muzzleVelocity", "_mv", "_mvShift", "_offset", "_relativeHumidity", "_result", "_row", "_scopeBaseAngle", "_weaponConfig", "_zeroRange", "_initSpeed", "_initSpeedCoef"]; +private ["_airFriction", "_ammoConfig", "_atmosphereModel", "_barometricPressure", "_barrelLength", "_barrelTwist", "_bc", "_bulletMass", "_boreHeight", "_cacheEntry", "_column", "_control", "_dragModel", "_i", "_muzzleVelocity", "_mv", "_mvShift", "_offset", "_relativeHumidity", "_result", "_row", "_scopeBaseAngle", "_weaponConfig", "_zeroRange", "_initSpeed", "_initSpeedCoef", "_useABConfig"]; +_useABConfig = (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]); PARAMS_3(_ammoClass,_magazineClass,_weaponClass); @@ -80,14 +81,6 @@ lnbClear 770200; lnbClear 770300; lnbClear 770400; -lnbAddRow [770100, ["4mps Wind(MRADs)", "1mps LEAD(MRADs)"]]; -if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { - lnbAddRow [770100, ["Air/Ammo Temp", "Air/Ammo Temp"]]; - - lnbAddRow [770200, ["-15°C", " -5°C", " 5°C", " 10°C", " 15°C", " 20°C", " 25°C", " 30°C", " 35°C"]]; - lnbAddRow [770300, ["-15°C", " 10°C", " 35°C", "-15°C", " 10°C", " 35°C"]]; -}; - GVAR(rangeCardDataElevation) = [[], [], [], [], [], [], [], [], []]; GVAR(rangeCardDataWindage) = [[], [], [], [], [], [], [], [], []]; GVAR(rangeCardDataLead) = [[], [], [], [], [], [], [], [], []]; @@ -105,7 +98,22 @@ _airFriction = _ammoConfig select 0; _barrelTwist = _weaponConfig select 0; _barrelLength = _weaponConfig select 2; _muzzleVelocity = 0; -if (_barrelLength > 0 && missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + +_bc = 0; +if (count (_ammoConfig select 6) > 0) then { + _bc = (_ammoConfig select 6) select 0; +}; +_dragModel = _ammoConfig select 5; +_atmosphereModel = _ammoConfig select 8; +_bulletMass = 5; +_boreHeight = 3.81; +_zeroRange = 100; + +if (_bc == 0) then { + _useABConfig = false; +}; + +if (_barrelLength > 0 && _useABConfig) then { _muzzleVelocity = [_barrelLength, _ammoConfig select 10, _ammoConfig select 11, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift); } else { _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazineClass >> "initSpeed"); @@ -119,7 +127,7 @@ if (_barrelLength > 0 && missionNamespace getVariable [QEGVAR(advanced_ballistic _muzzleVelocity = _initSpeed; }; -if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { +if (_useABConfig) then { ctrlSetText [770000, format["%1'' - %2 gr (%3)", round((_ammoConfig select 1) * 39.3700787) / 1000, round((_ammoConfig select 3) * 15.4323584), _ammoClass]]; if (_barrelLength > 0 && _barrelTwist > 0) then { ctrlSetText [770002, format["Barrel: %1'' 1:%2'' twist", round(_barrelLength * 0.0393700787), round(_barrelTwist * 0.0393700787)]]; @@ -128,14 +136,16 @@ if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) t }; } else { ctrlSetText [770000, getText (configFile >> "CfgMagazines" >> _magazineClass >> "displayNameShort")]; - ctrlSetText [770002, ""]; + ctrlSetText [770002, getText (configFile >> "CfgWeapons" >> _weaponClass >> "displayName")]; }; -_bc = (_ammoConfig select 6) select 0; -_dragModel = _ammoConfig select 5; -_atmosphereModel = _ammoConfig select 8; -_boreHeight = 3.81; -_zeroRange = 100; +lnbAddRow [770100, ["4mps Wind(MRADs)", "1mps LEAD(MRADs)"]]; +if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + lnbAddRow [770100, ["Air/Ammo Temp", "Air/Ammo Temp"]]; + + lnbAddRow [770200, ["-15°C", " -5°C", " 5°C", " 10°C", " 15°C", " 20°C", " 25°C", " 30°C", " 35°C"]]; + lnbAddRow [770300, ["-15°C", " 10°C", " 35°C", "-15°C", " 10°C", " 35°C"]]; +}; _barometricPressure = 1013.25; if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { @@ -147,27 +157,23 @@ if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) t ctrlSetText [770001, format["Drop Tables for B.P.: %1mb; Corrected for MVV at Air/Ammo Temperatures -15-35 °C", round(_barometricPressure * 100) / 100]]; ctrlSetText [77004 , format["B.P.: %1mb", round(_barometricPressure * 100) / 100]]; } else { - ctrlSetText [770001, getText (configFile >> "CfgWeapons" >> _weaponClass >> "displayName")]; + ctrlSetText [770001, ""]; ctrlSetText [77004 , ""]; }; _cacheEntry = missionNamespace getVariable format[QGVAR(%1_%2_%3), _ammoClass, _weaponClass, missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]]; if (isNil {_cacheEntry}) then { + _result = [0, 0, _boreHeight, _airFriction, _muzzleVelocity, 15, 1013.25, 0.5, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0, 0, _useABConfig] call FUNC(calculateSolution); + _scopeBaseAngle = (_result select 0) / 60; if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { { _mvShift = [_ammoConfig select 9, _x] call EFUNC(advanced_ballistics,calculateAmmoTemperatureVelocityShift); _mv = _muzzleVelocity + _mvShift; - _result = [0, 0, _boreHeight, _airFriction, _mv, _x, 1013.25, 0.5, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculateSolution); - _scopeBaseAngle = (_result select 0) / 60; - - [_scopeBaseAngle,27,_boreHeight,_airFriction,_mv,_x,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,_forEachIndex] call FUNC(calculateSolution); + [_scopeBaseAngle,_bulletMass,_boreHeight,_airFriction,_mv,_x,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,_forEachIndex,_useABConfig] call FUNC(calculateSolution); } forEach [-15, -5, 5, 10, 15, 20, 25, 30, 35]; - } else { - _result = [0, 0, _boreHeight, _airFriction, _muzzleVelocity, _x, 1013.25, 0.5, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculateSolution); - _scopeBaseAngle = (_result select 0) / 60; - - [_scopeBaseAngle,27,_boreHeight,_airFriction,_muzzleVelocity,_x,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,3] call FUNC(calculateSolution); + } else { + [_scopeBaseAngle,_bulletMass,_boreHeight,_airFriction,_muzzleVelocity,15,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,3,_useABConfig] call FUNC(calculateSolution); }; for "_i" from 0 to 9 do { @@ -234,7 +240,7 @@ for "_column" from 0 to 8 do { }; } forEach [0, 3, 8]; -if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { +if (_useABConfig) then { ctrlSetText [770020, "For best results keep ammunition at ambient air temperature. Tables calculated for the above listed barrel"]; ctrlSetText [770021, "and load with optic mounted 1.5'' above line of bore."]; } else { From 66ceaa1d318474438a8283d7250962646174f3b1 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 30 May 2015 20:09:53 +0200 Subject: [PATCH 131/252] Fixed IS_STRING error due to regex replacing it with LSTRING --- addons/common/functions/fnc_hashGet.sqf | 2 +- addons/laser/functions/fnc_seekerFindLaserSpot.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/common/functions/fnc_hashGet.sqf b/addons/common/functions/fnc_hashGet.sqf index ae1e553676..6b47b98ad9 100644 --- a/addons/common/functions/fnc_hashGet.sqf +++ b/addons/common/functions/fnc_hashGet.sqf @@ -13,7 +13,7 @@ try { _index = (_hash select 0) find _key; if(_index != -1) then { _val = (_hash select 1) select _index; - if(IS_LSTRING(_val) && {_val == "ACREHASHREMOVEDONOTUSETHISVAL"}) then { + if(IS_STRING(_val) && {_val == "ACREHASHREMOVEDONOTUSETHISVAL"}) then { _val = nil; }; }; diff --git a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf index c0112ab412..346aec837e 100644 --- a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf +++ b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf @@ -48,7 +48,7 @@ _finalOwner = nil; if(IS_CODE(_method)) then { _laser = _x call _method; } else { - if(IS_LSTRING(_method)) then { + if(IS_STRING(_method)) then { _laser = _x call (missionNamespace getVariable [_method, {}]); } else { if(IS_ARRAY(_method)) then { From 6f1c6ae8c1df4c2a8829b5468200c84e05418de1 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 30 May 2015 20:33:32 +0200 Subject: [PATCH 132/252] Added missing ammo class --- optionals/compat_cup/CfgAmmo.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp index 58f61aedce..5c391f4f18 100644 --- a/optionals/compat_cup/CfgAmmo.hpp +++ b/optionals/compat_cup/CfgAmmo.hpp @@ -94,6 +94,19 @@ class CfgAmmo ACE_muzzleVelocities[]={650, 716, 750}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; + class B_762x39mm_KLT: BulletBase + { + ACE_caliber=7.823; + ACE_bulletLength=28.956; + ACE_bulletMass=7.5816; + ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; + ACE_ballisticCoefficients[]={0.275}; + ACE_velocityBoundaries[]={}; + ACE_standardAtmosphere="ICAO"; + ACE_dragModel=1; + ACE_muzzleVelocities[]={650, 716, 750}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; + }; class CUP_B_9x18_Ball: BulletBase { ACE_caliber=9.271; From 872501dad2fd14e7511c7a1142809cd4f9ee1a9b Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 30 May 2015 21:20:17 +0200 Subject: [PATCH 133/252] Removed newline brackets --- optionals/compat_cup/CfgAmmo.hpp | 99 +++++++++++--------------------- 1 file changed, 33 insertions(+), 66 deletions(-) diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp index 5c391f4f18..7c37be48f8 100644 --- a/optionals/compat_cup/CfgAmmo.hpp +++ b/optionals/compat_cup/CfgAmmo.hpp @@ -3,8 +3,7 @@ class CfgAmmo class BulletBase; class B_762x51_Ball; class B_127x99_Ball; - class CUP_B_545x39_Ball: BulletBase - { + class CUP_B_545x39_Ball: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.42792; @@ -16,8 +15,7 @@ class CfgAmmo ACE_muzzleVelocities[]={780, 880, 920}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball - { + class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -29,8 +27,7 @@ class CfgAmmo ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_545x39_Ball_Tracer_Red: BulletBase - { + class CUP_B_545x39_Ball_Tracer_Red: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -42,8 +39,7 @@ class CfgAmmo ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_545x39_Ball_Tracer_White: BulletBase - { + class CUP_B_545x39_Ball_Tracer_White: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -55,8 +51,7 @@ class CfgAmmo ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase - { + class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -68,8 +63,7 @@ class CfgAmmo ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_762x39_Ball: BulletBase - { + class CUP_B_762x39_Ball: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.9704; @@ -81,8 +75,7 @@ class CfgAmmo ACE_muzzleVelocities[]={650, 716, 750}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_762x39_Ball_Tracer_Green: BulletBase - { + class CUP_B_762x39_Ball_Tracer_Green: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.5816; @@ -94,8 +87,7 @@ class CfgAmmo ACE_muzzleVelocities[]={650, 716, 750}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class B_762x39mm_KLT: BulletBase - { + class B_762x39mm_KLT: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.5816; @@ -107,8 +99,7 @@ class CfgAmmo ACE_muzzleVelocities[]={650, 716, 750}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_9x18_Ball: BulletBase - { + class CUP_B_9x18_Ball: BulletBase { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -120,8 +111,7 @@ class CfgAmmo ACE_muzzleVelocities[]={298, 330, 350}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; - class CUP_B_9x18_Ball_Tracer_Green: BulletBase - { + class CUP_B_9x18_Ball_Tracer_Green: BulletBase { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -133,8 +123,7 @@ class CfgAmmo ACE_muzzleVelocities[]={298, 330, 350}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; - class CUP_B_9x18_Ball_Tracer_Red: BulletBase - { + class CUP_B_9x18_Ball_Tracer_Red: BulletBase { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -146,8 +135,7 @@ class CfgAmmo ACE_muzzleVelocities[]={298, 330, 350}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; - class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase - { + class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -159,8 +147,7 @@ class CfgAmmo ACE_muzzleVelocities[]={298, 330, 350}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; - class CUP_B_9x18_Ball_White_Tracer: BulletBase - { + class CUP_B_9x18_Ball_White_Tracer: BulletBase { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -172,8 +159,7 @@ class CfgAmmo ACE_muzzleVelocities[]={298, 330, 350}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; - class CUP_B_9x19_Ball: BulletBase - { + class CUP_B_9x19_Ball: BulletBase { ACE_caliber=9.017; ACE_bulletLength=15.494; ACE_bulletMass=8.0352; @@ -185,8 +171,7 @@ class CfgAmmo ACE_muzzleVelocities[]={340, 370, 400}; ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; - class CUP_B_762x51_noTracer: B_762x51_Ball - { + class CUP_B_762x51_noTracer: B_762x51_Ball { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -198,8 +183,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_303_Ball: BulletBase - { + class CUP_B_303_Ball: BulletBase { ACE_caliber=7.899; ACE_bulletLength=31.166; ACE_bulletMass=11.2752; @@ -211,8 +195,7 @@ class CfgAmmo ACE_muzzleVelocities[]={748, 761, 765}; ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; - class CUP_B_127x107_Ball_Green_Tracer: BulletBase - { + class CUP_B_127x107_Ball_Green_Tracer: BulletBase { ACE_caliber=12.979; ACE_bulletLength=64.008; ACE_bulletMass=48.276; @@ -224,8 +207,7 @@ class CfgAmmo ACE_muzzleVelocities[]={820}; ACE_barrelLengths[]={728.98}; }; - class CUP_B_127x108_Ball_Green_Tracer: BulletBase - { + class CUP_B_127x108_Ball_Green_Tracer: BulletBase { ACE_caliber=12.979; ACE_bulletLength=64.008; ACE_bulletMass=48.276; @@ -237,8 +219,7 @@ class CfgAmmo ACE_muzzleVelocities[]={820}; ACE_barrelLengths[]={728.98}; }; - class CUP_B_762x54_Ball_White_Tracer: BulletBase - { + class CUP_B_762x54_Ball_White_Tracer: BulletBase { ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.6552; @@ -250,8 +231,7 @@ class CfgAmmo ACE_muzzleVelocities[]={680, 750, 798, 800}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_762x54_Ball_Red_Tracer: BulletBase - { + class CUP_B_762x54_Ball_Red_Tracer: BulletBase { ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.6552; @@ -263,8 +243,7 @@ class CfgAmmo ACE_muzzleVelocities[]={680, 750, 798, 800}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_762x54_Ball_Green_Tracer: BulletBase - { + class CUP_B_762x54_Ball_Green_Tracer: BulletBase { ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.6552; @@ -276,8 +255,7 @@ class CfgAmmo ACE_muzzleVelocities[]={680, 750, 798, 800}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase - { + class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase { ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.6552; @@ -289,8 +267,7 @@ class CfgAmmo ACE_muzzleVelocities[]={680, 750, 798, 800}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_9x39_SP5: BulletBase - { + class CUP_B_9x39_SP5: BulletBase { ACE_caliber=9.246; ACE_bulletLength=31.496; ACE_bulletMass=16.2; @@ -302,8 +279,7 @@ class CfgAmmo ACE_muzzleVelocities[]={280, 300, 320}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_762x51_Tracer_Green: BulletBase - { + class CUP_B_762x51_Tracer_Green: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -315,8 +291,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_762x51_Tracer_Red: BulletBase - { + class CUP_B_762x51_Tracer_Red: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -328,8 +303,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_762x51_Tracer_Yellow: BulletBase - { + class CUP_B_762x51_Tracer_Yellow: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -341,8 +315,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_762x51_Tracer_White: BulletBase - { + class CUP_B_762x51_Tracer_White: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -354,8 +327,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; - class B_127x107_Ball: BulletBase - { + class B_127x107_Ball: BulletBase { ACE_caliber=12.979; ACE_bulletLength=64.008; ACE_bulletMass=48.276; @@ -367,8 +339,7 @@ class CfgAmmo ACE_muzzleVelocities[]={820}; ACE_barrelLengths[]={728.98}; }; - class CUP_B_9x18_SD: BulletBase - { + class CUP_B_9x18_SD: BulletBase { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -380,8 +351,7 @@ class CfgAmmo ACE_muzzleVelocities[]={298, 330, 340}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; - class CUP_B_765x17_Ball: BulletBase - { + class CUP_B_765x17_Ball: BulletBase { ACE_caliber=7.938; ACE_bulletLength=15.494; ACE_bulletMass=4.212; @@ -393,8 +363,7 @@ class CfgAmmo ACE_muzzleVelocities[]={282, 300, 320}; ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; - class CUP_B_145x115_AP_Green_Tracer: BulletBase - { + class CUP_B_145x115_AP_Green_Tracer: BulletBase { ACE_caliber=14.884; ACE_bulletLength=50.8; ACE_bulletMass=65.448; @@ -406,8 +375,7 @@ class CfgAmmo ACE_muzzleVelocities[]={1000}; ACE_barrelLengths[]={1346.2}; }; - class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball - { + class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball { ACE_caliber=12.954; ACE_bulletLength=58.674; ACE_bulletMass=41.9256; @@ -419,8 +387,7 @@ class CfgAmmo ACE_muzzleVelocities[]={853}; ACE_barrelLengths[]={736.6}; }; - class CUP_B_86x70_Ball_noTracer: BulletBase - { + class CUP_B_86x70_Ball_noTracer: BulletBase { ACE_caliber=8.585; ACE_bulletLength=43.18; ACE_bulletMass=19.44; From 9936af3e4c3beaba2a5f4d037a78c0bcc6c08b0c Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 30 May 2015 21:20:40 +0200 Subject: [PATCH 134/252] Added config entries for all cup weapon classes --- optionals/compat_cup/CfgWeapons.hpp | 335 ++++++++++++++++++++++++++++ optionals/compat_cup/config.cpp | 1 + 2 files changed, 336 insertions(+) create mode 100644 optionals/compat_cup/CfgWeapons.hpp diff --git a/optionals/compat_cup/CfgWeapons.hpp b/optionals/compat_cup/CfgWeapons.hpp new file mode 100644 index 0000000000..a55e721e90 --- /dev/null +++ b/optionals/compat_cup/CfgWeapons.hpp @@ -0,0 +1,335 @@ +class CfgWeapons +{ + class Pistol_Base_F; + class Rifle_Base_F; + class Rifle_Long_Base_F; + class CUP_hgun_Colt1911 : Pistol_Base_F { + ACE_barrelTwist=406.4; + ACE_barrelLength=127.0; + }; + class CUP_sgun_AA12 : Rifle_Base_F { + ACE_barrelTwist=0.0; + ACE_twistDirection=0; + ACE_barrelLength=457.2; + }; + class CUP_arifle_AK_Base : Rifle_Base_F { + ACE_barrelTwist=240.03; + ACE_barrelLength=414.02; + }; + class CUP_arifle_AK107_Base : CUP_arifle_AK_Base { + ACE_barrelTwist=199.898; + ACE_barrelLength=414.02; + }; + class CUP_arifle_AKS_Base : CUP_arifle_AK_Base { + ACE_barrelTwist=199.898; + ACE_barrelLength=414.02; + }; + class CUP_arifle_AKS74U : CUP_arifle_AK_Base { + ACE_barrelTwist=160.02; + ACE_barrelLength=210.82; + }; + class CUP_arifle_AK74; + class CUP_arifle_RPK74 : CUP_arifle_AK74 { + ACE_barrelTwist=195.072; + ACE_barrelLength=589.28; + }; + class CUP_srifle_AS50 : Rifle_Long_Base_F { + ACE_barrelTwist=381.0; + ACE_barrelLength=736.6; + }; + class CUP_srifle_AWM_Base : Rifle_Long_Base_F { + ACE_barrelTwist=279.4; + ACE_barrelLength=685.8; + }; + class CUP_smg_bizon : Rifle_Base_F { + ACE_barrelTwist=240.03; + ACE_barrelLength=231.14; + }; + class CUP_hgun_Compact : Pistol_Base_F { + ACE_barrelTwist=248.92; + ACE_barrelLength=94.996; + }; + class CUP_srifle_CZ750 : Rifle_Long_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=660.4; + }; + class CUP_arifle_CZ805_Base : Rifle_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=355.6; + }; + class CUP_arifle_CZ805_A1 : CUP_arifle_CZ805_Base { + ACE_barrelTwist=304.8; + ACE_barrelLength=355.6; + }; + class CUP_arifle_CZ805_A2 : CUP_arifle_CZ805_Base { + ACE_barrelTwist=304.8; + ACE_barrelLength=276.86; + }; + class CUP_srifle_DMR : Rifle_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=558.8; + }; + class CUP_hgun_Duty : Pistol_Base_F { + ACE_barrelTwist=248.92; + ACE_barrelLength=94.996; + }; + class CUP_arifle_FNFAL : Rifle_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=533.4; + }; + class CUP_arifle_G36_Base; + class CUP_arifle_G36A : CUP_arifle_G36_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=480; + }; + class CUP_arifle_G36K : CUP_arifle_G36A { + ACE_barrelTwist=177.8; + ACE_barrelLength=318; + }; + class CUP_arifle_G36C : Rifle_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=228; + }; + class CUP_arifle_MG36 : CUP_arifle_G36C { + ACE_barrelTwist=177.8; + ACE_barrelLength=480; + }; + class CUP_hgun_Glock17 : Pistol_Base_F { + ACE_barrelTwist=248.92; + ACE_barrelLength=114.046; + }; + class CUP_srifle_CZ550 : Rifle_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=599.999; + }; + class CUP_srifle_ksvk : Rifle_Base_F { + ACE_barrelTwist=457.2; + ACE_barrelLength=999.998; + }; + class CUP_lmg_L7A2 : Rifle_Long_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=629.92; + }; + class CUP_arifle_L85A2_Base : Rifle_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=518.16; + }; + class CUP_arifle_L86A2_Base: Rifle_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=646; + }; + class CUP_lmg_L110A1 : Rifle_Long_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=347.98; + }; + class CUP_srifle_LeeEnfield : Rifle_Base_F { + ACE_barrelTwist=254.0; + ACE_barrelLength=640.08; + }; + class CUP_hgun_M9 : Pistol_Base_F { + ACE_barrelTwist=248.92; + ACE_barrelLength=124.46; + }; + class CUP_srifle_M14 : Rifle_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=558.8; + }; + class CUP_arifle_M16_Base : Rifle_Base_F { + ACE_barrelTwist=355.6; + ACE_barrelLength=508.0; + }; + class CUP_arifle_M16A4_Base; + class CUP_arifle_M4_Base : CUP_arifle_M16A4_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=368.3; + }; + class CUP_arifle_M4A1; + class CUP_srifle_Mk12SPR : CUP_arifle_M4A1 { + ACE_barrelTwist=177.8; + ACE_barrelLength=457.2; + }; + class CUP_srifle_M24_des : Rifle_Base_F { + ACE_barrelTwist=285.75; + ACE_barrelLength=609.6; + }; + class CUP_lmg_M60A4 : Rifle_Long_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=431.8; + }; + class CUP_srifle_M107_Base : Rifle_Long_Base_F { + ACE_barrelTwist=381.0; + ACE_barrelLength=736.6; + }; + class CUP_srifle_M110 : Rifle_Base_F { + ACE_barrelTwist=279.4; + ACE_barrelLength=508.0; + }; + class CUP_lmg_M240 : Rifle_Long_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=629.92; + }; + class CUP_lmg_M249_para : Rifle_Long_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=414.02; + }; + class CUP_lmg_M249 : Rifle_Long_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=457.2; + }; + class CUP_sgun_M1014 : Rifle_Base_F { + ACE_twistDirection=0; + ACE_barrelTwist=0.0; + ACE_barrelLength=469.9; + }; + class CUP_hgun_Makarov : Pistol_Base_F { + ACE_barrelTwist=240.03; + ACE_barrelLength=93.472; + }; + class CUP_hgun_MicroUzi : Pistol_Base_F { + ACE_barrelTwist=248.92; + ACE_barrelLength=127.0; + }; + class CUP_lmg_Mk48_Base : Rifle_Long_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=501.65; + }; + class CUP_smg_MP5SD6 : Rifle_Base_F { + ACE_barrelTwist=254.0; + ACE_barrelLength=144.78; + }; + class CUP_smg_MP5A5 : CUP_smg_MP5SD6 { + ACE_barrelTwist=254.0; + ACE_barrelLength=226.06; + }; + class CUP_hgun_PB6P9 : Pistol_Base_F { + ACE_barrelTwist=240.03; + ACE_barrelLength=104.14; + }; + class CUP_hgun_Phantom : Pistol_Base_F { + ACE_barrelTwist=246.38; + ACE_barrelLength=119.38; + }; + class CUP_lmg_PKM : Rifle_Long_Base_F { + ACE_barrelTwist=240.03; + ACE_barrelLength=645.16; + }; + class CUP_lmg_Pecheneg : CUP_lmg_PKM { + ACE_barrelTwist=240.03; + ACE_barrelLength=657.86; + }; + class CUP_hgun_TaurusTracker455 : Pistol_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=101.6; + }; + class CUP_arifle_Sa58_base; + class CUP_arifle_Sa58P : CUP_arifle_Sa58_base { + ACE_barrelTwist=240.03; + ACE_barrelLength=391.16; + }; + class CUP_arifle_Sa58V : CUP_arifle_Sa58P { + ACE_barrelTwist=240.03; + ACE_barrelLength=391.16; + }; + class CUP_hgun_SA61 : Pistol_Base_F { + ACE_barrelTwist=406.4; + ACE_barrelLength=114.3; + }; + class CUP_sgun_Saiga12K: Rifle_Base_F { + ACE_barrelTwist=0.0; + ACE_twistDirection=0; + ACE_barrelLength=429.26; + }; + class CUP_arifle_SCAR_L_Base; + class CUP_arifle_Mk16_CQC : CUP_arifle_SCAR_L_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=254.0; + }; + class CUP_arifle_Mk16_STD : CUP_arifle_SCAR_L_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=355.6; + }; + class CUP_arifle_Mk16_SV : CUP_arifle_SCAR_L_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=457.2; + }; + class CUP_arifle_Mk17_Base; + class CUP_arifle_Mk17_CQC : CUP_arifle_Mk17_Base { + ACE_barrelTwist=304.8; + ACE_barrelLength=330.2; + }; + class CUP_arifle_Mk17_STD : CUP_arifle_Mk17_Base { + ACE_barrelTwist=304.8; + ACE_barrelLength=406.4; + }; + class CUP_arifle_Mk20 : CUP_arifle_Mk17_Base { + ACE_barrelTwist=304.8; + ACE_barrelLength=508.0; + }; + class CUP_srifle_SVD : Rifle_Base_F { + ACE_barrelTwist=238.76; + ACE_barrelLength=619.76; + }; + class CUP_lmg_UK59 : Rifle_Long_Base_F { + ACE_barrelTwist=381.0; + ACE_barrelLength=551.18; + }; + class MGun; + class CUP_DSHKM_W : MGun { + ACE_barrelTwist=381.0; + ACE_barrelLength=1069.34; + }; + class CUP_KPVT_W : MGun { + ACE_barrelTwist=454.914; + ACE_barrelLength=1346.2; + }; + class CUP_M242_W; + class CUP_KPVB_W : CUP_M242_W { + ACE_barrelTwist=454.914; + ACE_barrelLength=1346.2; + }; + class MGunCore; + class CUP_M134 : MGunCore { + ACE_barrelTwist=304.8; + ACE_barrelLength=558.8; + }; + class CUP_M240_veh_W : Rifle_Long_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=629.92; + }; + class CUP_PKT_W : MGun { + ACE_barrelTwist=240.03; + ACE_barrelLength=722.122; + }; + class CUP_srifle_VSSVintorez : Rifle_Base_F { + ACE_barrelTwist=210.82; + ACE_barrelLength=200.66; + }; + class CUP_arifle_XM8_Base : Rifle_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=317.5; + }; + class CUP_arifle_XM8_Carbine : CUP_arifle_XM8_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=317.5; + }; + class CUP_arifle_xm8_sharpshooter : CUP_arifle_XM8_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=508.0; + }; + class CUP_arifle_xm8_SAW : CUP_arifle_XM8_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=508.0; + }; + class CUP_arifle_XM8_Compact : CUP_arifle_XM8_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=228.6; + }; + class CUP_arifle_XM8_Railed_Base : Rifle_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=317.5; + }; + class CUP_arifle_XM8_Carbine_FG : CUP_arifle_XM8_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=317.5; + }; +}; \ No newline at end of file diff --git a/optionals/compat_cup/config.cpp b/optionals/compat_cup/config.cpp index e4f26f8051..66a0a9f967 100644 --- a/optionals/compat_cup/config.cpp +++ b/optionals/compat_cup/config.cpp @@ -12,3 +12,4 @@ class CfgPatches { }; #include "CfgAmmo.hpp" +#include "CfgWeapons.hpp" From e41c51966b17206ac691e22254b6293099b84aa4 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 30 May 2015 21:51:24 +0200 Subject: [PATCH 135/252] Added cup scopes config entries --- optionals/compat_cup/CfgWeapons.hpp | 164 ++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) diff --git a/optionals/compat_cup/CfgWeapons.hpp b/optionals/compat_cup/CfgWeapons.hpp index a55e721e90..4c62c0638a 100644 --- a/optionals/compat_cup/CfgWeapons.hpp +++ b/optionals/compat_cup/CfgWeapons.hpp @@ -332,4 +332,168 @@ class CfgWeapons ACE_barrelTwist=177.8; ACE_barrelLength=317.5; }; + + class ItemCore; + class InventoryOpticsItem_Base_F; + + class CUP_optic_SB_3_12x50_PMII : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class LRR { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + class CUP_optic_LeupoldMk4 : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class LRR { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + class CUP_optic_Leupold_VX3 : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class StepScope { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + class CUP_optic_AN_PVS_10 : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class NVScope { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + class CUP_optic_LeupoldM3LR : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class LRR { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + class CUP_optic_LeupoldMk4_10x40_LRT_Desert : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class LRR { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + class CUP_optic_LeupoldMk4_MRT_tan : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class MRT { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + class CUP_optic_SB_11_4x20_PM : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -0.1, 10.1 }; + ACE_ScopeAdjust_Horizontal[] = { -5.1, 5.1 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class ShortDot { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + + /* + // This would require MOA turrets + class CUP_optic_AN_PVS_4 : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -12, 50 }; + ACE_ScopeAdjust_Horizontal[] = { -20, 20 }; + ACE_ScopeAdjust_VerticalIncrement = 0.25; + ACE_ScopeAdjust_HorizontalIncrement = 0.25; + ACE_ScopeAdjust_Unit = "MOA"; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class ANPVS4 { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + */ + + class CUP_optic_PSO_1 : ItemCore { + ACE_ScopeAdjust_Vertical[] = { 0, 0 }; + ACE_ScopeAdjust_Horizontal[] = { -10, 10 }; + ACE_ScopeAdjust_VerticalIncrement = 0.0; + ACE_ScopeAdjust_HorizontalIncrement = 0.5; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class PSO { + discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; + discreteDistanceInitIndex=3; + }; + }; + }; + }; + class CUP_optic_PSO_3 : ItemCore { + ACE_ScopeAdjust_Vertical[] = { 0, 0 }; + ACE_ScopeAdjust_Horizontal[] = { -10, 10 }; + ACE_ScopeAdjust_VerticalIncrement = 0.0; + ACE_ScopeAdjust_HorizontalIncrement = 0.5; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class PSO { + discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; + discreteDistanceInitIndex=3; + }; + }; + }; + }; }; \ No newline at end of file From 75518af90f021b1bdb0dd9c821103adc4450ac1f Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 30 May 2015 21:52:57 +0200 Subject: [PATCH 136/252] Tabs -> Spaces --- optionals/compat_cup/CfgWeapons.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/optionals/compat_cup/CfgWeapons.hpp b/optionals/compat_cup/CfgWeapons.hpp index 4c62c0638a..ca8ca24827 100644 --- a/optionals/compat_cup/CfgWeapons.hpp +++ b/optionals/compat_cup/CfgWeapons.hpp @@ -476,8 +476,8 @@ class CfgWeapons class ItemInfo : InventoryOpticsItem_Base_F { class OpticsModes { class PSO { - discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; - discreteDistanceInitIndex=3; + discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; + discreteDistanceInitIndex=3; }; }; }; @@ -490,8 +490,8 @@ class CfgWeapons class ItemInfo : InventoryOpticsItem_Base_F { class OpticsModes { class PSO { - discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; - discreteDistanceInitIndex=3; + discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; + discreteDistanceInitIndex=3; }; }; }; From cb12146f4159f856f29cd263618e01a6cdf0897a Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 30 May 2015 21:53:28 +0200 Subject: [PATCH 137/252] Tabs -> Spaces --- optionals/compat_cup/CfgAmmo.hpp | 74 ++++++++++++++++---------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp index 7c37be48f8..a3cafcfbb0 100644 --- a/optionals/compat_cup/CfgAmmo.hpp +++ b/optionals/compat_cup/CfgAmmo.hpp @@ -1,9 +1,9 @@ class CfgAmmo { - class BulletBase; - class B_762x51_Ball; - class B_127x99_Ball; - class CUP_B_545x39_Ball: BulletBase { + class BulletBase; + class B_762x51_Ball; + class B_127x99_Ball; + class CUP_B_545x39_Ball: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.42792; @@ -14,8 +14,8 @@ class CfgAmmo ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball { + }; + class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -26,8 +26,8 @@ class CfgAmmo ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class CUP_B_545x39_Ball_Tracer_Red: BulletBase { + }; + class CUP_B_545x39_Ball_Tracer_Red: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -38,8 +38,8 @@ class CfgAmmo ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class CUP_B_545x39_Ball_Tracer_White: BulletBase { + }; + class CUP_B_545x39_Ball_Tracer_White: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -50,8 +50,8 @@ class CfgAmmo ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { + }; + class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -62,8 +62,8 @@ class CfgAmmo ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class CUP_B_762x39_Ball: BulletBase { + }; + class CUP_B_762x39_Ball: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.9704; @@ -74,8 +74,8 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class CUP_B_762x39_Ball_Tracer_Green: BulletBase { + }; + class CUP_B_762x39_Ball_Tracer_Green: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.5816; @@ -86,7 +86,7 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; + }; class B_762x39mm_KLT: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; @@ -159,7 +159,7 @@ class CfgAmmo ACE_muzzleVelocities[]={298, 330, 350}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; - class CUP_B_9x19_Ball: BulletBase { + class CUP_B_9x19_Ball: BulletBase { ACE_caliber=9.017; ACE_bulletLength=15.494; ACE_bulletMass=8.0352; @@ -170,8 +170,8 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; ACE_barrelLengths[]={101.6, 127.0, 228.6}; - }; - class CUP_B_762x51_noTracer: B_762x51_Ball { + }; + class CUP_B_762x51_noTracer: B_762x51_Ball { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -182,8 +182,8 @@ class CfgAmmo ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; - }; - class CUP_B_303_Ball: BulletBase { + }; + class CUP_B_303_Ball: BulletBase { ACE_caliber=7.899; ACE_bulletLength=31.166; ACE_bulletMass=11.2752; @@ -194,7 +194,7 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; ACE_barrelLengths[]={508.0, 609.6, 660.4}; - }; + }; class CUP_B_127x107_Ball_Green_Tracer: BulletBase { ACE_caliber=12.979; ACE_bulletLength=64.008; @@ -267,7 +267,7 @@ class CfgAmmo ACE_muzzleVelocities[]={680, 750, 798, 800}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_9x39_SP5: BulletBase { + class CUP_B_9x39_SP5: BulletBase { ACE_caliber=9.246; ACE_bulletLength=31.496; ACE_bulletMass=16.2; @@ -278,7 +278,7 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={280, 300, 320}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; + }; class CUP_B_762x51_Tracer_Green: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; @@ -327,7 +327,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; - class B_127x107_Ball: BulletBase { + class B_127x107_Ball: BulletBase { ACE_caliber=12.979; ACE_bulletLength=64.008; ACE_bulletMass=48.276; @@ -338,8 +338,8 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={820}; ACE_barrelLengths[]={728.98}; - }; - class CUP_B_9x18_SD: BulletBase { + }; + class CUP_B_9x18_SD: BulletBase { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -350,8 +350,8 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 340}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; - }; - class CUP_B_765x17_Ball: BulletBase { + }; + class CUP_B_765x17_Ball: BulletBase { ACE_caliber=7.938; ACE_bulletLength=15.494; ACE_bulletMass=4.212; @@ -362,8 +362,8 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; ACE_barrelLengths[]={101.6, 127.0, 228.6}; - }; - class CUP_B_145x115_AP_Green_Tracer: BulletBase { + }; + class CUP_B_145x115_AP_Green_Tracer: BulletBase { ACE_caliber=14.884; ACE_bulletLength=50.8; ACE_bulletMass=65.448; @@ -374,8 +374,8 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={1000}; ACE_barrelLengths[]={1346.2}; - }; - class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball { + }; + class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball { ACE_caliber=12.954; ACE_bulletLength=58.674; ACE_bulletMass=41.9256; @@ -386,8 +386,8 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={853}; ACE_barrelLengths[]={736.6}; - }; - class CUP_B_86x70_Ball_noTracer: BulletBase { + }; + class CUP_B_86x70_Ball_noTracer: BulletBase { ACE_caliber=8.585; ACE_bulletLength=43.18; ACE_bulletMass=19.44; @@ -398,5 +398,5 @@ class CfgAmmo ACE_dragModel=7; ACE_muzzleVelocities[]={820, 826, 830}; ACE_barrelLengths[]={609.6, 673.1, 711.2}; - }; + }; }; \ No newline at end of file From 038880cb017a82a85d495193d05f47b22e92e95d Mon Sep 17 00:00:00 2001 From: Macusercom Date: Sat, 30 May 2015 23:33:51 +0200 Subject: [PATCH 138/252] Additional Translations for German + some corrections --- addons/common/stringtable.xml | 1 + addons/explosives/stringtable.xml | 1 + addons/frag/stringtable.xml | 14 ++++++++++++-- addons/hearing/stringtable.xml | 1 + addons/interaction/stringtable.xml | 1 + addons/map/stringtable.xml | 3 +++ addons/missionmodules/stringtable.xml | 19 ++++++++++++++++++- addons/mk6mortar/stringtable.xml | 1 + addons/nametags/stringtable.xml | 1 + addons/optionsmenu/stringtable.xml | 1 + addons/respawn/stringtable.xml | 1 + 11 files changed, 41 insertions(+), 3 deletions(-) diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 6a1ff475a1..375bee12a7 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -478,6 +478,7 @@ Sprawdzaj spójność addonów z serwerem + Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien hat. Action diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 9e2c540d6f..4b01e29d7b 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -533,6 +533,7 @@ Moduł ten pozwala dostosować opcje związane z ładunkami wybuchowymi, ich podkładaniem oraz rozbrajaniem. + Dieses Modul erlaubt die Einstellungen für Sprengstoffe zu verändern. \ No newline at end of file diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index a3a91b92d9..4ea2b2c0a9 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -3,33 +3,43 @@ Fragmentation Simulation + Splittersimulation Enable the ACE Fragmentation Simulation + Aktiviere die ACE-Splittersimulation Spalling Simulation + Explosionssimulation Enable the ACE Spalling Simulation + Aktiviere ACE-Explosionssimulation Maximum Projectiles Tracked + Maximalzahl der verfolgten Projektile - This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once) + This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once) + Diese Einstellung steuert die maximale Anzahl an Projektilen, die das Splitter- und Explosionssystem gleichzeitig verfolgen wird. Wenn mehr Projektile abgefeuert werden, werden sie nicht verfolgt werden. Diese Einstellung zu verringern, kann FPS-Einbrüche bei Szenarien mit vielen Projektilen verhindern (>200 Objekte gleichzeitig in der Luft) Maximum Projectiles Per Frame + Maximale Anzahl an Projektilen pro Frame The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further. + Gibt die Anzahl der Explosionverfolgungsberechnungen an, die gleichzeitig ausgeführt werden. Das kann dabei helfen den FPS-Einfluss abzuschwächen, wenn Teile über mehrere Frames hinweg verfolgt werden. (SP Only) Frag/Spall Debug Tracing + (nur SP) Splitter-/Explosions-Debugging (SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only. + (nur SP) Benötigt einen Neustart der Mission/des Editors. Aktiviert das sichtbare Verfolgen der Splitter- und Explosionsteile im SP. - + \ No newline at end of file diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index e8bf6c4ab1..63c7ef7732 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -127,6 +127,7 @@ Głuchota bojowa pojawia się w momentach, kiedy stoimy w pobliżu broni wielkokalibrowej bez ochrony słuchu, lub np. podczas ostrzału artyleryjskiego. Moduł ten pozwala na włączenie lub wyłączenie tego efektu. + Dieses Modul aktiviert/deaktiviert die Taubheit im Gefecht. Wenn aktiviert, können Spieler ohne Gehörschutz taub werden, wenn eine Waffe in ihrer Nähe abgefeuert wird oder eine Explosion stattfindet. \ No newline at end of file diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 9c1fc6641f..34f7404342 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -811,6 +811,7 @@ Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn. + Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe. \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 1959297909..84d0a869a5 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -14,6 +14,7 @@ Calculate dynamic map illumination based on light conditions? Oblicza dynamiczne oświetlenie mapy bazujące na warunkach oświetleniowych + Berechne die Kartenauslichtung anhand des Umgebungslichts? Map shake? @@ -48,6 +49,7 @@ Moduł ten pozwala dostosować opcje widoku ekranu mapy. + Dieses Modul erweitert die Kartenfunktionen. Blue Force Tracking @@ -77,6 +79,7 @@ Pozwala śledzić na mapie pozycje sojuszniczych jednostek za pomocą markerów BFT. + Dieses Modul ermöglicht es verbündete Einheiten mit dem BFT auf der Karte zu verfolgen. \ No newline at end of file diff --git a/addons/missionmodules/stringtable.xml b/addons/missionmodules/stringtable.xml index 1532827378..021daf2547 100644 --- a/addons/missionmodules/stringtable.xml +++ b/addons/missionmodules/stringtable.xml @@ -1,73 +1,90 @@ - + ACE Mission Modules ACE Moduły misji + ACE-Missionsmodule Ambiance Sounds [ACE] Dźwięki [ACE] + Umgebungsgeräusche [ACE] Sounds Dźwięki + Sounds Class names of the ambiance sounds to be played. Seperated by ',' Class name-y dźwięków do odtwarzania. Oddzielone przy użyciu ',' + Klassennamen der Umgebungsgeräusche, die abgespielt werden sollen. Getrennt durch "," Minimal Distance Minimalny dystans + Mindestabstand Used for calculating a random position and sets the minimal distance between the players and the played sound file(s) Używany do obliczania losowej pozycji a także ustawia minimalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi + Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Mindestabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest Maximum Distance Maksymalny dystans + Maximalabstand Used for calculating a random position and sets the maximum distance between the players and the played sound file(s) Używany do obliczania losowej pozycji a także ustawia maksymalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi + Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Maximalabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest Minimal Delay Minimalne opóźnienie + Minimale Verzögerung Minimal delay between sounds played Minimalne opóźnienie pomiędzy odtwarzanymi dźwiękami + Minimale Verzögerung zwischen abzuspielenden Sounds Maximum Delay Maksymalne opóźnienie + Maximale Verzögerung Maximum delay between sounds played Maksymalne opóźnienie pomiędzy odtwarzanymi dźwiękami + Maximale Verzögerung zwischen abzuspielenden Sounds Follow Players Podążaj za graczami + Spielern folgen Follow players. If set to false, loop will play sounds only nearby logic position. Podążaj za graczami. Jeżeli ustawione na 'Nie', pętla będzie odtwarzana tylko w pobliżu pozycji logiki. + Spielern folgen. Wenn auf falsch gesetzt, werden Sounds nur in der Nähe des Logikmoduls abgespielt. Volume Głośność + Lautstärke The volume of the sounds played Głośność odtwarzanych dźwięków + Lautstärke der abzuspielenden Sounds Ambiance sounds loop (synced across MP) Pętla odtwarzania dzwięków (synchronizowana na MP) + Umgebungsgeräusch-Schleife (im MP synchronisiert) \ No newline at end of file diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index e83153c57a..92f5f1e6f5 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -87,6 +87,7 @@ Moduł ten pozwala dostosować ustawienia moździerza MK6. + Dieses Modul erlaubt das Einstellen des MK6-Mörsers. \ No newline at end of file diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 64dcd4c32b..3d23afa1b9 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -172,6 +172,7 @@ Moduł ten pozwala dostosować ustawienia i zasięg wyświetlania imion. + Dieses Modul erlaubt die Einstellungen der Anzeigenamen zu verändern. Disabled diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 4eb18dc46a..838d84abf7 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -259,6 +259,7 @@ When allowed, you have access to the settings modification and export in SP. Clicking export will place the formated config on your clipboard. Jeżeli ustawione na zezwól, wtedy będziesz mieć dostęp do ekranu modyfikacji wszystich ustawień i zmiennych ACE, a także będziesz mieć możliwość eksportu tychże ustawień do formatu rozpoznawalnego przez userconfig serwera. Kliknięcie opcji Eksportuj skopiuje wszystkie ustawienia do schowka. Działa tylko w trybie SP. + Wenn erlaubt, können die Einstellungsmodifikationen angezeigt und im SP exportiert werden. Wenn auf "Exportieren"geklickt wird, wird eine formatierte Config-Datei in der Zwischenablage abgespeichert. Hide diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index 28e9da73a1..6296f80574 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -173,6 +173,7 @@ Moduł ten pozwala dostosować ustawienia odrodzenia (respawnu). + Dieses Modul erlaubt es die Respawn-Einstellungen anzupassen. Friendly Fire Messages From 5d1f2eafaace015045038f93a1ec5630c5a2bd27 Mon Sep 17 00:00:00 2001 From: Macusercom Date: Sat, 30 May 2015 23:34:19 +0200 Subject: [PATCH 139/252] Fix German Translation --- addons/medical/stringtable.xml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 7384fea5ae..0926a89cf4 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -123,7 +123,7 @@ Apply Tourniquet - Druckverband anwenden + Tourniquet anwenden Aplicar torniquete Aplikovat škrtidlo Załóż stazę @@ -747,7 +747,7 @@ Tourniquet [CAT] - Druckverband [CAT] + Tourniquet [CAT] Жгут Torniquete [CAT] Tourniquet [CAT] @@ -2704,6 +2704,7 @@ ACE Medical ACE Opcje medyczne + ACE-Medicsystem Medical Settings [ACE] @@ -2718,6 +2719,7 @@ What is the medical simulation level? Jaki jest poziom symulacji medycznej? + Wie hoch soll das medizinische Simulationslevel sein? Basic @@ -2746,19 +2748,22 @@ Enable Litter Aktywuj odpadki - Abfall aktivieren + Abfälle aktivieren Enable litter being created upon treatment Twórz odpadki medyczne podczas leczenia + Aktiviere Abfälle, wenn eine Behandlung durchgeführt wurde Life time of litter objects Długość życia odpadków + Dauer des angezeigten Abfalls How long should litter objects stay? In seconds. -1 is forever. Ile czasu musi upłynąć, aby odpadki zaczęły znikać? W sekundach. -1 dla nieskończoności. + Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer. Enable Screams @@ -2778,6 +2783,7 @@ What is the damage a player can take before being killed? Jaki jest próg obrażeń, jakie gracz może otrzymać zanim zostanie zabity? + Wie viel Schaden kann ein Spieler erleiden, bevor er getötet wird? AI Damage @@ -2787,6 +2793,7 @@ What is the damage an AI can take before being killed? Jaki jest próg obrażeń, jakie AI może otrzymać zanim zostanie zabite? + Wie viel Schaden kann eine KI erleiden, bis sie getötet wird? AI Unconsciousness @@ -2936,6 +2943,7 @@ Locations PAK Ogr. apteczek osobistych + Orte für Erstehilfekasten Where can the personal aid kit be used? @@ -2990,6 +2998,7 @@ Locations Surgical kit (Adv) Ogr. zestawu chirurg. + Orte für Operationskästen (erweitert) Where can the Surgical kit be used? @@ -3064,6 +3073,7 @@ + Dieses Modul legt fest welche Einheit ein Sanitäter ist. None From a44546af837c7ca63da5039f20ae58a8831f75de Mon Sep 17 00:00:00 2001 From: Macusercom Date: Sat, 30 May 2015 23:38:08 +0200 Subject: [PATCH 140/252] Added my name to AUTHORS.txt --- AUTHORS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.txt b/AUTHORS.txt index e40b4c8ee6..1d902b8d56 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -62,6 +62,7 @@ Jonpas Kllrt Legolasindar "Viper" licht-im-Norden87 +Macusercom MarcBook meat Michail Nikolaev From 0b8896239c790701016bd3c66f6e22d9e3bc8bf8 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 31 May 2015 09:23:36 +0200 Subject: [PATCH 141/252] Progress bar stops on death - fix for #1449 --- addons/common/functions/fnc_progressBar.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_progressBar.sqf b/addons/common/functions/fnc_progressBar.sqf index d6518a9f10..adc1b8d4c3 100644 --- a/addons/common/functions/fnc_progressBar.sqf +++ b/addons/common/functions/fnc_progressBar.sqf @@ -60,7 +60,7 @@ _perFrameFunction = { if (isNull (uiNamespace getVariable [QGVAR(ctrlProgressBar), controlNull])) then { _errorCode = 1; } else { - if (ACE_player != _player) then { + if (ACE_player != _player || !alive _player) then { _errorCode = 2; } else { if (!([_args, _elapsedTime, _totalTime, _errorCode] call _condition)) then { From b8b980bd928e97eb94754f8077680675f19c7304 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 31 May 2015 14:21:25 +0200 Subject: [PATCH 142/252] Changed speed of sound to double --- extensions/advanced_ballistics/AdvancedBallistics.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/advanced_ballistics/AdvancedBallistics.cpp b/extensions/advanced_ballistics/AdvancedBallistics.cpp index 573ff186a4..8d990ec0d2 100644 --- a/extensions/advanced_ballistics/AdvancedBallistics.cpp +++ b/extensions/advanced_ballistics/AdvancedBallistics.cpp @@ -577,7 +577,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) positionOffset[0] += sin(bulletDir + M_PI / 2) * spinDriftPartial; positionOffset[1] += cos(bulletDir + M_PI / 2) * spinDriftPartial; - float speedOfSound = 331.3 + (0.6 * temperature); + double speedOfSound = 331.3 + (0.6 * temperature); if (bulletSpeed < (speedOfSound + 5) && bulletSpeedAvg > speedOfSound && bulletSpeed > (speedOfSound - 5)) { std::uniform_real_distribution distribution(0.0, 1.0); double coef = 1.0f - bulletDatabase[index].transonicStabilityCoef; From 43a2fed7c20f7961371a8b6ed2df729ed595d4d6 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 31 May 2015 14:22:00 +0200 Subject: [PATCH 143/252] New dll build for ab --- ace_advanced_ballistics.dll | Bin 623104 -> 207360 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ace_advanced_ballistics.dll b/ace_advanced_ballistics.dll index 0a14d846b55c43bf8051149a15484c5834464b7a..9d3708959ce7a8f0fb478fdcfab01c4284395771 100644 GIT binary patch delta 77355 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�p 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

- + BIF thread From 2cf951970281d3d046c0d961ccb79cc685462307 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 28 May 2015 04:33:13 -0500 Subject: [PATCH 081/252] Send to extension directly --- .../functions/fnc_debugDumpToClipboard.sqf | 38 ++++++++----------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf index 706e3e95e9..350ba2a05e 100644 --- a/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf +++ b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf @@ -15,42 +15,42 @@ */ #include "script_component.hpp" -private ["_outputString", "_var", "_unit", "_countSent"]; +private ["_var", "_unit"]; -#define CHARS_PER_EXT_CALL 2000 -#define MIN_ARRAY_SIZE 0 +#define MIN_ARRAY_SIZE 10 -_outputString = "---ACE Debug--- +"ace_clipboard" callExtension "---ACE Debug--- "; -_outputString = _outputString + format ["--Performance-- +"ace_clipboard" callExtension format ["--Performance-- diag_fps = %1 -count cba_common_perFrameHandlerArray = %2 -count diag_activeSQFScripts = %3 -count diag_activeSQSScripts = %4 -count diag_activeMissionFSMs = %5 +count ace_common_waitAndExecArray = %2 +count cba_common_perFrameHandlerArray = %3 (max %4) +count diag_activeSQFScripts = %5 +count diag_activeSQSScripts = %6 +count diag_activeMissionFSMs = %7 -", diag_fps, count cba_common_perFrameHandlerArray, count diag_activeSQFScripts, count diag_activeSQSScripts,count diag_activeMissionFSMs]; +", diag_fps, count ace_common_waitAndExecArray, {!isNil "_x"} count cba_common_perFrameHandlerArray, count cba_common_perFrameHandlerArray, count diag_activeSQFScripts, count diag_activeSQSScripts,count diag_activeMissionFSMs]; -_outputString = _outputString + "--Player-- +"ace_clipboard" callExtension "--Player-- "; if (isNull ACE_player) then { - _outputString = _outputString + "Null + "ace_clipboard" callExtension "Null "; } else { - _outputString = _outputString + format ["typeOf = %1 + "ace_clipboard" callExtension format ["typeOf = %1 animationState = %2 ", typeOf ace_player, animationState ace_player]; }; -_outputString = _outputString + format ["--Array Info (count >= %1)-- +"ace_clipboard" callExtension format ["--Array Info (count >= %1)-- ", MIN_ARRAY_SIZE]; { _var = missionNamespace getVariable [_x, nil]; if(!isnil "_var" && {(typeName _var) == "ARRAY"} && {(count _var) > MIN_ARRAY_SIZE}) then { - _outputString = _outputString + format["%1 - ARRAY SIZE: %2 + "ace_clipboard" callExtension format ["%1 - ARRAY SIZE: %2 ", _x, (count _var)]; }; } forEach (allVariables missionNamespace); @@ -60,16 +60,10 @@ _outputString = _outputString + format ["--Array Info (count >= %1)-- { _var = _unit getVariable [_x, nil]; if(!isnil "_var" && {(typeName _var) == "ARRAY"} && {(count _var) > MIN_ARRAY_SIZE}) then { - _outputString = _outputString + format["%1 on [%2] - ARRAY SIZE: %3 + "ace_clipboard" callExtension format ["%1 on [%2] - ARRAY SIZE: %3 ", _x, _unit, (count _var)]; }; } forEach (allVariables _unit); } forEach allUnits; -_countSent = 0; -while {_countSent < (count _outputString)} do { - "ace_clipboard" callExtension (_outputString select [_countSent, CHARS_PER_EXT_CALL]); - _countSent = _countSent + CHARS_PER_EXT_CALL; -}; - "ace_clipboard" callExtension "--COMPLETE--"; From 355f22351beae14263e500844020885e1dece0da Mon Sep 17 00:00:00 2001 From: Bracconiere Date: Thu, 28 May 2015 12:36:14 +0300 Subject: [PATCH 082/252] README_PL: Updated shields --- documentation/README_PL.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/documentation/README_PL.md b/documentation/README_PL.md index d156185908..fe3939504f 100644 --- a/documentation/README_PL.md +++ b/documentation/README_PL.md @@ -4,29 +4,30 @@